1、二级 C 语言考试复习资料1、 找出 1100 中其各位数的乘积大于各位数的和的所有整数#include“stdio.h“main() int k=1,s=0,m,n;printf(“n“);for(n=1;ns 2、 编程实现:学校买校服小于 50 套 90 元一套元一条,超过 50 套 80 元一套,单件上衣60 元一件,裤子 45 元一条,现需购买 M 套上衣,N 套裤子,共需多少钱?#include“stdio.h“main() int m,n,s,k;printf(“please input the clouth numble:m and the shirt numble:nn“);
2、scanf(“%d,%d“,if (m=n) if(m50) s=80*m;s=90*m; if(mn)k=m-n;if (n50) s=80*n+k*60;else s=90*n+k*60;elsek=n-m;if(m50) s=80*m+k*45;else s=90*m+k*45;printf(“s=%d“,s);3、 如果 a=1,b=2,c=0,k=2 写出表达式 k0);结果是 9630(4)main()int a=6,b=5;printf(“%d“,a%=(b%=2); 结果是 0(5)#define P x+xmain()int x=5,y;y=P*P;printf(“%d“,y
3、);结果是 35(6)main()int a=12,b=12;printf(“%d %d”,-a,+b) 结果是 11 13(7)main()int a=2,b=3,c;c=1.0/b*a;printf(“n%d“,c); 结果是 0 和下面程序对比有什么不同main()int a=2,b=3;float c;c=1.0/b*a;printf(“n%f“,c);(8)main()int y=10;while(y-);printf(“y=%d”,y); 结果是 -1(9)int f( int x)static int m=0;m+=2;return (m+x);main()int i;for (
4、i=1;ivoid main(void)int x=10,*p;p=printf(“%d”,*p);结果是 1012)#includevoid main(void)int i,s=0;for(i=1;i#define sub(x,y) x-yvoid main(void)int x,y,z;x=4;y=3;z=12-sub(x,y);printf(“z=%d”,z);结果是 513)#includevoid main(void)int i,s,d10=21,33,45,7,3,113,67,75,83,26;s=0;for(i=0;ivoid main(void)int x,/*p;p=*p=
5、100;printf(“%d,x);结果是 10015)#includevoid main(void)int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;printf(a=%d,b=%d”,a,b);结果是 a=2,b=116)#includevoid main(void)int x,*p;x=3;p=*p*=10;printf(“x=”,x);结果是 x=3017) a=10;b=0;do b+=2;a-=2+b; while(a=0);执行次数是 31
6、2 编程实现去掉一个英语句子中多余空格main()char c80=“ I am 16.“;int flag=0,i=0;for(i=0;ci!=0;i+)if(ci!= ) printf(“%c“,ci);flag=1;else if(ci= flag=0;13、编程实现输入一组数,输出偶数include“stdio.h“#include“math.h“main()int i,j,a10,b10;for(i=0;iaj) min=j;t=ai;ai=amin;amin=t;for(i=1;iaj+1)t=aj;aj=aj+1;aj+1=t;main()int i ;char a20;gets
7、(a);sort(a);puts(a);17、在一组有序数中插入一个数后仍然有序main()int a11=1,10,20,30,40,50,60,70,80,90;int x,n,end,i;printf(“please insert data:n“);scanf(“%d“,if(xa9) a10=x;elsen=0;while(xan)n+;for(i=10;in;i-)ai=ai-1;an=x;for(i=0;i=a max=data1;for(i=2;ivoid main(void)int day,x1,x2;day=0;x1=1020;while(x1)x2=x1/2+2;x1=x1
8、-x2;day+;printf(;day=%d”,day);22编写代码:计算 1 至 50 中能被 7 整除的所有自然数的和,将代码以 cfile.cpp 为名保存在 C:GATDoc 目录中23从键盘中输入三个整数 a,b,x,判断 x 是否等于 a,b 之和,将代码以 cfile.cpp 为名保存在C:GATDoc 目录中20、选择题1) 下列算术运算符中,只能用于整型的是( D)A - B. + C. / D. %2)判断字符串 ab 是否相等应当使用( D )Aif (a=b) B.if (a=b) C.if (strcpy(a,b) D.if (strcmp(a,b)3)有 int
9、 k=7,x=12;则能使值为 3 的表达式是( C )A. x%=(k%=5) B. x%=(x-k%5) C.x%=k+k%5 D.(k%=5)-(x%=k)4)已知 int a;float i=2;下列合法的语句是( )A. a=1 B. +i; C.a=a+=5; D.a=int(i);5)在 C 语言中合法的字符常量是 (B)A 084 B x48 C.”48” D. 486)下面关于 switch 和 break 语句说法正确的是(B )A. break 是 switch 的一部分;B. 在 switch 中可根椐需要使用和不使用 break 语句;C. 在 switch 中必须使
10、用 break 语句;D. 以上三个结论有两个是正确的7)能正确表示 a 和 b 同时为正或同时为负的逻辑表达式是(D)A. (a=0| b=0)int name;std,*p;p=A. std.id B. *p.id C. (*p).id D. p-id21)下列运算符中优先级最高的是(b) 。A. void main(void)int c;while(c=getchar()!=n)switch(c-2)case 0:case 1: putchar (c+4);case 2: putchar (c+4); break;case 3: putchar (c+3);default: putcha
11、r (c+2);break;printf(“n“);A. 668977 B. 668966 C. 66778777 D. 6688766.24)对 for(表达式 1; ;表达式 3)可理解为(b) 。A. for(表达式 1;0;表达式 3) B. for(表达式 1;1;表达式 3) C. for(表达式 1;表达式1;表达式 3) D. for(表达式 1;表达式 3;表达式 3)25)在访问一个结构元素前你必须定义(B)A、结构体 B、结构体变量 C、定义结构指针 D、A 和 B26)下列关于 if 语句说法正确的是Aif 语句的控制条件必须用园括号括起来。Bif 语句只能处理一个分支
12、Cif 语句的子语句不可以再是 if 语句Dif 语句不可以带 elxe 分支27)整型变量的取值范围是A.065535 B.032767 C.-3276732768 D.-327683276728)在一批含有许多相同数据 100 的有序数据中采用二分查找法找到数据 100 的位置是(d)A.是位于最后面的B.多数情况下是位于首尾之间的C.是位于最前面的D.是位于正中间的29) 以下能正确定义整型变量 x, y 和 z 并为其赋初值 5 的语句是( )Aint x=5,y=5,z=5;B.int x,y,z=5;C.x=y=z=5;D.int x=y=z=5;30)下面关于 switch 语句
13、中 case 所携带常量的叙述中正确的叙述是( )A.每个 case 所携带的常量不能是零B.case 所携带常量不能是实数C.case 所携带常量必须介于 19 之间D.case 所携带常量不能是负数31)以下运算符中优先级啊高的运算符是(C)A+ B.- C.* D.0 下面关于数据输出宽度控制的叙述中正确的叙述是()A%-md 按 m 列左靠齐输出数据 B. %-md 按 m 列右靠齐输出数据 C. %md 按 m 列居中输出数据 D. %-md 按 m 列左靠齐输出数据47)若有说明语句:char ch1=065;则 ch1 中含有(C )个字符。A2 B. 3 C. 1 D. 448
14、)若有以下说明和语句则对结构体变量 std 中成员 id 的引用方式正确的是( C)struct work int id;int name;std;Astd-id; B. id C. std.id D. (*std).id49)设有语句如下:int =5,y;y=x/3;则 y 的值是(D)A1.6 B. 2 C. 1.666666 D. 150)已知字母 A 的 ASC码的值为 65,变量 ch1 为字符型,则执行语句 ch1=A+6-3后ch1 中的值是(D )A C B. 一个不确定值 C. 65 D. D51.以下下运算正确的程序段是(C)A.char str1=”12345”,str
15、2=”abcdef”;strcpy(str1,str2);B. char str 10,*st=”abcdef”;strcat(str,st);C. char *st1=”12345”,*st2=”abcde”;strcat(st1,st2);D. char str 10=”,*st=”abcde”;strcat(str,st);52.下面关于文件的叙述中正确的叙述是(A ) 。A无论按照何种方式打开文件,对其处理完毕后都应关闭。B按照“写”方式打开的文件如果未写入数据则可以不关闭。C按照“随机”方式打开的文件可以不关闭。D按照“读”方式打开的文件可以不关闭。53已知:int i=6,j;则执
16、行语句 j=+i+(i+)后 j 的值是(C) 。A16 B.15 c.14. D.1254. 两个类型相同的指针变量不能进行运算的运算符是(C) 。A. - B.+ C.+ D.*55.若有定义:int k=7;float a=2.6,b=4.7;,则表达式 a+k%3 的值是( D)A. 4 B.3 C.3.2 D.3.656.设有语句如下:int x=3,y=0;则下面表达式为 1 的是(B)A.xfor(i=1;imain()char s80;int i,j;gets(s );/*输入字符串*/j=(0 );/*计数器初始化*/for(i=0;si!=0;i+)if(si!=c)sj=
17、si;j+;sj=0;/*写入字符串结束标志*/puts(s);20.下面程序的功能是输出数组中相邻两个数的和能被 10 整除的所有“数对”以及“数对”的个数如:对于下面的数组:d=1.3,7,23,3,6,14,8,10将输出(3,7) (7,23) (6,14) 3 对#includemain()int d=1,3,7,23,3,6,14,8,10,57,13,90;int i,cout,s;count=(0 );/*count 为“数对”的个数计数器*/for(i=0;i#define MUL(x,y) x*ymain()int x,y,z;x=3;y=4;z=120/ MUL(x,y)
18、;printf(“%d”,z);23. 以下程序的运行结果是:(sum=25,i=11)#includemain()int i=1,sum=0;while(iint f(int x);void main(void)int a=1,k;for(k=0;kn,mj m=m-n,转(1) ;(3)若 nm,则 n=n-m,转(2)#include#includevoid main(void)int m,n;scanf(“%d%d”,m=abs(m);n=abs(n);if(!m if(!m)printf(“最大公约数是:%d”, n);return;if(!n)printf(“最大公约数是:%d”,
19、 m );return;while( m else n-=m;printf(“%d”,n);29.有一个形如 aabb 的四位数 n,如 2233,7744 等,且 n 是一个完全平方数,请求出满足条件的四位数 n.#includevoid main(void)int n,x;int n1,n2,n3,n4;for(x=32;xwp)p+;for(i=n;ip;i-)wi=wi-1 ;wp =x;n+;return n;31.在 C 语言中,最大的整型数是( 32767)32.设 x=10100011,若要通过 x=y 使 x 的高 4 位取反,低 4 位不变,则 y 的二进制数是(11110
20、000)33.若 x=0123,则表达式 5+(int)(x)count=max=0 ;/*count 为数字零的个数计数器具 */scanf(“%d”,if(n0)n=-n;dot=n%10;/*分离出 n 的个位*/if(t=0)count+;/*找到数字零,计数器增 1*/if(maxt)max=t;/*刷新最大值*/n/=10;while(n );printf(:count=%d,max=%d”,count,max);41.打开磁盘文件的函数名是(fopen)42若 a 是 int 型变量,则下列表达式是值是(26) 。(a=4*5,a*2),a+643.变量名的第一个字符必须是字母或
21、下划线。44.在 C 语言中,最小的整型数是 (-32768).45.数组是一批具有(相同数据)类型的数据之集合。46注释语句必须以/*开头,以( */)结束。47 则赋值语句 x+y=z; 是非法的。 (A )A.正确。B.错误。4).使用宏来代替与其功能相同的函数可以提高程序的运行速度。 (A)A.正确。B.错误。5).在 switch 语句中必须使用 break 语句。 (B )A.正确。B.错误。6).有定义 int *p,则*p 是 p 所指向的变量,p 是指针变量。 (A )A.正确。B.错误。7).for 循环只能用于循环次数已经确定的情况。 (B)A.正确。B.错误。8).若以
22、 “a+“方式打开一个已经存在的文件,则原有文件的内容不被删除,位置指针移到文件尾部,可以添加和读取数据。 (A )A.正确。B.错误。9).int a3=1,0,1,1,1 是对二维数组 a 进行正确初始化的语句。 (A )A.正确。B.错误。10).若 fp 是指向某文件的指针,并且已读到某文件的末尾,则函数 feof(fp)的返回值是EOF。 (B )A.正确。B.错误。11)算术运算符的优先级要高于关系运算符的优先级.(A)A.正确。B.错误。12)break 语句不能用于循环语句和 swtich 语句之外的任何其他语句中(B)A.正确。B.错误。13)简单的 C 语言程序不需要主函数
23、(B)A.正确。B.错误。14)C 语言中,不同类型的变量可以进行混合运算(A)A.正确。B.错误。15)当数组作为函数的实参时,将整个数组的值复制到与之对应的形参中.(B)A.正确。B.错误。16)语句 x-=y+8 等价于 x=x-y+8.(B)A.正确。B.错误。17)while 循环是先判断条件 ,后执行循环体.(A)A.正确。B.错误。18)数据的集合称为数组.(B)A.正确。B.错误。19)关系表达式的值可以作为整数参与运算.(A)A.正确。B.错误。20)使用指针参数的任何函数被调用时,必须在作为实参的变量之前加上地址运算符(A)A.正确。B.错误。21)x!=0 等价于 x=1(B)A.正确。B.错误。22)在循环语句中使用 break 语句可以终止循环。(A)A.正确。B.错误。23) 字符数组中的一个元素存放一个字符。(A)A.正确。B.错误。24)c 语言运算符可以分为单目、双目和三目运算符三类。(A)A.正确。B.错误。25)在 C 语言中,每行只允许写一条语句 (B)A.正确。B.错误。26)循环体若包含两个及两个以上的语句,就当用大括号括起来。(A)A.正确。B.错误。27)在对数组进行初始化时,可以只对部分数组元素赋初值。(A)A.正确。B.错误。28)