C语言各章重点知识总结
第一章C语言概述
1、C程序的组成和形式的基本特点(P6-7)
(1)C程序是由函数构成的,一个C源程序至少且仅包含一个main函数,也可以包含一个main函数和若干个其他函数。
(2)一个函数由两部分组成
①函数的首部:即函数的第一行,包括函数名、函数类型、函数属性、函数参
数名、参数类型
例:int max (int x,int y)
一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。函数可以没有参数,如main()。
②函数体:即函数首部下面的花括号内的部分。如果一个函数内有多个花括号,
则最外层的一对花括号为函数体的范围。函数体一般包括:声明部分、执行部分
2、运行C程序的步骤及每个步骤生成文件的类型及特点(P7)
第二章算法
1、算法的定义
一个程序应包括①数据结构即对数据的描述;②算法也就是操作步骤。
计算机算法可分为两大类:数值运算算法和非数值运算算法。
2、算法的特性(P19)
1.有穷性;
2.确定性;
3.有零个或多个输入;
4.有一个或多个输出;
5.有效性。
3、描述算法的常用方法(P20-33)
1.自然语言;
2.用流程图表示算法。
3.N—S图
4.计算机语言
5.伪代码
4、C程序算法的3种基本结构及其共同特点(P24-25)
三种基本结构:
1.顺序结构:最基本;
2.选择结构:又称选取结构或分支结构;
3.循环结构:又称重复结构;
①当(while)型循环;
②直到(until)型循环。
共同特点:
1. 只有一个入口;
2. 只有一个出口;
3. 结构内的每一部分都有机会被执行到;
4. 结构内不存在“死循环”。
5、结构化程序设计的设计原则(P34)
1.自顶向下;
2.逐步细化;
3.模块化设计;
4.结构化编码。
第三章数据类型、运算符与表达式
1、C语言的基本数据类型和构造数据类型(P37)
在程序中对用到所有数据都必须制定其数据类型。数据有常量和变量之分,它们分别属于以上这些类型。
2、字面常量和符号常量(P37-38)
在程序运行过程中,其值不能被改变的量称为常量,常量区分为整型常量和实型常量,常量一般从其字面形式即可判别,这种常量称为字面常量或者直接常量。用一个标识符代表一个常量的符号,称为符号常量,即以标识符形式出现的常量(常量的表示用大写字母,变量的表示用小写字母),符号常量与变量不同,符号常量的值在其作用域内部能改变,也不能再被赋值,如果再用赋值语句给符号常量赋值是错误的。使用符号常量的好处:1.含义清楚2.在需要改变一个常量时能做到“一改全改”
3、标识符的命名规则(P39-40)
C语言规定标识符只能有字母、数字和下划线3中字符组成,且第一个字符必须为字母或下划线,合法的标识符可以作为变量名。编译系统将大写字母和小写字母认为是两个不同的字符。变量名的长度最好不要超过8个字符。在C语言中,要求对所有用到的变量做墙纸定义,也就是“先定义,后使用”,1.凡未被事先定义的,系统不把它认作变量名,这就能保证程序中变量名使用得正确。2.每一个变量被指定为一个确定类型,在编译时就能为其分配响应的存储单元。3.指定
每一变量数以一个类型,这就便于在编译时据此检查在程序中要求对该变量进行
4、整型常量的3种表示方式、整型变量的分类及其定义方式、整型常量的类型(P41-44)
整型常量即整常数的3种表示方式:
1.十进制整数;
2.八进制整数(以0开头);
基本整型int、短整型short int/short、长整型long int/long在实际应用中,变量的值常常是正的,为充分利用变量的值的范围,可以将变量定义为“无符号/unsigned”类型,以指定是“无符号数”,或者为“有符号/signed”。如果前无符号,默认为有符号(signed)
归纳起来,可以用一下六种整形变量:
1.有符号基本整型[signed]int
2.无符号基本整型unsigned int
3.有符号短整型[signed]short[int]
4.无符号短整型unsigned short[int]
5.有符号长整型[signed]long[int]
6.无符号长整型unsigned long[int]
整型常量的类型:
1.一个整数,如果其值在-32768~2147483647范围内,则认为它是int型,
它可以赋值给int型和long int型变量
2.一个整数,如果其值超过了上述范围,而在-2147483648~2147483647范
围内,则认为它是长整型,可以将它复制给一个long int型变量
3.一个整常量后面加一个字母u或U,可以认为是unsigned int型,如123456u
4.在一个整常量后面加一个字母l或L,则认为是long int型常量,如123l、
123L
5、浮点型常量的2种表示方式、浮点变量的分类及其定义方式、浮点常量的类型(P45-47)
浮点型常量的2种表示方法:浮点数就是实数,有两种形式1.十进制小数形式。
(由数字和小数点组成,必须有小数点)2.指数形式。如123e3或123E3
代表123×注意字母e/E之前必须有数字,且e后面的指数必须为整数,
一个浮点数可有多种指数表示方法
浮点变量的分类:
1.单精度(float型):有效数字6~7
2.双精度(double型):有效数字158~16
3.长双精度型(long double型):有效数字18~19
浮点变量的定义方式:float x,y;类似
浮点常量的类型:如果在数的后面加字母f或F(如1.65f),编译系统会把它们
按单精度处理。一个浮点型常量可以赋给一个float型、double型或long double型变量,根据变量类型截取实型常量中相应的有效位数字。
例如:Float a;
A=111111.111;
由于folat型变量只能接受7位有效数字,因此最后两位小数不起作用。如果a改为double型,则能全部接受上述9位数字,并储存在变量a中。
6、字符常量的2种形式、字符变量、字符串常量(P48-52)
字符常量的2种形式:
1.C语言的字符常量是用单撇号括起来的一个字符。如‘a’
例char c1,c2;c1=‘a’;c2=‘b’;
一个字符变量在内存中占一个字节。
小写字母的ASCII码比它的大写字母ASCII码大32,小大变为大小
7、变量初始化的时间(P53)
C语言允许在定义变量的同时使变量初始化。(int a=3;float f=3.56;char c=‘a’)也可以使被定义的变量的一部分赋初值(int a,b,c=5;)
如果对几个变量赋予同一个初始值,应写成:int a=3,b=3,c=3;不能写成int a=b=c=3;
初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋初值的,相当于有一个复制语句。(int a=3;)
8、各类型数据间的混合运算(P54)
整型、浮点型、字符型数据间可以混合运算
9、C语言的运算符及其优先级和结合性(P55)
特殊%,模运算符或称求余运算符,%两侧均应为整型数
据,且两个整数相除的结果为整数,如5%3为1,舍去小
数部分
算术运算符的结合方向为自左至右或左结合性,并且先乘
除后加减
10、强制类型转换(P56)
(double)a;(int)(x+y);
i++或++i
1.自增自减运算符只能用于变量,不能用于常量或表达式。例++(i-1)为错
2.++和—的结合方向是自右至左,例-i++合法,先输出-i再加一,(-i)++不合
法
例:i=3;a=i++;b=i++;c=i++;d=a+b+c;最终输出d=12.
3. i+++j相当于(i++)+j,尽可能多的自左至右
12、赋值运算符、复合赋值运算符、赋值表达式(P59-64)
赋值运算符就是“=”
1.将浮点型数据(单双精度)赋给整型变量时,舍弃浮点数的小数部分
2.将整型数据赋给单双精度时,数值不变,但以浮点数形式存储到变量中,如将23赋值给float就得到2
3.00000
3.将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float 变量中。例:float f;double d=123.456789e100;f=d;就出现溢出错误
将一个float型数据赋给double变量时候,数值不变,有效位数扩展到16位,在内存中以8个字节存储
4.字符型数据赋给整型变量
5.int、short、long型数据赋给char变量
例如int i =289;char c=‘a’;c=i;
6.将带有逗号的整型数据int赋给long型变量时,啊哟进行符号扩展,将整型数据16位送到long型低16位中,如果int型数为正值,则long型变量的高16位补零;如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保持数值不变,反之如果将一个long型数据赋给一个int型变量,值将ong型数据中低16位原封不动地送到整型变量(截断)
7.unsignedint型数据赋给long int型变量时,不存在符号扩展问题
8.将非unsigned型数据赋给长度相同的unsigned型变量,也是原样赋值
复合赋值运算符:a+=3 等价于a=a+3;a+=b+3等价于a+=(b+3)
9. 赋值表达式一般形式<变量><赋值运算符><表达式>
赋值运算符左边的叫左值,右边的叫右值,凡是左值都可以作为右值
赋值表达式作为左值时应加括号
赋值运算符按照“自右至左”的结合顺序
(a=3*5)=4*3 先执行括号内能的运算,将15赋给a,然后执行4*3的运算,得12,再把12赋给a,故整个表达式的值为12
赋值表达式也可以包含复合的赋值运算符
a+=a-=a*a 先进行右边赋值表达式的计算,相当于a=a-a*a将a初值带入计算a,再进行左边赋值表达式的计算
13、逗号运算符及其优先级、逗号表达式
逗号表达式一般形式表达式1,表达式2
赋值运算符的级别高于逗号运算符a=3*5,a*4 a的值为15,表达式的值为60 x=(a=3,6*3)
赋值表达式,将逗号表达式的值赋给x,x的值等于18
x=a=3,6*3
逗号表达式,x的值为3,整个逗号表达式的值为18
第四章顺序结构程序设计
1、C语句的分类(P69-71)
1、控制语句9种
If…else…/for…/while…/do…while/continue/break/switch/goto/return
2、函数调用语句。函数调用语句由一个函数调用加一个分号构成
printf(“456123”)
3、表达式语句。表达式语句由一个表达式加一个分号构成,a=3
4、空语句
5、复合语句
2、赋值语句(P71)
If((a=b)>0)t=a;先将b的值赋给a,如果a大于0,则t=a
3、putchar()、getchar()函数(P73-74)
putchar函数(字符输出函数)作用是向终端输出一个字符。其一般形式为putchar(c)
putchar函数可以在屏幕上输出字符,也可以输出控制字符,如putchar(…\n?)作用是输出一个换行符,使输出的当前位置移到下一行的开头
getchar函数(字符输入函数)的作用是从终端输入一个字符,其一般形式为getchar()例如char c;c=getchar();putchar(c);此时屏幕上将输出c的输入值4、printf()、scanf()函数及其对应的格式控制符(P74-86)
printf格式输出函数,作用是向终端输出若干个任意类型的数据
一般格式为printf(“格式控制”,输出表列)
例printf(“%d,%c\n”,i,c)
格式控制作用:
1.格式说明(%..):将输出的数据转换为指定的格式输出
2.普通字符。按原样输出
格式控制中的普通字符按原样输出
例printf(“%d %d”,a,b)
printf(“a=%d b=%d”,a,b)
在第二个函数中双引号内的字符,除了两个%d以外,其他的普通字符按原样输出,如果a,b的值分别为3,4,则输出为a=3 b=4中间有空格
3.格式字符:
①d格式符。%d按十进制整数数据实际长度输出;%md指定宽度(位数)
m,如果数据位数小于m,则左端补空格;%ld长整型数据
②o格式符。以八进制整数形式输出
③x格式符。以十六进制数形式输出
④u格式符。以十进制整数形式输出无符号数
⑤c格式符。用来输出一个字符,一个整数,只要它的值在0~255之间,也
可以用%c使之按字符形式输出,在输出前,系统会将该整数作为ASCII 码转换成相应的字符;反之,一个字符数据也可以用整数形式输出。
⑥s格式符。用来输出一个字符串。%s;%ms,输出的字符串占m列,如
果字符串本身长度大于m,则突破m限制,将字符串全部输出,如果小于m,则左补空格;%-ms,如果串长小于m,则在m列范围内,字符串
向左靠,右补空格;%m.ns,输出m列,但只取字符串左端n个字符。这n个字符输出在m列右侧,左补空格;%-m.ns,取n个字符输出在m列范围的左侧,右补空格,如果n>m,则m自动取n值,即保证n个字符正常输出
⑦f格式符。用来输出实数(包括单双精度),以小数形式输出。%f,不指
定字段宽度,使整数部分全部输出,并输出6位小数。但注意,在输出的数字中并非全部数字都是有效数字,单精度实数的有效数字一般为7位;%m.nf,指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格;%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。
⑧e格式符。以指数形式输出实数
⑨g格式符。用来输出实数,根据数值的大小,自动选f格式或者e格式,
串内包含转义字符;格式符之间可以加入修饰符;用连续两个%来输出%
scanf(格式控制,地址表列)
scanf(“%d%d%d”,&a,&b,&c)
&为地址运算符,&a指a在内存中的地址。
1.用%d%d%d输入数据时不能用逗号做两个数据间的分隔符可用空格
如果%d和%d之间有n个空格,则输入时对应的位置应该有多于n个空格来分隔
总之,%d与%d之间有什么简单符号,输入信息时候就要将这些符号加上,或者格式控制里是a=%d,则输入数据时候也得输入a=某个数据
2.用%c格式输入字符时候,空格字符和转义字符都作为有效字符输入
例如:scanf(“%c%c%c”,&c1,&c2,&c3);若输入“a空格b空格c”则c1为a,
c2为空格,c3为b,正确的输入法为“abc”字符间没有空格
3.在输入数据时候,遇到以下情况时,认为该数据结束①遇空格,或按回车,或跳格键;②指定宽度结束,如%3d;③遇非法输入
第五章选择结构程序设计
1、关系运算符及其优先级和结合性、关系表达式(P91-92)
优先级:等不等于低于大小等于;算术运算符>关系运算符>赋值运算符
理解:关系表达式,表达式的值(1为真,0为假)
例:设a=3,b=2,c=1有d=a>b 则d的值为1;f=a>b>c 则f的值为0.
2、逻辑运算符及其优先级和结合性、逻辑表达式及其求值过程的特点(P91-92)逻辑运算符与(&&)或(||)非(!)
优先级:
①非(!)→与(&&)→或(||)谐音记为“飞鱼火”;
②逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算
符
逻辑表达式:C语言判断一个量是否为真时,以0代表假,以非0代表真,即将一个非0的数值认作为真。
若a=4则!a的值为0;4&&0||2的值为1
求值过程特点:略
3、if语句的三种结构(P95-96)
第一种:if(表达式)语句
例:if(x>y)frintf(“%d”,x);
第二种:if(表达式)语句1else语句2
例:if(x>y) printf(“%d”,x); else printf(“%d”,y)
第三种:if(表达式1)语句1 else if(表达式2)语句2…..
例:if(number>500)cost=0.15;else if(number>300)cost=0.10;else cost=0;
特点:1.if(3)printf(“%d”,?a?);2.第二,三种形式的if语句中,在每个else 前面有一个分号,整个语句结束处有一个分号。3.当if和else后面有多个操作语句时,用{}将几个语句括起来称为一个符合语句。注意,花括号外面不需要再加分号,因为{}内是一个完整的复合语句
4、if语句的嵌套及if与else的配对关系(P99)
略
5、条件运算符及其优先级和结合性及其求值过程(P102-104)
例子:max=(a>b)?a:b;
“(a>b)?a:b”是一个条件表达式,如果(a>b)为真,则条件表达式取值a;否则取值b。条件运算符优先级别低于关系运算符和算术运算符。故上式中括号可以省略
条件运算符的结合方向为“自右至左”
a>b?a:c>d?c:d 相当于a>b?a: (c>d?c:d)
例子:a>b?(a=100):(b=100) a>b?printf(“%d”,a):printf(“%d”,b)
6、switch语句及其执行过程、break语句的作用(P102-104)
switch(grade) { case…A?:printf(“85~100\n”); case …B?:printf(“0~84\n”);
defaule:printf(“error\n”);
}
说明:case只起语句标识作用,当语句执行时,此case一旦执行其后面的语句将就此开始全部执行下去,不再进行判断,为使在执行此case后跳出结构,用一个break语来达到刺目的。故需在以上语句的每一个case语句分号后面加(break;)
第六章循环控制
1、while语句(P114)
while(表达式)语句;特点:先判断表达式,后执行语句。
例子:while(i<=100){sum=sum+I;i++;}
2、do-while语句(P115)
do 循环体语句while(表达式);特点:先执行循环体,后判断循环条件是否成立
例子:do{sum=sum+I;i++;}while(i<=100);printf(“%d\n”,a);
3、for语句(P118)
for(表达式1;表达式2;表达式3)语句
for(循环变量赋初值;循环条件;循环变量增值)
for(i=1;i<=100;i++)sum=sum+i;
说明:1.表达式1可以省略(但分号不可以省略),此时应在for语句之前给循环变量赋初值;2.如果表达式2省略,循环无终止地进行下去;3.表达式3也可以省略,另找路径保证循环正常结束;4.可以省略表达式1和表达式3而使只有表达式2循环条件。如for(;i<=100;){sum=sum+i;i++}
4、循环的嵌套(P121)
while循环,do…while循环,for循环三种循环可以嵌套
5、break、continue语句(P122)
break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环体下面的语句,不能用于循环语句和switch语句之外的任何其他语句中。continue作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
两者区别是continue语句只结束本次循环,而不是种植整个循环的执行。而break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
6、辗转相除法求最大公约数的基本原理
第七章数组
1、数组的定义方式、下标范围(P131、135)
类型说明符数组名[常量表达式] 例int a[3] 表示定义了一个整数数组,数组名为a,有3个元素。注意,下标是从0开始的(可以使整型常量或整型表达式),C语言不允许对数组的大小做动态定义。
int a[10];t=a[6];
2、数组元素的引用方式、数组的初始化(P132、136)
全赋初值
int a[3]={1,2,3} 在全赋初值的前提下可以写成int a[]={1,2,3}
赋初值一部分
int a[3]={1,2}
全部为0
int a[3]={0}
3、起泡法排序的原理(P134)
将相邻两个数比较,将大(小)的调到前边
4、二维数组相关
表示:float a[3][4],b[5][10];定义a为3行4列的数组,b为5行10列的数组。(区别a[3,4])
引用:数组名[下标][下标] 例a[2][3],不要写成a[2,3]
初始化:
①分行给二维数组赋初值,例。int a[3][2]={{4,5}{9,8},{4,2}};
②将所有数据写在一个花括号内,按数组排列顺序对个元素赋初值,例int
a[3][2]={1,2,3,4,5,6,}
③对部分元素赋初值,例,int a[3][2]={{4},{},{7}}未赋值的元素自动为0
④第一维可以不指定,但第二维不能省略int a[][2]={1,2,5,6,8,9}系统会根据第二
维的长度自动算出第一维
⑤还可以int a[][4]={{0,0,3},{},{0,10}};
5、字符数组及其初始化、字符数组的输入输出(P144)
同前面的定义方法类似char c[10]
字符型和整型是互相通用的,因此可以定义一个整型数组,用来存放字符型数据,例:char c[10]; c[0]=?a?; char a[]={…B?,?O?,?Y?};
初始化:char c[3]={…B?,?O?,?Y?};如果括号内初值个数大于数组长度,按语法错误处理,如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符
字符串的输入输出:逐个输入输出,用格式符%c输入或输出;或将整个字符串一次性输入或输出,用%s格式符
char c[]={“I am happy”}等同于char c[]=”I am happy”(以上两种字符串长度为11而不是10)效果等同于char c[]={…I?,??,?a?,?m?,??,?h?,?a?,?p?,?p?,?y?}
char c[5]={…C?,?h?,?i?,?n?,?a?}等同于char c[6]={…C?,?h?,?i?,?n?,?a?,?\0?}
6、字符串处理函数(P146)
puts(字符数组)作用是将一个字符串输出到终端,puts输出的字符串中可以包含转义字符例char str[]={“China\n Bei jing”};puts(str);
gets(字符数组)作用是从终端输入一个字符串到字符数组,并且得到一个函数值。
例gets(str) 键盘输入Computer[回车]
注意:puts和gets函数只能输出或输入一个字符串,如puts(str1,str2)为错误
strcat(字符数组1,字符数组2)作用是连接两个字符数组中的字符串,把字符串2接到1的后面,结果放在字符数组1中,函数调用后得到字符数组1的地址
例char str1[30]={“I am”};char str2[]={“a boy”};printf(“%s”,strcat(str1,str2));输出I am a boy 剩下的函数省略..
第八章函数
1、函数的调用特点及其分类(P155-156)
特点:
①一个源程序文件可以为多个C程序共用
②一个源程序文件时一个编译单位,在程序编译时是以源程序文件为单位
进行的,而不是以函数为单位进行编译的
③C程序的执行时从main函数开始的
④所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。
函数间可以互相调用,但不能调用main函数,main函数时系统调用的。分类:从用户使用角度看,分为标准函数和用户自己定义的函数
从函数的形式看,分为无参函数和有参函数
2、函数的定义方法(P156-157)
①无参函数定义的一般形式
类型标识符函数名(){
声明部分
语句部分
} void main() { ……….
}
②有参函数定义的一般形式
类型标识符函数名(形式参数表列){
声明部分
语句部分
} int max(int x,int y) {
int z;
z=x>y?x:y; return(z);
}
③空函数
类型说明符函数名()
{ }
例如void dummy()
{ }
3、函数的参数、实参和形参之间的数值传递、函数值(P158-161)
4、函数的调用方式、函数的声明、函数原型(P161-166)
5、函数的嵌套调用(P167)
6、函数的递归调用及应用(P171)
7、数组作为函数的参数、实参数组和形参数组之间的关系(P177)
8、选择法排序的原理(P181)
9、局部变量、全局变量(P184-185)
在函数内定义的变量是局部变量,在函数之外定义的变量称为外部变量,外部变量是全局变量也称全程变量。全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。
例如
int p=1,q=5;
float f1(int a)
{
int b,c;
…
}
char f2(intx,inty)
{
int x,int y
…
}
10、变量的分类及其存储类别(P188)
11、extern、static的应用(P193-196)
12、内部函数和外部函数(P199)
第九章预处理命令
1、预处理命令的处理时间(P204)
2、宏定义、不带参宏、带参宏、格式宏、宏的有效范围控制(P204-211)
3、文件包含、两种文件包含形式(P211-214)
第十章指针
1、变量的地址和变量的值(P221)
一个变量的地址称为该变量的“指针”。如果有一个变量专门来存放另一变量的地址(指针),则它称为“指针变量”。
2、指针和指针变量(P221)
3、指针变量的定义方式、引用方式(P222)
4、指针变量作为函数参数(利用函数来改变实参的值)、实参和形参的值传递(P225)
5、指向数组元素的指针(P229)
6、一维数组元素和地址的表示方法、利用指针处理数组元素(P229)
7、数组和指针作为函数参数时如何利用指针处理数组元素(P235)
8、指向二维数组的指针的定义方式、二维数组元素和地址的表示方法(P242)
9、指向字符串的指针、利用它来处理字符串
选择题15题,每题2分
填空10,2分
程序判断题1,8分
编程题4,42
四道大题分别在6,7,8,10章
四道大题全是书上例题
1、goto循环
例6.1求1+2+3+…+100
# include
void main()
{
int i=1,sum=0;
loop: if(i<=100)
{sum=sum+i;
i++;
goto loop;}
printf("%d",sum);
}
2、while循环
例6.2
#include
void main()
{
int i=1,sum=0;
while(i<=100)
{
sum=sum+i;
i++;
}
printf(“%d”,sum);
}
3、do…while循环
#include
void main()
{
int i=1,sum=0;
do
{
sum=sum+i;
i++;
}
while (i<=100);
printf(“%d”,sum);
}
4、for(循环变量赋初值;循环条件;循环变量增值)
#include
void main()
{
int i,sum=0;
for(i=1;i<=100;i++)sum=sum+i;
printf(“%d”,sum);
}
表达式省略,注意,表达式后分号不能省略;
5、break语句不能用于循环语句和switch语句之外的任何其他语句;
continue语句和break语句的区别是:continue只结束本次循环,break则终止整个循环过程
6、
常用知识及例题总结:
1、优先级比较谨记:
关系运算符:等不等于低于大于小于
逻辑运算符:飞鱼火(非>与>或)注意,!高于算术运算符,&&||低于它
算术运算符:先乘除后加减
综合起来有:!> * / > = != >&&>||
非>乘除>加减>非>或
2、“%”是取余,仅留余数;“/”是取商,舍去小数部分;
3、1Byte(字节)=8bit(位)即一个字节包含8个二进制位;
4、a=3*5,a*4 a的值为15,逗号表达式的值为60
5、%d叫“格式字符串”(格式符)
6、在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头
写上下面一行:#include
7、main叫主函数
8、scanf中&d的&含义是取地址
9、计算计算法分为两大类别:数值运算算法和非数值运算算法
10、define(第九章)
11、标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字
母或下划线
12、八进制0开头,十六进制0x开头
13、有符号整型范围为-32768~32767,无符号整型范围0~-1(65535),一个
整常量后面加u或U,认为是unsigned int型,加l或L为long int型
14、单精度有效位数7位,双精度16位,long double为18~19
15、字符常量用‘’括起来,如‘a’
16、‘\r’叫转义字符,意思是将反斜杠后面的字符转换成另外的意义,\ddd
意思是用一个ASCII码(八进制)表示一个字符,\xdd表示用一个十六进制表示一个字符,\t作用为跳格,跳到下一个制表位置,占8列
17、指数形式表示浮点数时候e之前必须有数字,e之后指数必须为整数
18、%f是住处浮点数时制定的格式符,作用是制定该实数以小数形式输出,7
位;%c以字符形式输出;%d以整数形式输出;
19、字符型变量以ASCII码放到存储单元中,然后以二进制形式存放于内存中
20、字符数据与整型数据可以互相赋值
21、字符串常量用“”括起来,字符常量用‘’括起来
22、define定义函数的用法:程序中用#define命令行定义字符X为常量(456),
以后凡是本程序中出现的X都代表此常量(456);这种用一个标识符代表一个常量的符号称为符号常量,即以标识符出现的常量,注意,符号常量和变量不同,符号常量的值在其作用域内不能改变,也不能再被赋值,习惯上符号常量名用大写,变量名用小写。例:#define PRICE 30
23、条件运算符max=(a>b)?a:b;条件运算符的结合方向为“自右至左”
24、switch语句记得case句结尾加break。
大学c语言必背基础知识_c语言基础知识大全 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格123 printf(“f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为1.250000 printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位) printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入) 第三节数据输入1、scanf(“a=%d,b=%d”,">2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!scanf(“%d,%d”,注意写成这样才可以! 3、特别注意指针在scanf的考察例如:int x=2;int *p=scanf(“%d”,x); 错误scanf(“%d”,p);正确scanf(“%d”,错误scanf(“%d”,*p)错误 4、指定输入的长度(考试重点)终端输入:1234567scanf(“-M%d”,x为12,y为3456,z为7终端输入:1 234567 由于1和2中间有空格,所以只有1位给xscanf(“-M%d”,x 为1,y为2345,z为67 5、字符和整型是近亲:int x=97;printf(“%d”,x); 结果为97printf(“%c”,x); 结果为a 6、输入时候字符和整数的区别(考试超级重点) scanf(“%d”,这个时候输入1,特别注意表示的是整数1 scanf(“%c”,这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。 补充说明: 1)scanf函数的格式考察: 注意该函数的第二个部分是scanf(“%d%d%*d%d”,跳过输入的第三个数据。 2)putchar ,getchar 函数的考查:
计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。
并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a
C 语言最重要的知识点复习资料总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从()入口, 然后从最上面顺序往下读(碰到循环做循环, 碰到选择做选择),有且只有一个函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)是位是指为0 或者1 。是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以数值存放在文本文件中。 2、 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、可用于循环结构和语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C 语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个函数,是程序运行的起点。第二节、熟悉 1、是软件,用来运行写的C语言程序。 2、每个C 语言程序写完后,都是先编译,后链接,最后运行。()这个过程中注意和文件时无法运行的,只有文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。有其它元 素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。都不是关键字。迷惑你的地方是 可以做为用户标识符。因为中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。二进制、八进制、十六进制转换 成十进制。 第五节:整数与实数 1)C 语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次) a 、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有 8 的,逢8 进1。 b 、C语言中的十六进制规定要以Ox开头。 2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。
谭浩强C语言知识点总 结 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)
C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI ; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。
第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---?.obj---?.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)
贵州大学2012-20103学年第一学期考试试卷 A C语言程序设计 满分100分,考试时间为120分钟。 一、单项选择题(选出一个正确答案,每小题2分,共20分) 1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ) A.连接、编译 B. 连接、运行 C. 编译、运行 D. 编译、连接 2.下列说法正确的是() A.一个c语言程序并非总是从主函数位置开始执行的 B.一个c语言程序有且只有一个主函数 C.函数可以嵌套定义,不可以嵌套调用 D.程序函数的位置不可以任意 3.下面是合法C语言标识符的是() A. 2A_K; B. _M+N; C. –M3; D. AC_2; 4.下列格式符中,可以用于控制字符输出的是( ) A. %d B. %f C. %o D. %c 5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( ) A. 4; B. 16; C. 30; D. 50; 6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( ) A. 10,5 B. 15,6 C. 15,5 D. 10,6 7.若有定义 int x,*p;,则以下正确的赋值表达式是( ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x; 8.以下对结构体类型变量的定义中,不正确的是( ) A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; } stud; AA stud; C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句: func(rec1,rec2+rec3,(rec4+rec5)); 函数调用语句中,含有的实参个数是( ) A. 3 B. 4 C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x #define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( ) A.25 B.11 C.43 D.以上均不是
PS这个文档是我从百度文库找的,其中存在一些错误在我能力范围之内的已被纠正过来了,并且有些内容我做了适当的修改。来不及复习的同学如果觉得书太多懒得看,可以看看这个,已经复习的同学也可以查漏补缺哈。复习的话建议书本加网上作业。预祝大家考试过过过! C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址. 4)bit是位是指为0或者1。byte是指字节,一个字节=八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI3.1415926;这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。(但能嵌套调用) 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。(continue不能用于switch语句) 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。
大学c语言学习心得感悟 通过这次大学c语言计算机实习学习,我们了解了一些关于c 语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。下面是WTTWTT为大家收集整理的大学c语言学习心得感悟,欢迎大家阅读。 大学c语言学习心得感悟篇1 林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。 许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。 通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电
脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢? 在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和: void main { 首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。 int num1,num2,x=0; 由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。 scanf("%d%d ",&;num1,&;num2) ; 得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果
C 语言基础知识 1. 每个C 程序有且只有一个主函数main() ,且程序必须从main() 函数开始执行,并在main() 函数中结束。 2. 在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。 3. 用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。 4. 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 5. 在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。 6. 用sizeof(int) 计算int 类型数据的字节数。 7. C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8. 预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空 间。 9. feo f函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。 10. 当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名。 11. 在赋值表达式中,赋值运算符"=”右侧不能为表达式;在求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12. 静态局部变量,只有当程序结束后,其值才释放。 13. 当调用函数时,实参是一个数组名,则向函数传送的是数组每一个元素的地址。 14. 算法的特点为有零个或多个输入,有一个或多个输出,当相同的输入时,其结果相同;算法 正确的程序最终一定会结束。15. 在 C 语言中,预处理命令行都以“#”开头;当需要时才用 #include
循环 特点:在满足特定条件的情况下,反复执行某程序段。 While循环 While循环的格式是这样的:while(条件表达式){语句代码},意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,一直到条件表达式的返回值为假时,跳出循环。 While循环很容易出现死循环这种状况,就是因为忘记写了“增量”这个东西。 上面的代码就是少了count++,这个增量,所以,条件表达式一直满足,就一直执行,就造成了死循环。 此时,应该这样改进:
一些例子:
Do-while循环 与while不同的只有一个地方,就是先执行一遍代码,再进行判断。也就是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。 随机数arc4random() 产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?因为,在存储的时候,生成的数的最高位的数字为1,此时,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况避免掉,在输出之前,用unsigned 来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。 另一个值得注意的是,随机数产生的时候,数字会很大,而我们在代码过程中,
不需要这么大的数,此时,想要把这个数减小,可以用取余的办法来限制。 在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式: 若是规定在负空间生成随机数,那么就将公式改成: 一些例子:
C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。 C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。
第二节、 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)(程序编辑-程序编译-程序连接-程序运行) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字(保留字)、预定义标识符、用户定义标识符。关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。(关键字都是小写) 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所
参考解答 一、单选题 1. 以下C程序中预处理命令写法正确的是: D 。[知识点:编译预处理命令] A. #include “studio.h” B. #include [stdio.h] C. #include {stdio.h} D. #include “stdio.h” 2.执行下列语句序列后,不可能出现的运行结果是___ C ____。[知识点:开关语句] int n; scanf( "%d", &n); switch ( n ) { case 1: case 2: putchar('X'); case 3: case 4: putchar('Y'); break; default: putchar('Z'); A. 显示:z B. 显示:xy C. 显示:x D. 显示:y 3.设a,b为整型变量, 且二者均不为0, 以下关系表达式中恒成立的是___ C ___。[知识点:运算与数据类型] A. a/b*b/a==1 B. a/b*b==a C. a*b/a==b D. a*b/ a*b ==1 4.设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___B____。[知识点:if语句] if ( x>y ) z=x; x=y; y=z; printf("%d,%d,%d",x, y, z ); A. 20,30,20 B. 20,30,30 C. 20,30,10 D. 10,20,30 5.下列程序的输出结果是__ B ____。[知识点:整型常量的表示和自增运算] main() { int a = 011; printf( "%d\n", ++a ); } A. 9
五、思考与实践 一.在()里填写正确答案。 1. 一个C语言编写的程序总是从(main函数)开始执行。 2. 在C语言程序中,用关键字(int )定义基本整型变量,用关键字(float)定义单精度实型变量,用关键字(double)定义双精度实型变量。 3. 通常一个字节包含(8)个二进制位。在一个字节中存放的最大(十进制)整数是(127),最小(十进制)整数是(-128)。 4. 在C语言中,注释部分两侧的分界符号分别为(/*)和(*/)。 5. 用字符串的形式表示China(“China”) 6. 字符串“ab\034\\\x79”的长度为(5)。 7. 若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为(1) 8. 若a,b,c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a,b,c的值分别为(6)(4)(2)。 9. 若有定义int x=3, y=2; float a=2.5, b=3.5;则表达式 (x+y)%2+(int)a/(int)b的值为(1)。 10. 若x和n均是int型变量,且x的初值为12,n的初值为5,则执行表达式x%=(n%=2)后的值为(0)。 11. 假设所有变量的类型均为整型,则表达式 (a=2,b=5,a++,b++,a+b)的值为(9)。 12. 以下所有变量的类型均为整型,则sum=pad=5; pad=sum++, pad++, ++pad; 后,pad的值为(7)。 13. 已知int a,b=1; 执行语句a=-b++;后a的值为(-1)。 14. 已知int m=5, y=2; 则执行y+=y-=m*=y后y 的值为(16)。 15. 表达式8.0*(1/2)的值为(0.0)。 二.下列程序完成交换两个变量的功能,请填空。 #include
计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1)、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2)、每个C语言程序中main函数是有且只有一个。 3)、在函数中不可以再定义函数。 4)、算法的是一定要有输出的,他可以没有输入。 5)、break可用于循环结构和switch语句。 6)、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034
1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程。算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 算法是一组严谨地定义运算顺序的规则,每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。所以其四个基本特征包括: (1)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性; (2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;(3)可行性,算法原则上能够精确地执行; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的三种基本控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。算法效率的度量—算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度:指执行算法所需要的计算工作量。即算法执行过程中所需要的基本运算次数。通常,一个算法所用的时间包括编译时间和运行时间。 算法空间复杂度:指执行这个算法所需要的内存空间。包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。 1.2 数据结构的基本概念 数据结构:指相互有关联的数据元素的集合。 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。 数据的逻辑结构应包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系(指逻辑关系,与存储位置无关)。 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据物理结构。 数据的存储结构有顺序、链接、索引等。 线性结构的条件,(一个非空数据结构): (1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构 线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
全国计算机等级考试二级c语言公共基础知识总结 第一章数据结构与算法 1.1算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解 释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后 终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法' 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 1.2数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的 存储结构; (3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。
数据的存储结构有顺序、链接、索引等。 线性结构条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3线性表及其顺序存储结构 线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素 之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记 录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只 有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k, ,ADR(a1)为第一个元素的地 址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 1.4栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈 顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出” (FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算; (3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线 性表。Rear指针指向队尾,front指针指向队头。 队列是“先进行出” (FIFO)或“后进后出”(LILO)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删
C语言基础知识 1.每个C程序有且只有一个主函数main(),且程序必须从main() 函数开始执行,并在main()函数中结束。 2.在C语言中,用e来表示科学计数法时,规定在e的前面必 须有数字,后面必须为整数。 3.用单引号括起来的一个字符常量只能存放一个字符;C语言中 没有字符串变量,只能用字符数组来存储字符串。 4.外部变量在编译时由系统分配永久的内存空间,所以外部变 量的类型不是自动存储类别。 5.在一个函数内的复合语句中定义的变量,只能在这个复合语 句范围内有效。 6.用sizeof(int)计算int类型数据的字节数。 7.C语言运行时,首先系统检查语法的正误,再运行程序的语法; C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8.预处理命令行的位置没有规定,只是习惯放在前面;在源文 件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空间。 9.feof函数的作用是检查文件是否结束,当结束时返回的 值为非零,否则为零。
10.当定义了数组后,在给其赋值时,不能直接把字符串赋给数 组名。 11.在赋值表达式中,赋值运算符“=”右侧不能为表达式;在 求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12.静态局部变量,只有当程序结束后,其值才释放。 13.当调用函数时,实参是一个数组名,则向函数传送的是数组 每一个元素的地址。 14.算法的特点为有零个或多个输入,有一个或多个输出,当相 同的输入时,其结果相同;算法正确的程序最终一定会结束。 15.在C语言中,预处理命令行都以“#”开头;当需要时才用 #include
大学C语言期末考试试题 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); }