好老师重庆市二级C语言基础知识点总结以及题目订正
第一章
1,函数是从主函数(main())开始执行,回到主函数(main())结束;
2,一个程序的编译是从第一个函数(语句)开始,到最后一个函数(语句)结束;
第二章
1,算法的特性:有穷性,确定性,有一个或者0个输入,有一个或者多个输出;有效性 2,算法(程序)的几个结构:选择结构,顺序结构,循环结构
第三章
1,int类型是2个字节,float是4个字节,dooble是8个字节
2,数据类型分为:基本类型(整型,实型,字符型,枚举型),指针类型,构造类型(结构体类型,数组类型,共用体类型),空类型 (空类型合法哦,不要忘记了这个特殊哦) 3,变量的地址是确定的,变量变的地方只是地址里面的值。
4,用户标志符,由数字,字母,下划线构成,第一个不能是数字,但是32个关键字除外。 5,注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768
6,长整形(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整形的3,如果是a=3L,那么就是长整形的3;当分别以%o,%ld,%x (8进制,长整形,16进制)输出的时候,结果没有前面的0,0X,和后面的L
例:int a=075,b=ox14;long int c=5L;
printf(“%o,%x,%ld”,a b c); 结果为(75,14,5)
7,当出现’\0’的什么时候为结束,什么时候为八进制的转义字符: 当’\0’后面有1-7之间的数字的时候为转义字符;其他的时候为字符串结束标志,注意转义字符有哪些(参考书p8)
这样一个例题 若 strlen(”abc\089”)=3 strlen(“abc\012”)=4
8,强制转换不会改变一个变量的值,只是改变其作用的那个表达式的值。
9,++,――,当++,——,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,――,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,――结合性是右结合,若i+++j等价于(i++)+j; 10,复合运算符要注意当等号后面接的是表达式的时候要把表达式看成一个整体即x *=y+8等价于x=x*(y+8),y+8是一个整体
第四章
1,格式输入和输出的时候,注意格式。要严格按照题目的格式进行操作。(在做题的时候尤其是读程序写结果的时候要细心哈!)
2,%d,%md,%m..nd, %e,以及相应的几种格式是什么意思,参考书p13
第五章
1,关系运算符,>,<,<=,>=,= =,!= ,==和!=优先级最低,主意=与==的区别:=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1.
2,逻辑运算符,&& ,||,!在这几个中优先级!> && > ||,优先级是体现在结合性上而不是运算的先后性上。例如
a=b=c=1;d=++a||++b&&++c在这个里面&&最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1
1有else的情况是: 3,if语句基本格式:○if(表达式)语句;else语句;(注意有分号哦),
2没有else的情况是:if(表达式)语句;当有多个if和else的时候if是与其后最近的没有○
配对的else结合;注意,当函数作为if里面的表达式的时候即if(printf(“*”))的时候,则是以函数的返回值判断if的真假,printf输出以1个字符则返回为1,所以这个if是真的; 4条件表达式,? : ;右结合性,是从右往左结合,即是以最后一个?开始结合,但是计算顺序仍然是从左到右(这个牵涉到++,--问题)(参考书p16)
5,switch语句,switch语句只有碰到break或者做到最后一个语句才结束,case和default语句都只是入口。(参考书p17页例子)
第六章
1,while语句基本格式是while(表达式)语句;注意在while()后面没有;号,当函数或者赋值表达式放在while的()中时与if的判断方法一样,时候函数的返回值或表达式值的逻辑值;
2,do{ }while();语句和while语句的区别在于前者先做后判断后者是先判断后做,这个知识点多参考书上(p18例题)和卷子上的题
3,for语句,例如:for(i=1;i<100;i++)
s=s+i;注意for括号的后面没有;号,
当有两个for语句即嵌套的for循环的时候 例如:
for(i=1;i<4;i++)
for(j=0;j<5;j++)
s=s+i ; 这个时候是先做i=0;然后判断i;然后做加粗的部分,
即是把加粗部分看成一个整体做完之后才会回到i++;所以s=s+i ;这个语句做了20次,(参考书p19例题)
4,总结if,for,whlie,后面如果没有{}的时候,即是只有一个简单的语句的时候,if,for,whlie的作用效力范围是到与之最近的分号结束;当有{ }的时候即是把{ }看成一个整体,控制范围是整个{ }里面的所有语句。
5,break是结束整个循环;contine结束本层循环;具体参考书(p19页例子这个很重要哦,一定要掌握)
第七章和第十章(重点哦!!!!!!)
1,维数的判断,当*,[]前面有int ,char,float等常见的类型名的时候表示是在定义,一个 * 或者[]表示升一维,当表达式前面没有int ,char,float的时候则是在引用(或称为使用)一个*或者[ ]表示降一维;
2,注意这样一些东西:int a[3][3],**p=a则, a[0]等价于*p表示的是这个2维数组的第一行或者说是这个2维数组的首元素的地址;a[i]等价与*(p+i)都表示是数组的第i行或者是第i行的首元素的地址;所以要引用这个a数组的元素应该用a[i][j]或者**p
3,对一个数组的输入输出总结
当数组是int(整形的时候)
一个有n个元素的1维数组:输入 for(i=0;i<n;i++)
scanf(“%d,&a[i]”);
输出 for(i=0;i<n;i++)
printf(“%d”,a[i]);注意int类型要以%d的格式
一个有n行m列的2维数组:输入:for(i=0;i<n;i++)(这里i控制行,j控制列) for(j=0;j<m;j++)
scanf(“%d”,&a[i][j]);
输入:for(i=0;i<n;i++)
for(j=0;j<m;j++)
printf(“%d”,a[i][j]);(注意在输入的时候才有&符号,输出的时候没有)
一个字符串数组即 char a[10];对这个的输入有两种方式
(1)for(i=0;i<n;i++)
scanf(“%c”,&a[i]);
(2)gets(a); scanf(“%s”,a)(注意这两种方式的括号里面的只能是一个数组名) 输出也对应有两种方式:(1),for(i=0;i<n;i++)
printf(“%c”, a[i]);
(2)puts(a);printf(“%s”,a);注意这两种方式的括号里面的只能是一个数组名;
4,对一个有n个元素的数组的遍历(既是说从第一个成员访问到最后一个成员)有以下两种方式:
1, for(i=0;i<n;i++) 2,for(i=0;a[i]!=’\0’;i++) a[i]; (都是指从a[0]访问到a[n-1]) a[i]; 参考书p31 5,对字符串的操作注意:sizeof是一个系统关键字,不是函数,求其后边的参数占用的内存空间,strlen 求字符串中有多少有效字符。
注意这个例题:char a[30]=“abc\0b”; sizeof(a)=30 ; sizeof(“abc\0b”)=6; strlen(a)=3 strlen(“abc\0b”)=3 ;
6, *p++ 表达式中p与++先结合,取完值之后地址指向下一个元素的地址;*++p则是直接输出第二个元素,指针输出完之后,也指向了下一个元素的地址
7,char a[10]; while(a[i])和while(a[i]!=‘\0’)都是表示当a数组不结束的情况下继续循环,一般就是指访问整个数组
8,自编函数实现求字符串的长度:
int fun(char *a) int fun(char *s)
{ int k; { char *p;
p=s
whlie(a[k]) whlie(*p)
k++; p++;
retrun(k-1); } retrun(p-s); }
第八章
1,分清形参和实参的区别:(1)形参是在定义或声明中,实参是在引用当中;当函数名前有int ,float, char等类型名时是定义或者声明,但是要排除省略类型名的情况;一般引用出现在主函数中,(2)形参是不确定的值,因此不能为常量,实参是确定的值所以可以为常量。
2,当实际参数是一个变量的时候,实参向形参传递值,只是个简单的值传递,不会改变实参的值;当是实参是地址传递的时候就要改变
例:(1),int sub(int x,int y)
{ int c=x;x=y;y=c;}
void main()
{ int a=3,b=2;sub(a,b);
printf(“%d,%d”,a,b);} 结果是 3,2
(2),int sub(int* x,int *y)
{int c=*x;*x=*y;*y=c;}
void main()
{int a=3,b=2;sub(&a,&b);
printf(“%d,%d”,a,b);} 结果是 2,3
3,局部变量和全局变量;注意分清各自的作用范围;参考书p64 第4题
4,注意形参和实参必须赋值兼容,也就是说形参和实参维数必须一样;注意区别viod和return;当主函数里面带参数的形式,main(int argc,char *argv[])中argc是表示参数的个数,argv这个数组储存的是具体的参数个数。例,
void main(int argc,char *argv[])
{ char **p ;
while(――argc)
{ *p=argv[argc];
puts(*p); }
} 若输入为 china Beijing flie 则结果为:flie Beijing ;
5,注意函数的调用以及静态变量;参考各次卷子中关于这个方面的题
第九和十一章
1,宏替换的时候只是简单的字符替换,不要加任何东西,宏名中不能包含空格;
例:#define xx(m) m*m
?? int i=5;
i=i+xx(4+5);
结果为 i=5+4+5*4+5=34;
2,宏替换是在预编译的时候进行,所以不占用程序运行时间;宏名是无类型的;
3,结构体变量的长度是各个成员长度的和;当结构体指针和数组的时候注意分清 . 和->的区别;参考书中p59第3题
4,共用体变量的长度是由成员中的最长的成员决定;
5,链表的题就掌握模拟考试题中的一道选择题就可以了;第十一章的其他内容,还是要去看书了解
第十二章和第十三章
1,位运算符有 | (或)即只要有一个1就是1, &(与)要全部为1才为1 ^(异或)要不相同才为1 ;注意的是当向左移动n位就是乘以2的n次方;向右移动n位就是除以2的n次方。
2,文件,c语言中可以认识两种文件存储类型(1),文本文件(2),二进制文件;
3,打开文件操作注意语句 if((fp=fopen(“文件名”,“r”))==NULL);当等于NULL的时候就不能打开;注意文件打开之后必须关闭,即是fclose(fp);这两个必然是成对出现; 4,文件在什么情况下结束(1),fp==EOF的时候结束fp!=EOF的时候不结束。
(2),当feof(fp)返回值为0时不结束,返回非零时就是结束;
5,注意背下书p139第2题,万一考到文件的编程一般就是这种题。一般填空就是上面的加粗部分。
6,w,r,a分别表示对文本文件的读,写,追加;fputs(ch,fp)指将ch变量输出到文件fp中;ch=fgets(fp)指的是从文件中得到一个字符赋给变量ch;fread或fwrite(buffer,size,num,fp)中,buffer指的是文件读出/写入的数据的地址,是一个数组名或者指针;size,指读出或者写入每个数的字节数;num指读出和写入多少个数;fp指文件指针。
好老师重庆市二级C语言基础知识点总结以及题目订正
第一章
1,函数是从主函数(main())开始执行,回到主函数(main())结束;
2,一个程序的编译是从第一个函数(语句)开始,到最后一个函数(语句)结束;
第二章
1,算法的特性:有穷性,确定性,有一个或者0个输入,有一个或者多个输出;有效性
2,算法(程序)的几个结构:选择结构,顺序结构,循环结构
第三章
1,int类型是2个字节,float是4个字节,dooble是8个字节
2,数据类型分为:基本类型(整型,实型,字符型,枚举型),指针类型,构造类型(结构体类型,数组类型,共用体类型),空类型(空类型合法哦,不要忘记了这个特殊哦)
3,变量的地址是确定的,变量变的地方只是地址里面的值。
4,用户标志符,由数字,字母,下划线构成,第一个不能是数字,但是32个关键字除外。
5,注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768
6,长整形(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整形的3,如果是a=3L,那么就是长整形的3;当分别以%o,%ld,%x (8进制,长整形,16进制)输出的时候,结果没有前面的0,0X,和后面的L
例:int a=075,b=ox14;long int c=5L;
printf(“%o,%x,%ld”,a b c); 结果为(75,14,5)
7,当出现’\0’的什么时候为结束,什么时候为八进制的转义字符:当’\0’后面有1-7之间的数字的时候为转义字符;其他的时候为字符串结束标志,注意转义字符有哪些(参考书p8)
这样一个例题 若 strlen(”abc\089”)=3 strlen(“abc\012”)=4
8,强制转换不会改变一个变量的值,只是改变其作用的那个表达式的值。
9,++,――,当++,——,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,――,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,――结合性是右结合,若i+++j等价于(i++)+j;
10,复合运算符要注意当等号后面接的是表达式的时候要把表达式看成一个整体即x *=y+8等价于x=x*(y+8),y+8是一个整体
第四章
1,格式输入和输出的时候,注意格式。要严格按照题目的格式进行操作。(在做题的时候尤其是读程序写结果的时候要细心哈!)
2,%d,%md,%m..nd, %e,以及相应的几种格式是什么意思,参考书p13
第五章
1,关系运算符,>,<,<=,>=,= =,!= ,==和!=优先级最低,主意=与==的区别:=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1.
2,逻辑运算符,&& ,||,!在这几个中优先级!> && > ||,优先级是体现在结合性上而不是运算的先后性上。例如
a=b=c=1;d=++a||++b&&++c在这个里面&&最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1
3,if语句基本格式:1有else的情况是:if(表达式)语句;else语句;(注意有分号哦),2没有else的情况是:if(表达式)语句;当有多个if和else的时候if是与其后最近的没有配对的else结合;注意,当函数作为if里面的表达式的时候即if(printf(“*”))的时候,则是以函数的返回值判断if的真假,printf输出以1个字符则返回为1,所以这个if是真的;
4条件表达式,? : ;右结合性,是从右往左结合,即是以最后一个?开始结合,但是计算顺序仍然是从左到右(这个牵涉到++,--问题)(参考书p16)
5,switch语句,switch语句只有碰到break或者做到最后一个语句才结束,case和default语句都只是入口。(参考书p17页例子)
第六章
1,while语句基本格式是while(表达式)语句;注意在while()后面没有;号,当函数或者赋值表达式放在while的()中时与if的判断方法一样,时候函数的返回值或表达式值的逻辑值;
2,do{ }while();语句和while语句的区别在于前者先做后判断后者是先判断后做,这个知识点多参考书上(p18例题)和卷子上的题
3,for语句,例如:for(i=1;i<100;i++)
s=s+i;注意for括号的后面没有;号,
当有两个for语句即嵌套的for循环的时候 例如:
for(i=1;i<4;i++)
for(j=0;j<5;j++)
s=s+i ; 这个时候是先做i=0;然后判断i;然后做加粗的部分,即是把加粗部分看成一个整体做完之后才会回到i++;所以s=s+i ;这个语句做了20次,(参考书p19例题)
4,总结if,for,whlie,后面如果没有{}的时候,即是只有一个简单的语句的时候,if,for,whlie的作用效力范围是到与之最近的分号结束;当有{ }的时候即是把{ }看成一个整体,控制范围是整个{ }里面的所有语句。
5,break是结束整个循环;contine结束本层循环;具体参考书(p19页例子这个很重要哦,一定要掌握)
第七章和第十章(重点哦!!!!!!)
1,维数的判断,当*,[]前面有int ,char,float等常见的类型名的时候表示是在定义,一个 * 或者[]表示升一维,当表达式前面没有int ,char,float的时候则是在引用(或称为使用)一个*或者[ ]表示降一维;
2,注意这样一些东西:int a[3][3],**p=a则, a[0]等价于*p表示的是这个2维数组的第一行或者说是这个2维数组的首元素的地址;a[i]等价与*(p+i)都表示是数组的第i行或者是第i行的首元素的地址;所以要引用这个a数组的元素应该用a[i][j]或者**p
3,对一个数组的输入输出总结
当数组是int(整形的时候)
一个有n个元素的1维数组:输入 for(i=0;i<n;i++)
scanf(“%d,&a[i]”);
输出 for(i=0;i<n;i++)
printf(“%d”,a[i]);注意int类型要以%d的格式
一个有n行m列的2维数组:输入:for(i=0;i<n;i++)(这里i控制行,j控制列)
for(j=0;j<m;j++)
scanf(“%d”,&a[i][j]);
输入:for(i=0;i<n;i++)
for(j=0;j<m;j++)
printf(“%d”,a[i][j]);(注意在输入的时候才有&符号,输出的时候没有)
一个字符串数组即 char a[10];对这个的输入有两种方式
(1)for(i=0;i<n;i++)
scanf(“%c”,&a[i]);
(2)gets(a); scanf(“%s”,a)(注意这两种方式的括号里面的只能是一个数组名)
输出也对应有两种方式:(1),for(i=0;i<n;i++)
printf(“%c”, a[i]);
(2)puts(a);printf(“%s”,a);注意这两种方式的括号里面的只能是一个数组名;
4,对一个有n个元素的数组的遍历(既是说从第一个成员访问到最后一个成员)有以下两种方式:
1, for(i=0;i<n;i++) 2,for(i=0;a[i]!=’\0’;i++)
a[i]; (都是指从a[0]访问到a[n-1]) a[i]; 参考书p31
5,对字符串的操作注意:sizeof是一个系统关键字,不是函数,求其后边的参数占用的内存空间,strlen 求字符串中有多少有效字符。
注意这个例题:char a[30]=“abc\0b”; sizeof(a)=30 ; sizeof(“abc\0b”)=6;
strlen(a)=3 strlen(“abc\0b”)=3 ;
6,*p++ 表达式中p与++先结合,取完值之后地址指向下一个元素的地址;*++p则是直接输出第二个元素,指针输出完之后,也指向了下一个元素的地址
7,char a[10]; while(a[i])和while(a[i]!=‘\0’)都是表示当a数组不结束的情况下继续循环,一般就是指访问整个数组
8,自编函数实现求字符串的长度:
int fun(char *a) int fun(char *s)
{ int k; { char *p;
p=s
whlie(a[k]) whlie(*p)
k++; p++;
retrun(k-1); } retrun(p-s); }
第八章
1,分清形参和实参的区别:(1)形参是在定义或声明中,实参是在引用当中;当函数名前有int ,float, char等类型名时是定义或者声明,但是要排除省略类型名的情况;一般引用出现在主函数中,(2)形参是不确定的值,因此不能为常量,实参是确定的值所以可以为常量。
2,当实际参数是一个变量的时候,实参向形参传递值,只是个简单的值传递,不会改变实参的值;当是实参是地址传递的时候就要改变
例:(1),int sub(int x,int y)
{ int c=x;x=y;y=c;}
void main()
{ int a=3,b=2;sub(a,b);
printf(“%d,%d”,a,b);} 结果是 3,2
(2),int sub(int* x,int *y)
{int c=*x;*x=*y;*y=c;}
void main()
{int a=3,b=2;sub(&a,&b);
printf(“%d,%d”,a,b);} 结果是 2,3
3,局部变量和全局变量;注意分清各自的作用范围;参考书p64 第4题
4,注意形参和实参必须赋值兼容,也就是说形参和实参维数必须一样;注意区别viod和return;当主函数里面带参数的形式,main(int argc,char *argv[])中argc是表示参数的个数,argv这个数组储存的是具体的参数个数。例,
void main(int argc,char *argv[])
{ char **p ;
while(――argc)
{ *p=argv[argc];
puts(*p); }
} 若输入为 china Beijing flie 则结果为:flie Beijing ;
5,注意函数的调用以及静态变量;参考各次卷子中关于这个方面的题
第九和十一章
1,宏替换的时候只是简单的字符替换,不要加任何东西,宏名中不能包含空格;
例:#define xx(m) m*m
…… int i=5;
i=i+xx(4+5);
结果为 i=5+4+5*4+5=34;
2,宏替换是在预编译的时候进行,所以不占用程序运行时间;宏名是无类型的;
3,结构体变量的长度是各个成员长度的和;当结构体指针和数组的时候注意分清 . 和->的区别;参考书中p59第3题
4,共用体变量的长度是由成员中的最长的成员决定;
5,链表的题就掌握模拟考试题中的一道选择题就可以了;第十一章的其他内容,还是要去看书了解
第十二章和第十三章
1,位运算符有 | (或)即只要有一个1就是1, &(与)要全部为1才为1 ^(异或)要不相同才为1 ;注意的是当向左移动n位就是乘以2的n次方;向右移动n位就是除以2的n次方。
2,文件,c语言中可以认识两种文件存储类型(1),文本文件(2),二进制文件;
3,打开文件操作注意语句 if((fp=fopen(“文件名”,“r”))==NULL);当等于NULL的时候就不能打开;注意文件打开之后必须关闭,即是fclose(fp);这两个必然是成对出现;
4,文件在什么情况下结束(1),fp==EOF的时候结束fp!=EOF的时候不结束。
(2),当feof(fp)返回值为0时不结束,返回非零时就是结束;
5,注意背下书p139第2题,万一考到文件的编程一般就是这种题。一般填空就是上面的加粗部分。
6,w,r,a分别表示对文本文件的读,写,追加;fputs(ch,fp)指将ch变量输出到文件fp中;ch=fgets(fp)指的是从文件中得到一个字符赋给变量ch;fread或fwrite(buffer,size,num,fp)中,buffer指的是文件读出/写入的数据的地址,是一个数组名或者指针;size,指读出或者写入每个数的字节数;num指读出和写入多少个数;fp指文件指针。
重庆市二级C语言基础知识点总结第一部分C语言基础知识C程序的基本结构11一个C程序由一个或者多个函数构成有且仅有一个主函数main…
C语言知识点总结C语言知识点总结1一常量2二标识符2三变量2四表达式3五输入输出函数4六C语言的语句5七C程序的基本结构5八选择结…
C语言基础知识要点C语言知识要点复习资料总体上必须清楚的1程序结构是三种分支结构2读程序都要从main入口然后从最上面顺序往下读碰…
C语言基础知识总结主要内容1C数据类型2简单的算术运算和表达式3键盘输入和屏幕输出4选择控制结构总结风格分条罗列主要是知识点有例题…
C语言最重要的知识点总体上必须清楚的1程序结构是三种顺序结构选择结构分支结构循环结构2读程序都要从main入口然后从最上面顺序往下…
浮点数floatx=123.45e-2F;//x的值为1.2345123.45e-2默认为double型3、常量整数是以补码的形式…
好老师重庆市二级C语言基础知识点总结以及题目订正第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;…
学习C语言的准备知识3)计算机的数据在电脑中保存是以二进制的形式存入,数据存放的位置就是它的地址。4)bit位是指为0或者1。by…
总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)读程序都要从main(…
二级C语言基础知识点总结第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;2,一个程序的编译是从第…
初中化学知识点总结:金属金属分为纯金属和合金两类,金属材料分为黑色和有色两类。需要强调的是并不是所有的金属都是银白色的,如铜呈紫红…