C语言知识点总结
C语言知识点总结 ........................................................................................................................... 1
一、 常量..................................................................................................................................... 2
二、 标识符................................................................................................................................. 2
三、 变量..................................................................................................................................... 2
四、 表达式................................................................................................................................. 3
五、 输入输出函数 ..................................................................................................................... 4
六、 C语言的语句 ...................................................................................................................... 5
七、 C程序的基本结构 .............................................................................................................. 5
八、 选择结构语句 ..................................................................................................................... 5
? if(表达式) 语句1 else 语句2 ........................................................................................ 5
? 条件运算符 表达式1? 表达式2 : 表达式3 ............................................................... 6
? switch语句 ....................................................................................................................... 6
九、 循环结构 ............................................................................................................................. 6
? for循环语句 .................................................................................................................... 6
? while循环语句 do while循环语句 ............................................................................... 6
十、 数组..................................................................................................................................... 7
十一、 字符串函数 ......................................................................................................................... 7
十二、 函数..................................................................................................................................... 8
十三、 指针..................................................................................................................................... 9
十四、 宏定义............................................................................................................................... 10
一、 常量
? 数字常量
i. 普通数字:1,35,2.7
ii. 指数形式:2.45e-2等价于2.45*10-2 注意ee前面的数字不能省,就算是1也不能省,后面的数字一定要是整数
iii. 长整型,单精度浮点型:3235L,32.5F 分别表示3235是长整型数据,
32.5是单精度浮点型左,若不写上L,F则表示3235是整型,32.5是双精度浮点型,L,F大小写皆可
? 字符常量
i. 普通字符常量:用单引号把一个字符括起来,如?A?,?@?
ii. 转义字符常量:一对单引号括起来并以“\”开头的字符序列,如?\n?(回
车)、?\123?(8进制123对应的字符), ?\x23?(16进制23对应的字符) ? 字符串常量
用一对双引号把一个字符序列括起来,如“ABCef”, 系统存放字符串常量,每个字符分配一个字节,各字符所占字节紧邻,并且字符串末尾会给再开一个字节里面放一个’\0’做为结束标志。
? 符号常量
定义格式 #define 符号常量名 符号常量值,如#define N 20则定义了符号常量N,其值为20,注意符号常量名和符号常量值之间是用空格隔开,而不是写上=号,#define和符号常量名之间也有空格的。
二、 标识符
? 命名规则
以数字,字母,下划线这三类字符组成,但只能以字母或下划线开头,而不能也数字开头,另外不能将关键字做为标识符。32个关键字表在P365附录B
? 变量名,函数名,符号常量名全都是标识符
三、 变量
? 变量的定义格式
类型名 变量名;
如 int a;定义了一个整型常量a。变量名是由人类随便定义的,符合命名规则的前提下,爱写啥就写啥。所以什么flag,cc,y1或者函数名fun,find等全部是自定的用来做为名字而已,没有更特别的意义。
? 类型名
int 整型,long 长整型: 用于存放整数,只是数值范围不同
float 单精度浮点型 double 双精度浮点型:用于存放实数,数值范围,精度不同
char字符型:用于存放字符
? 变量赋值,初始化
int a=3;定义的同时初始化
a=6*9;定义后在程序中进行赋值
? 变量的值
只有在赋值操作时才会被改变,即将其放在等号左边时才会改变它的值,或自增自减操作:a=5,a++,a--,像a+3并未改变a的值,只是使用了a的值而已.
? 自增自减运算
变量++,++变量,变量--,--变量 使变量的值自增1或自减1
等价于 变量=变量+1 变量=变量-1
++,--放于变量前后效果的区别:
当自增自减运算做为表达式的一部分时,++,--放在变量前面是先自增自减再使用变量的值,放在变量后面则是先使用变量的值,再自增自减。 如x=3; printf(“%d”,++x);则相当于执行了++x; printf(“%d”,x);这样的操作所以打印出4
再如x=3; printf(“%d”,x++);则相当于执行了printf(“%d”,x); x++;这样的操作,则打印出3,当然最后x的值还是4。
四、 表达式
? 运算符和运算对象
一个运算符都有若干个运算对象,如 + 必然要跟两个运算对象才能进行加法运算:3+5。C语言里称需要跟n个运算对象的运算符为n元运算符。 一元运算符有:!,(类型名)
二元运算符有:+,-,*,/,%(求余), =,+=,-=,*=,/=,%=,< , > , <=, >=, = =(等于), !=(不等于),&&(且) , ||(或)
多元运算符有: ,
? 运算符的优先级和结合性
i. 优先级:同一个运算对象左右两边若同时有两个运算符,则这两个运算
符优先级高的先进行运算。
ii. 结合性:若同一个运算对象左右两边的两个运算符优先级相同,则根据
结合性判断先进行哪个运算,自左自右结合性的先算左边的运算符,自右自左的先算右边的运算符。
iii. 各运算符的优先级和结合性见P378附录D
? 强制类型转换
格式: (类型名) 表达式 。将后跟的表达式的值的数据类型转换为与圆括号内的类型名一致的类型。注意类型名一定要用() 括起来。 ? 算术表达式
i. 算术运算符:+,-,*,/,%(求余)
ii. 由算术运算符加上运算对象构成算术表达式,如3+3*6-9/2
iii. 值:跟我们小学时学的一样,就是表达式的计算结果
iv. 整数除以整数结果取整数部分,故1/3得到的值是0
v. 5%3 结果为2,想想小学除法,求余得到的是余数不是商。 ? 赋值表达式
i. 赋值运算符:=,+=,-=,*=,/=,%=
ii. 赋值表达式:变量=表达式,如x=3+6,x+=6-9,x+=x*=3+4 注意等号
左边只能是变量
iii. 复合赋值运算符的运算:以/=为例:x/=表达式 等价于 x=x/(表达式) iv. 值:=号左边的变量最终的值
? 关系表达式
i. 关系运算符:< , > , <=, >=, = =(等于), !=(不等于)
ii. 由关系运算符加上运算对象构成关系表达式,如3>=4, 2==a iii. 值:满足相应运算符所指定的关系的值为1,否则为0
? 逻辑表达式
i. 逻辑运算符:&&(且) , ||(或) , !(非)
ii. 由逻辑运算符加上运算对象构成逻辑表达式,如3&&4, x||!y iii. 值:满足相应运算符所指定的关系的值为1,否则为0
iv. 进行 ||或 运算时,若||左边的表达式值为1,则不再对右边的表达式v. 进行运算。 进行 &&且 运算时,若&&左边的表达式值为0,则不再对右边的表达式
进行运算。
? 逗号表达式
i. 逗号运算符: ,
ii. 用逗号将各种表达式连续起来构成逗号表达式,如3+4,a=9,8*a
iii. 值:组成逗号表达式的各个表达式中的最后一个的值,如上例为8*a ? 题目:P7—11~17 P8—18~33
五、 输入输出函数
? scanf(“格式控制串”,变量地址表列);
如scanf(“%d%c%d”,&a,&ch,&b); scanf(“%4f”,&x);
注意:
i. 格式控制串可控制截取用户输入的前几个字符给变量,但不能控制输入
几位小数给变量,如不能写成scanf(“%4.2f”,&x);
ii. 第二个参数给的是地址,即要么是&+变量名或数组元素名的形式,要
么就是一个数组名或指针变量名,如int *p,a; p=&a; scanf(“%d”,p); iii. 考试时注意看题目给你写好的scanf的格式
1. 若其格式控制串内各格式符用“,”隔开如
scanf(“%d,%c,%d”,&a,&ch,&b);那输入时也要用逗号隔开,如此例输入时应:3,+,5
2. 若是这种格式scanf(“%d %d”,&a,&b);则输入时应:3 5;
3. 若是这种格式scanf(“%d%c%d”,&a,&ch,&b);则输入时应3+5,若写成3
+ 5则a=3,ch=‘ ’(空格),b=任意值 (自己上机运行看看结果) ? printf(“格式控制串”,输出项表列);
如float x=7.5; printf(“%8.2f”,x);此处的意思是将x打印出来,且占8列,保留两位小数。自己上机运行看看效果。
? 常用格式符汇总:
i. %d:输入输出整型数据,%ld:输入输出长整型数据
ii. %c:输入输出字符型数据
iii. %f:输出单(双)精度浮点型数据,输入单精度型数
据。 %lf:输入双精度型数据
iv. %s:输入输出一个字符串,用printf输出字符串时,输出项书写时可
为字符串常量,或字符数组名。如printf(“%s”,”hello”);或char
str[10]=”hello”; printf(“%s”,str);
%u:输入输出无符号整型,%o:输入输出八进制数, %x:输入输出十六进制数
? getchar();
函数调用后返回用户输入的一个字符,故需再定义一个变量来存放这个字符,即使用时应 char c; c=getchar();意思就是接收用户输入的一个字符,并将其赋值给变量c。
? putchar(字符常量或字符变量名);
如char c=?A?; putchar(c);或putchar(?A?);都会向屏幕输出字符A。 v.
六、 C语言的语句
?
?
?
?
?
? 表达式语句:由表达式末尾加上分号构成。 函数调用语句:由函数调用表达式加上分号构成。 空语句: ; 选择结构语句:if语句 switch语句 循环语句:for语句 while语句 do while语句 复合语句:用花括号{}将以上任意语句括起来构成一条复合语句。
七、 C程序的基本结构
void main()
{ 声明部分:用来定义变量和声明自定义函数的原型,需以“;”结尾,如int x; 执行语句部分:第六点里介绍的各种语句,如x=3;printf(“%d”,x); }
main函数外可写自定义函数。如
int max()
{
return 0;
}
八、 选择结构语句
? if(表达式) 语句1 else 语句2
如果if语句的圆括号内的表达式值为非0,则执行语句1,值为0则执行语句2。
i. 表达式可为任意表达式,if语句执行的实质是判断表达式的值是否为0
来决定执行语句1还是语句2。另外请在此处表达严重关切,不管是高ii. 手还是菜鸟经常会把判断两个数相等的符号“==”写成了一个等号“=”成为了赋值运算,这样的写法不会引发编译错误,但结果会与原意大大不同,所以考试前请再三提醒自己。 语句1和语句2都只能是一个语句,若要跟多条语句,切记用一对{}
括起来,构成复合语句;也不要随便在圆括号后加“;” ,因“ ;”构成一条空语句,这会使后面跟的语句1不再属于if语句的组成部分。 if语句的三种结构
单边: if(表达式) 语句
双边:if(表达式) 语句1 else 语句2
多层 : iii. 1. 2. 3.
if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
…
else 语句n
? 条件运算符 表达式1? 表达式2 : 表达式3
若表达式1的值非0,则取表达式2的值做为整个表达式的值,否则取表达式3的值为整个表达式的值。如 3>4? 1:2 该表达式的值为2
? switch语句
switch(表达式)
{
case 表达式1:语句
case 表达式2:语句
…
case 表达式n:语句
default: 语句
}
语句执行过程:先计算表达式的值,然后判断该值与表达式1到表达式n中的哪个相等,若与表达式i的值相等,则执行表达式i后的所有语句,当遇到break;语句时结束整个switch语句的执行。表达式1到表达式n的值都不相等的情况下执行default后跟的语句。每个case后可跟多条语句。
九、 循环结构
? for循环语句
for(表达式1;表达式2;表达式3) 循环体语句
语句执行过程:
1. 计算表达式1
2. 判断表达式2的值是否为0,若为0,语句执行结束,若不为0,进入
步骤3
3. 执行循环体语句(需注意的是循环体语句只能有一个语句,若要包含多
个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加上 “ ; ”,因一个“;”可构成一条空语句,这会使得后面真正的循环体语句不属于for循环语句的部分)。进入步骤4
4. 计算表达式3,然后重新进入步骤2
? while循环语句 do while循环语句
i. while(表达式) 循环体语句
执行过程:
1. 判断表达式的值是否为非0,若是进入步骤2,否则结束语句执行。
2. 执行循环体语句,重新回到步骤1。
ii. do 循环体语句 while(表达式);
执行过程:
1. 执行循环体语句,进入步骤2
2. 判断表达式的值是否为非0,若是重新回到步骤1,否则结束语句执行。
这里要注意的地方跟for语句一样,即循环体语句只能有一个语句,若要包含多个语句要用一对{}括起来,构成一条复合语句,此处也不要随便加上 “ ; ”,因一个“;”可构成一条空语句,这会使得后面真正的循环体语句不属于while循环语句的部分,另外do while循环的while(表达式)后是要加“;”的。
? break语句:放在循环体内实现的功能是结束其所在的那层循环的执行。
十、 数组
? 定义格式:数据类型 数组名[整型常量];如 int a[10]; 定义了一个整型数
组,数组名为a,这个数组含有10个元素。
? 引用数组元素: 格式:数组名[下标] 切记下标值从0开始。下标可为常
量,表达式,变量等,如int i=3; a[0]=5;a[3*2]=9; a[i]=7;
? 初始化:数据类型 数组名[整型常量]={数据表列};将数据表列的各个值
依次赋值给数组的各个元素。如int a[5]={0,1,2,3,4};则数组a各元素a[0]到a[4]的值分别为0,1,2,3,4
? 遍历数组元素
数组定义后,我们不能对数组进行整体的操作,如int a[10];不能用a=3这样的操作将数组的各元素都赋值为3;而只能一个一个元素的进行赋值,如a[0]=3;a[1]=3;a[2]=3…a[9]=3; 当然此时我们就可以借助于一个for循环来控制下标的变化从而对数组的各个元素进行赋值
for(i=0;i<10;i++) a[i]=3;
当然这只是用for循环遍历数组各元素的最简单的例子,一般考试考的是找出数组元素的某种特性的极值,比如最大值,最小值,或对数组各元素进行排序,这时我们就可以使用for循环来遍历数组的各元素,然后在当前循环中得到一个元素再对其进行处理。如i=2时访问到的元素是a[2],你就可以问问它,你是不是最小值啊。
? 整型数组
int a[10]; 整型数组里的各个元素存放的是整数。a[3]=3;
? 字符型数组
char str[20];字符型数组里的各个元素存放的是字符。 str[3]=?A?; 十一、 字符串函数
? gets(字符数组名或字符指针变量);
如char str[10],* str2; str2=str;则gets(str);或gets(str2);都是接收用户输入的字符串如“ABC”存入到字符数组str中
? puts(字符数组名或字符指针变量或字符串常量);
如char str[10]=”china”; char *str2;str=str2; 则puts(str); 或puts(str2); 或 puts(“china”);都会在屏幕上打印出 china
? strlen(字符数组名或字符指针变量);字符串测长函数
char str[20]=”hello world!”;
int len;len=strlen(str);得出的结果是len的值为12
? strcat(字符串1的地址,字符串2的地址);
将字符串2的内容连接到字符串1的尾部。
char str1[20]=”ABC”,str2[20]=”xyz”;
strcat(str1,str2);
则程序运行的结果是str1内存放的字符串变为ABCxyz,当然str2存放的字符串还是xyz。
? strcmp(字符串1的地址,字符串2的地址);
比较串1和串2哪个比较大。比较大小的依据是,两个字符串从左往右相应位置上第一个不相等的字符ASCII码值之差。
char str1[20]=”ABCE”,str2[20]=”ABDE”;
int i;
i=strcmp (str1,str2);
第一个不相等的字符为str1的‘C’和str2的‘D’,而二者相差-1,故-1做为strcmp函数执行的结果返回到被调用的位置,该位置位于赋值表达式内,故将其值赋值给i,即此时i的值就是-1.
? strcpy(字符串1的地址,字符串2的地址);
将字符串2的内容复制到字符串1内。
char str1[20]=”ABC”,str2[20]=”xyz”;
strcpy(str1,str2);此时str1的内容为”xyz”,当然str2的内容没变
strcpy(str1,”uvw”);此时str1的内容又变成了“uvw“。
十二、 函数
? 函数定义
函数类型 函数名( 形式参数列表 )
{
内部变量定义和声明部分
执行语句
}
如:
int max (int x , int y )
{ int z ;
z= x > y ? x : y ;
return ( z ) ;
}
注意点:
1.函数类型是指返回值的类型,即要与return语句后跟的表达式的值的类型一致。若函数类型为void则说明该函数无返回值,即函数体里不能出现return 语句。
2.形式参数列表里定义的变量要记得给它们指定类型,而且如果同时要定义多个,应在每个前面都分别指定类型名,而不能写成int x,y;
3.函数体里能写的语句跟main函数一样,在开头可定义所需要的变量,后面跟上一堆执行语句。
? 函数调用流程
以上面的函数为例,在main函数进行调用:
void main()
{ int a,b,c;
scanf(“%d%d”,&a,&b);
printf(“%d”,max(a,b));或 c=max(a,b);printf(“%d”,c)以上两种方法
都会在屏幕中打印出a,b间的较大值。
调用函数的格式 函数名(实际参数列表);调用的时候像什么函数类型,形式参数的类型就不要加上去了。max(a,b)中max就是函数名,写上变量名a,b是实际参数列表,执行这个调用语句时,会先把a,b的值给相应位置的形式参数即执行了x=a,y=b这样的操作,然后开始执行max函数的函数体的语句。当max函数体里执行到一个return语句时,则max函数结束执行,将return后的表达式的值返回给main函数调用max函数的那个位置,即若上面a=3,b=5则max(a,b)return后的表达式的值应该是5也就是说执行完max后把5返回到调用max的位置可看成printf(“%d”,5);或另一种解法的c=5。
}
十三、 指针
? 指针变量的声明: 类型名 * 指针变量名;
? 通过指针变量访问它所指向的普通变量的值
先将普通变量的地址赋值给指针变量,再通过指针运算符* 得到普通变量的值。
int *p,x,y;
x=3;
p=&x;
则printf(“%d”,*p);会打印出3即x的值
y=*p;则y的值变为3
*p=5;则x的值变为5
? 指针变量加上(减去)一个位移的效果
若指针变量存入的是数组元素的地址,则其加一减一得到的是那个数组元素下一个或前一个元素的地址。
int a[10]; p=&a[3];
*p得到的是a[3]的值。
若p++;此时p存放的是a[4]的地址&a[4]; *p得到的就是a[4]的值。 或p--;此时p存放的是a[2]的地址&a[2],*p得到的就是a[2]的值。 ? 行指针
i. 主要是对于二维数组来说的,二维数组每行都有自己的地址,第0行地
址用 数组名 表示,第i行地址为 数组名+i;而想要得到二维数组里一个元素的地址,必需先得到其所在行的地址,然后再由那个地址得到元素的地址,比如说 int a[3][4];定义了一个二维数组,该二维数组第0行的地址为a,第1行的地址为a+1,第2行的地址为a+2,想从行的地址得到元素的地址,需在行地址前加上指针运算符“*”,即*a就是第0行首个元素的地址即a[0][0]的地址,而a[0][2]的地址就是在a[0][0]的地址基础上加上位移量2,即*a+2,然后想得到a[0][2]这个元素的值呢就再加上一个指针运算符“*”,即*(*a+2),类似地,想得到a[2][2]这个元素的值呢就是*(*(a+2)+2)
ii. 定义行指针变量: 类型名 (*变量名)[数组长度];
如int (*p)[4],a[3][4]; p=a;此时就可把p当成a来用,用法同上所述。 ? 判断是否合法访问数组元素:若是指针法访问,判断指针后跟的是否地址;
若是下标法访问,判断下标有无越界。
? 函数指针:函数名即为函数的地址(指针)
i. 函数指针变量的定义: 类型名 (*变量名) (形参列表);如 int (*p)(); ii. 赋值:指针变量=函数名;设有个函数其函数名为max,则要将该函数的
地址给p的话只要执行如下语句即可 p = max;
? 指针数组:指针数组的数组元素都是指针变量,是用来存放变量的地址的,
定义格式为 类型名 * 变量名[数组长度]; 如int * p[10];
? 指向指针的指针:指针变量也是一种变量,故在内存中也有对应的一个地址,
而要存放指针变量的地址,就要求助于用来存放指针变量的地址的指针变量,定义格式 类型名 ** 变量名;如 int *p1; int **p2; int a=3;可进行赋值p1=&a; p2=&p1; 则a 、*p1和 **p2的值都是3.
十四、 宏定义
? 无参宏定义 #define 标识符 值 定义后,出现所定义的标识符的地方都
将以定义时指定的值来代替。
#define M 2+3
main()
{ int x;
x=M*M; 则x的值为2+3*2+3=11若想得到的结果是(2+3)*(2+3)则定义时也写成这样 #define M (2+3)
}
注意#define、标识符、值之间都要用空格隔开,且宏定义结尾不需加分号。
附:题型
选择题(本题共20小题,每题1.5分,共30分)
判断题(本题共10小题,每题1分,共10分)
填空题(本题共4小题,每空2分,共20分)
程序设计题(本题共4小题,每题10分,共40分)
练习题
填空题
1、一个C源程序中至少应包含一个[ ] 函数。
2、引用C语言标准库函数,一般要用【 】 预处理命令将其头文件包含进来。
3、当运行以下程序时,从键盘输入-1 0<CR>(<CR>表示回车),则下面程序的运行结果是 。
[ ]
#include<stdio.h>
main()
{ int a,b,m,n;
m=n=1;
scanf("%d%d",&a,&b);
do{ if(a>0) {m=2*n; b++;}
else{n=m+n; a+=2; b++;}
}while(a==b);
printf("m=%d n=%d",m,n);
}
4、运算符%、*=、||、==中,优先级最低的是 。【 】
5、下面程序段的运行结果是 。[ ]
int i=1,a=0,s=1;
do{a=a+s*i; s=-s; i++;} while (i<=10);
printf("a=%d",a);
6、程序main()
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,13};
int (*ptr)[4];
int sum=0,i,j;
ptr=a;
for (i=0;i<3;i++)
for (j=0;j<2;j++)
sum+=*(*(ptr+i)+j);
printf("%d\n",sum);
}
的运行结果是 。【 】
7、int m=5,y=2;则表达式y+=y- =m*=y的值为 。【 】
8、程序# include <stdio.h>
void prtv(int *x)
{ printf("%d\n",++*x);
}
main()
{ int a=25;
prtv(&a);
}
的运行结果为 【 】
9、函数内部可以在复合语句中定义变量,这些变量在【 】 的范围内有效。
10、已有定义 :double x=3.5;, 则表达式 :x=(int)x+1 的值是 。【 】
填空题答案:
(1) 【 main 】 (2) 【 文件包含 】
(3) 【m=4,n=2 】 (4) 【 *= 】
(5) 【 a=5 】 (6) 【 60 】
(7) 【 -16 】 (8) 【 26 】
(9) 【该函数中 】 (10)【 4.0 】
程序设计题
1. 输入一个圆半径(r),当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。
#include <stdio.h>
#define PI 3.14 <stdio.h>
main()
{ float r ,s , l;
printf("please input r:\n");
scanf("%f”,&r);
if (r>=0)
{s=pi*r*r;
l=2*i*r ;
printf("the area is %f\n",s);
printf("the circumference is %f\n",l);}
else
printf("input error!\n");
}
2.输入2个整数,求两数的平方和并输出。
#include <stdio.h>
main()
{ intt a ,b,s;
printf("please input a,b:\n");
scanf("%d%d”,&a,&b);
s=a*a+b*b;
printf("the result is %d\n",s);
}
3. 编程设计一个简单的计算器程序。从键盘输入2个操作数,1个运算符,当运算符为加(+)、减(-)、乘(*)、除(/)时,输出计算结果
#include <stdio.h>
main()
{ int data1, data2; /*定义两个操作符*/
char op; /*定义运算符*/
printf("Please enter the expression:");
scanf("%d%c%d", &data1, &op, &data2); /*输入运算表达式*/
switch(op) /*根据输入的运算符确定要执行的运算*/ { case '+': /*处理加法*/
printf("%d + %d = %d \n", data1, data2, data1 + data2);
break;
case '-': /*处理减法*/
printf("%d - %d = %d \n", data1, data2, data1 - data2);
break;
case '*': /*处理乘法*/
printf("%d * %d = %d \n", data1, data2, data1 * data2); break;
case '/': /*处理除法*/
if (0 == data2) /*为避免出现溢出错误,检验除数是否为0*/ printf("Division by zero!\n");
else
printf("%d / %d = %d \n", data1, data2, data1 / data2); break;
default:
printf("Unknown operator! \n");
}
}
4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
#include <stdio.h>
main()
{
int data;
char grade;
printf("Please enter the score:");
scanf("%d”, &data);
switch(data/10)
{ case 10:
case 9 : grade=’A’; break;
case 8: grade=’B’; break;
case 7: grade=’C’; break;
case 6: grade=’D’; break;
default: grade=’E’;
}
printf("the grade is %c”,grade);
}
5、用循环的方法构造一个5行5列的二维数组,使主对角线上的变量为1,其它为0,并将数组中所有项按行按列显示出来。
main()
{int a[5][5],i,j, s=0;
for(i=0;I<5;i++)
for(j=0;j<5;j++)
if(i= =j) a[i][j]=1;
else a[i][j]=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{if(j= =0) printf(“\n”);
printf(“%d ”, a[i][j]);
}
}
6.求一个3×3矩阵对角线元素之和。从键盘输入矩阵元素的值并输出和的值.
main()
{ int a[3][3],sum=0;
int i,j;
printf("Enter data:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("sum=%d",sum);
}
7、编写程序,交换两个数组中的对应元素。
#include<stdio.h>
#define N 20
main( )
{ int a[N], b[N], i, j, temp;
printf(“please input a:\n”);
for(i=0; i<N; i++)
scanf(“%d”, &a[i]);
printf(“please input b:\n”);
for(j=0; j<N; j++)
scanf(“%d”, &b[i]);
for(i=0; i<N; i++)
{ temp=a[i];
a[i]=b[i];
b[i]=temp;
}
for(j=0; j<N; j++)
printf(“%d,”, a[j]);
printf(“\n”);
for(j=0; j<N; j++)
printf(“%d,”,b[j] );
}
8、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。
#include <stdio.h>
main()
{ int a[4][3], i , j ,min,m,n;
printf("Please enter data:");
for (i=0; i<4; i++)
for (j=0; j<3; j++)
scanf(“%d”,& a[i][j]);
min=a[0][0];
m=0; n=0;
for (i=0; i<4; i++)
for (j=0; j<3; j++) if (a[i][j]<min)
{min= a[i][j];
m=i;
n=j;
}
printf("the min is %d\n, min);
printf("posion is %d %d \n, m,n); }
总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)读程序都要从main(…
好老师重庆市二级C语言基础知识点总结以及题目订正第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;…
浮点数floatx=123.45e-2F;//x的值为1.2345123.45e-2默认为double型3、常量整数是以补码的形式…
二级C语言基础知识点总结第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;2,一个程序的编译是从第…
二级C语言公共基础知识部分知识点总结~来源:吕濛??的日志数据结构与算法1算法算法:是指解题方案的准确而完整的描述。算法不等于程序…
学习C语言的准备知识3)计算机的数据在电脑中保存是以二进制的形式存入,数据存放的位置就是它的地址。4)bit位是指为0或者1。by…
C语言知识点总结C语言知识点总结1一常量2二标识符2三变量2四表达式3五输入输出函数4六C语言的语句5七C程序的基本结构5八选择结…
总体上必须清楚的1程序结构是三种顺序结构循环结构三个循环结构选择结构if和switch2读程序都要从main入口然后从最上面顺序往…
C语言最重要的知识点总体上必须清楚的1程序结构是三种顺序结构选择结构分支结构循环结构2读程序都要从main入口然后从最上面顺序往下…
C语言基础知识重点和难点一数组1一维数组的定义与初始化1不能在方括号中用变量来表示元素的个数但是可以是符号常数或常量表达式例如de…
二级C语言基础知识点总结第一章1,函数是从主函数(main())开始执行,回到主函数(main())结束;2,一个程序的编译是从第…