首页 > 编程语言 >大一上学期程序设计笔记_C++

大一上学期程序设计笔记_C++

时间:2023-10-13 22:45:05浏览次数:43  
标签:变量 double C++ 学期 char 大一上 数组 表达式 函数

  • 罕见的数据类型

枚举类型    enum 枚举类型名T {Sunday=1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

            枚举类型名T   变量表

枚举类型只能进行赋值和比较运算。不能把整数赋给枚举型变量。枚举内部的元素会从0开始连续编码。

类型别名:

typedef int INTEGER;

 

字符型实例:

char ch = ‘M’;
int i = ch;
cout << “THe ASCII code for” << ch << “is” << i;
ch = ch + 1;   //发生两次(?)自动类型转换

了解变量占用多少字节:sizeof(float)

 

#include <cstdlib>  //C standard library
#include <ctime>
srand(time(NULL));  //随机种子初始化
rand();    //生成0~RAND_MAX(32767)之间。若想生成0~a-1之间的a个数:
rand()*a/(RAND_MAX + 1);

rand() % a

 

  • //不够两位前面补0
#include<iomanip>
cout << set(2)<< setfill('0')<< a << endl;

 

  • //四舍五入保留i位小数
#include <iomanip>
double result;
cout << fixed << setprecision(i) << result << endl;   //如果不加fixed, 则表示保留几位有效数字

 

  • //除法运算,运算数为整型则结果为整型,若想输出实型:

3/4.0 或强制类型转换

  • //强制类型转换
double(p)

静态类型转换:

char ch;
int d = 10;
ch = static_cast <char>(d);

 

  • //定义符号常量  编译方式:直接替换
#define 符号常量 值

const 类型 符号常量=值

 

//水平移动到下一个区域  ‘\t’    制表符

 

  • //位运算

数据类型:整型/字符型。

&按位与:相当于且,两个都为1时为1.(用途:利用0&x=0,将数值中的某些位清零;利用1&x=x,检验数值中某些位的值。如,想保存奇数位,可以将这个数与0x5555按位与运算。)

|按位或:相当于或,两个二进制位都为0时结果为0.(用途:将某一位设成1用1|x;保留某一位的值用0|x。)

^按位异或:相同为0,否则为1.(用途:x^=1是x取反, x^=0是x的值;交换a, b 的值:a=a^b; b=b^a; a=a^b;)

~取反运算:注意32767取反之后是32768.用法:~x.

<<左移,二进制下往左移几位,后面补0,作用一次相当于原数*2

>>右移,作用一次相当于原数/2

 

  • // 见P29函数

x的y次方pow(double x, double y)  //注意是实型

绝对值函数int abs(int x)

double fabs(double x)

开方double sqrt(double x)

e^x  double exp(double x)

ln x  double log(double x)

lg x  double log10(double x)

 

  • //复合赋值运算符

x += 1  //是右结合的,右边是算数表达式可以不加括号

 

  • //自增自减作为子表达式
x = 1;
y = ++x ;    //x = y = 2 先加再参与运算
y = x++ ;    //x = 1, y = 2 先运算再加

 

//单引号字符 双引号字符串

//逻辑运算的结果是True/False,只有发生了自动类型转换才变成0/1

逻辑运算里的字符串,只有当字符串为空时是false。

  • //优先级:算数表达式(++ > +)  > 关系表达式(先< 、>再==)  > 赋值表达式    

 ! (结果一定是0或1)  > 关系运算符 >  &&  >  ||

 

  • // 短路求值:一旦能确定逻辑表达式的真假,就不继续执行下去了,右运算只有在左边满足某个条件时才执行.

 

  • //if语句:1.条件可以是算数表达式、赋值表达式、变量。值为0时false,否则true

       2.条件后面不能加 “;” 否则认为语句结束了

       3.{别忘多个子句时用花括号括起来,否则else找不到if}

        4.一个if和else算一个语句,不用花括号括也行

        5.if-if语句是相互独立的,两个都要执行,除非第一个if后return。If-else语句是互斥的,if满足的话就直接跳过else部分

 

  • //条件表达式 ? 表达式1 : 表达式2   三目运算符
cout << (flag ?  “true” : “false”) << endl;

 

  • //多分支switch语句+break   注意常量表达式里不能有变量
switch (控制表达式)   //控制表达式必须为整型,包括字符型和枚举型{
case 常量表达式1 : 语句1 ; break ; //在其后加上break 跳出整个语句,否则继续向下 case 常量表达式2 : 语句2 ; //case后面可以跟复合语句,不需要{ } ...... case 常量表达式n : 语句n ; //多个表达式对应一个输出时,前面几个可以是空语句 default :语句n+1 ; //可以省略 }

 

 

 

 

  • //break & continue

break 可用于while, for, do-while, switch

区分:continue是跳出当前循环周期,回到循环控制行。只能用于循环语句

 

  • //for语句  for( ; ; )

1.循环控制行定义的变量在循环结束后就没了,不能再用了

2.i++ 不能有空格

3.不能省略分号

4.注意循环体对循环控制行的改变

5.有的题会规定不能使用循环,注意前一项能否推出后一项

6.注意边界、间隔

 

 

  • //while 哨兵格式:
读入一个值;

while(读入值 != 标志值) {

执行语句;

再读入一个值; }

 

  • //do-while:
do {
...
   } while ( );    //别忘了分号

 

  • //goto语句
goto 标号;

 

  • //一维数组

1.定义:

double doubleArray1[10], doubleArray2[5];

2.元素个数不能是变量,可以是常量。

3.如果不对数组赋初值,则数值是随机的。

4.数组的初始化:

int a[10] = {0,1,2,3,4,5,6,7,8,9};
int a[10] = {0,1,2,3};//后四个元素为0
int a[ ] = {0,1,2,3};//数组的规模是4
Int a[ 10] = {0};//数组全为0

5.下标变量:下标从0开始。a[0], a[1], a[2]......下标不能是double

6.C++只保存整个数组的起始地址,不检查下标的合法性。注意避免下标越界。

7.查找:顺序查找。for循环,注意中间的语句可以为逻辑表达式。平均时间性能:(n+1)/2

     二分查找。对于有序数组。变量lh, rh, mid.最坏的情况要找lb n次

8.排序:直接选择排序。时间复杂性O(n^2)

    冒泡排序。比较相邻两个。理论上排序n个元素需要n-1趟起泡,但实际可能中间就排好了。注意定义一个bool看是不是冒泡结束

9.数组名是一个常量,不能放在赋值左边

10.if(a[index] > a[index++]) 错在:index自增了,而且比较了两个相等的值(先取值再自增)

11.探测数组长度:sizeof或者strlen(数组名)

12.构建不定长度的数组:std::vector / 指针 动态数组

 

  • //二维数组
  1. 对每一行的部分元素赋初值:用花括号
  2. 引用一个值:a[i][j], 引用一行:a[i]
  3. 将矩阵看成回绕的,则下一行的位置:(row+1)%N, 上一行的位置:(row-1+N)%N.

 

  • //字符串
  1. 数组长度是字符个数+1
  2. 空字符串“”占一个字节 ‘\0’
  3. ‘a’表示字符常量,占一字节,里面存储a的内码。“a”表示字符串,占两字节,第一字节里是a的内码,第二字节里是‘\0’
  4. char ch[]= “Hello, world”;(会补\0)或 char ch[]={“Hello, world”};(会补\0)或 char ch[]={‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘,’, ‘w’, ‘o’, ‘r’, ‘l’, ‘d’};(不会补\0)
  5. >> << 可以直接输入输出,直到遇见一个\0
  6. 用cin >>时不能输入空白字符。(是以空格、回车、tab为结束符)也无法控制输入的字符串长度,有可能内存溢出
  7. 用cin.getline(字符数组名, 数组长度, ‘.’)  //结束标记也可以不指定,此时以回车作为结束
  8. cstring 函数:
  9. 字符串的比较:逐个比较内码值,直到出现不同字符或一个出现 ‘\0’。(不能直接char a[] > b[],可以用string a和b比大小。或者用函数)。比较原则是字典序.
  10. 定义char数组时赋初值为 ‘\0’,否则可能打印出乱码
  11. 字符串
char str[] = { "abcd" };sizeof(str) = 5;strlen(str) = 4

char *str = {"abcd"};sizeof(str) = 4//(或者8)
strlen = 4

strlen求字符串的实际长度,不包括结束符。以\0为结束。

sizeof是求数组的分配大小。

 

12.string和char区别

赋值:已经定义的char数组,不可以通过ch1=ch2进行赋值,而应当使用strcpy(ch1[], ch2[]);表示将ch4赋给ch3.而string类型字符串则无此要求

合并:char[] 需要通过strcat函数实现,而string则可以通过“+”,简单实现
长度:char[]使用函数strlen获取字符串长度,string使用.size或.length获取,也可以先转换为char[]再获取长度

 具体请见:

https://blog.csdn.net/gyxx1998/article/details/103038516?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166765053816782390589304%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166765053816782390589304&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103038516-null-null.142^v63^control,201^v3^control_1,213^v1^t3_control2&utm_term=char%E5%92%8Cstring%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

 

13.字符串会自动在末尾加上\0,因此长度自动加1,不能把 “LOVE”赋给一个长度为4的字符数组。字符数组最后一位不强制要求是\0,但是如果最后一位不是\0,没法用strlen函数。

 

 

  • //函数

1.函数的定义:返回类型名 函数名 (形式参数表){     }

2.函数原型声明:返回类型 函数名 (形式参数说明);// ()内也可以写参数名,如(int numOfStar)

3.函数的调用:函数名 (实际参数表) ;//应避免写出与实际参数计算次序有关的调用

4.没有返回值的函数 用void

5.变量的作用域:无论何时一个函数被调用,它定义的变量都创建在一个称为栈的独立内存区域。调用函数相当于从栈中分配新的一个帧,给其中的变量分配内存空间。这个帧在其它活动函数的帧上面。函数执行结束之后回收帧。

 

局部变量:函数内部定义的变量,包括形式参数,其他函数不能引用。

全局变量:作用域是源文件中定义它的位置后的剩余部分。

当全局变量与局部变量同名时,在局部变量的作用域中全局变量被屏蔽。如果的确要引用全局变量,用作用域运算符 “::”

 

变量的存储类别:按变量在计算机内的存储位置(也称存储类别)来分,变量又分为自动变量(auto),静态变量(static),寄存器变量(register)和外部变量(extern)。变量定义格式:存储类别 数据类型 变量名表;

auto:如不专门说明。存储在栈中.

static:

register:变量不是存储在内存中,而是存储在CPU寄存器中。只有局部自动变量可以定义为寄存器变量,全局变量和静态的局部变量是不能存储在寄存器中的

extern:一定是全局变量。全局变量的作用域是从变量定义处到文件结束。如果在定义点以前的函数或另一源文件中的函数也要使用该全局变量,则在引用之前对此外部变量用关键字extern进行外部变量声明

 

数组作为函数的参数:

  1. 在函数中并没有定义新的数组(实际参数和形式参数的数组具有相同的地址)
  2. 对形式参数指定规模是没有意义的
  3. 形式参数数组不需要指定大小,[ ]内为空
  4. 函数如何知道数组的规模?用另一个整型参数表示
  5. 总结:数组传递需要两个参数,数组名和数组规模

 

 

 

标签:变量,double,C++,学期,char,大一上,数组,表达式,函数
From: https://www.cnblogs.com/YingJunShang/p/17763401.html

相关文章

  • C++大整数类
    用法把头文件和源代码文件放在同一目录下,然后#include"INT"即可使用。你能对int类的变量进行a=2,a+=3,a%8,a--等等操作,那你就也能对INT进行。INT基于vector,可以实现存储任意大的整数,且利用动态内存机制不会多浪费一点空间类声明classINT{ public: INT(); template<class......
  • 「闲话随笔」 C++ namespace K8He-Math version -1.0.0 is officially released!
    C++namespaceK8He-Mathversion-1.0.0isofficiallyreleased!写着玩的,不清楚是否有实用价值,看个乐就行,别D.有Bug可以自己调(怎么用感觉比较好看出来.namespaceMATH{ namespaceType{ usingi32=int; usingi64=longlong; usingu32=std::uint32_t;......
  • 5381: C++实验:STL之search
    描述  使用STL中的search函数,判断一个序列是否是另一个序列的子序列。部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。  C++intmain(){vector<int>vec1,vec2;intn,m,a;cin>>n>>m;while(n--){cin>>a;......
  • 5383: C++实验:STL之multimap
    描述  使用STL中的multimap记录用户的所有电话号码,yuyu想查询用户有多少个电话号码,crq则想查询时输出所有的号码。部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 C++intmain(){ multimap<string,string>sm; stringname,phone; intn; cin>>......
  • c++工厂模式和抽象工厂模式的区别是什么
    C++中的工厂模式和抽象工厂模式都是为了实现对象的创建和实例化,但它们在设计和使用方式上有一些区别。工厂模式(FactoryPattern):工厂模式通过一个工厂类来封装对象的创建逻辑,并将具体对象的创建细节隐藏起来。客户端只需通过工厂类调用相应的方法来获取所需的对象实例。工厂模式......
  • 简单工厂模式--Java实现+C++实现
    问题描述使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。问题实现用starUML画的相应的类图:然后就是代码实现:Java代码实现在Java里面,Person类相......
  • c++识别不到cout标识符
    问题描述时隔好久,再次使用c++编写程序时,就出现了这个问题,对以前的我来说这就是小case,但是现在就需要查资料了;问题解决文件里面少了这个头文件:#include<iostream>usingnamespacestd;即可解决!......
  • C++不常见语法分析总结
    成员初始化列表用于在构造对象时给类或者结构体成员设置初值。语法为:构造函数():成员1(参数值1),成员2(参数值2)...{}成员初始化列表的作用和优点:可以为非静态数据成员赋予初始值初始化顺序与成员在类中的定义顺序一致效率比在构造函数体内赋值初始化高可以为只......
  • C++ - 异常处理
    C++ 异常处理异常是程序在执行期间产生的问题。C++异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字......
  • [c++_1]C++ 子类初始化父类成员
    我们知道,构造方法是用来初始化类对象的。如果在类中没有显式地声明构造函数,那么编译器会自动创建一个默认的构造函数;并且这个默认的构造函数仅仅在没有显式地声明构造函数的情况下才会被创建。构造函数与父类的其它成员(成员变量和成员方法)不同,它不能被子类继承。因此,在创建子类......