1.标识符:由字母和下划线和数字组成(不包括空格)组成,只能由字母和下划线开头 。例如: (4zy),(4wj),(4zwj),(4zy 4wj) 都是错误的 。
2.字符串常量所占的内存字节长度为字符中字节个数加1,因为字符串是以 结尾,这是字符串结束的标志。
3.运算符的优先级:!> 算术运算符>关系运算符>&&>||>赋值运算符。同时记住:取余运算符只能用于两整数运算。
4.&&与||运算符易错警示:表达式1&&表达式2,只有表达式1的值不为0,才会进行表达式2的运算。 表达式1||表达式2,只有表达式1的值为0,才会进行表达式2的运算,也就是说表达式1的值为1时,不进行表达式2的运算。例如:int a=4,b=5,c=3,d=6,m=1,n=1; (m=a>b)&&(n=c>d); 输出m和n,结果是m=0,n=1
5.逗号运算符和表达式是我们特别要注意的。表达式1,表达式2 先求表达式1,再求表达式2,但整个逗号表达式的值是表达式2的值。例如:int a=2; int c=(a*2,a+10),a*5; 输出a和c的值,a等于2,c等于10
6.强制类型转换格式:(类型)(表达式),只是创造一个中间类型转换,得到中间变量,强制转换后各自类型都不变。
7.三种基本程序语句:顺序结构、选择结构、循环结构。还有一些学校喜欢考这个,给大家混个眼熟。
8.选择语句,无非就是一些if 与else 的问题,比较简单,这里不进行赘述。还有一个switch语句,初学者容易把switch()括号里放入非整数,这是错误的,括号里面只能放整型变量,还有break一定记得加。给个例子,问题:输入年月,求该年月有多少天:
#includeint main() { int years,months,days,temp; printf("请输入年月日:"); scanf("%d %d",&years,&months); if(years%400==0) { temp=1; } if(years%4==0&&years%100!=0) //能被400整除或者能被4整除而且不能被100整除的是闰年 29天 { temp=1; } else temp=0; switch(months) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 2: { if(temp=1) days=29; else days=28; } break; case 4:days=30;break; case 6: case 9: case 11:days=30;break; default:printf("month input error n"); } printf("%d年%d月有%d天",years,months,days); return 0; }
9.循环语句分为四个语句,while与do while与 for,知道do while 与while 区别是前面的必须要执行一次就行 。for循环则应用比较广泛,就讲一点吧,那个括号里的第三个表达式,可以放到for循环语句内部,可以自己定义条件。曾经博主就遇到这样一道题。
10.函数来讲讲递归调用吧,递归嘛就是“有递有归”,就是有去有回的意思,数学模型是数学归纳法,找出问题相同的解法,不断直接或间接调用自己函数体本身,最后找到结束条件,在该条件下能够直接返回值的表达式
11. 函数问题我们还需要注意的就是传参问题,理解实参和形参,传数组和指针怎么去传,讲讲传数组和指针吧,下面给两个比较简单的例子吧。问题一,输入五个数,并进行排序。问题二,输入两个数并交换。
#includeusing namespace std; #define N 5 void sort(int arry[],int n) //这里用选择排序吧,接地气 { int temp; for(int i=0;i arry[j]) { temp=j; } } if(temp!=i) { int t=arry[temp]; arry[temp]=arry[i]; arry[i]=t; } } } int main() { int arry[N]; for(int i=0;i 12.对了,还有带参的宏定义。直接拿例子讲讲吧。针对此问题把式子列出来就行了,如下为sum=m+n+m+n*y,,搞定。
#includeusing namespace std; #define M(x) x+x int main() { int m=1,n=2,y=4; int sum=M(m+n)*y; cout< 13.到数组了,记得数组名是数组首地址, 再注意输入数据就行了。
int a[10]; scanf("%d",a); scanf("%d",&a[0]); //这两种方法等效 for(int i=0;i<10;i++) { scanf("%d",&a[i]); }14.字符串赋值,大家想想,为什么[]里的数字不同呢?大家可以在评论区讨论。
char ch[3]={'d','c','b'}; char cj[4]={"dcb"}; char ck[4]="dcb";
15.字符串输入,输出函数的使用,为什么要用这个呢?因为scanf遇到空格就会结束,所以可以使用他们来解决这个问题。
char ch[3]; gets(ch); puts(ch); char cg[3]="ab"; puts(cg);
16. 指针的话记得&与*的使用,来讲讲指针与数组
int arry[3]={2,3,4}; int *p=arry; for(int i=0;i<3;i++) { printf("%dn",arry[i]); printf("%dn",*(p+i)); //等价 }
17.讲下*p++与*(p++)是等价的,因为++与*的优先级相同,结合方向为自右向左。作用是:先得到p指向的变量的值,再使指针变量p的值加1。
18.指针与二维数组:
int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}; int (*p)[3]=a; int *q=a; //这两个应该怎么找a[1][[2] a[1][2]=*(*(p+1)+2); //因为指针变量p是指向具有3个int型元素的一维数组 a[1][2]=*(*(q+1*4)+2); //对比一下就很好理解啦 //公式: a[i][j]=*(*(p+i)+j); a[i][j]=*(*(q+i*4)+j);19.讲下字符指针和字符数组区别:前者可改变指向不同的字符串,后者是用来保存数据的。
20.字符数组和整型数组的赋值不能这样做:
char ch[5]; ch="abcde"; int a[5]; a[5]={1,2,3,4,5};暂且写到这里吧,后续会继续更新的。谢谢大家!



