C语言程序设计复习题.docx
《C语言程序设计复习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题.docx(15页珍藏版)》请在冰豆网上搜索。
C语言程序设计复习题
C语言程序设计复习题
一、选择题
1、C语言中运算对象必须是整型的运算符是()。
A、%B、/C、=D、〈=
2、已定义c为字符型变量,则下列语句中正确的是()。
A、c='97';B、c="97";C、c=97;D、c="a";
3、表达式1,3,5,7的值为()。
A、7B、5C、3D、1
4、一个C程序的执行是从( )
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
5、C语言规定,在一个源程序中,main函数的位置( )
A.必须在最开始B.必须在系统调用的库函数的后面
C.可以任意D.必须在最后
6、算法的表示方法有()。
A.自然语言,传统流程图,N-S流程图,伪代码,计算机语言
B.高级语言,汇编语言,机器语言
C.C语言,QBASIC语言,InterDev
D.图形图像法,描述法,编程法
7、以下选项中不属于C语言的类型的是()
A.signedshortintB.unsignedlongint
C.unsignedintD.longshort
8、在C语言中,合法的字符常量是().
A.'\084' B.'\x43'C.'ab' D.″\0″
9、C语言提供的合法的数据类型关键字是:
()
A.DoubleB.shortC.integerD.Char
10、下列标识中合法的用户标识符为____.
A.yearB.longC.7xyzD.struct
11、若有说明语句:
charc='\72';则变量c().
A.包含1个字符B.包含2个字符
C.包含3个字符D.说明不合法,c的值不确定
12、C语言提供的合法的关键字是( )
A.swicthB.cherC.Case D.default
13、若有定义:
inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为().
A.1.4B.1C.2.0D.2
14、设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为()
A.不定值B.4C.3D.1
15、以下程序的输出结果是().
main()
{inta=-1,b=4,k;
k=(++a<0)&&!
(b--<=0);
printf("%d%d%d\n",k,a,b);
}
A.104B.103C.003D.004
16、已知:
chara;intb;floatc;doubled;
则表达式2+a+9*b*5*c-5*d的结果是____。
(A)
A.doubleB.intC.floatD.char
17、以下运算符中优先级最低的是(C).
A.&&B.&C.||D.|
18、设正x、y均为整型变量,且x=10y=3,则以下语句的输出结果是
printf("%d,%d\n",x--,--y);(D).
A.10,3B.9,3C.9,2D.10,2
19、以下程序的输出结果是(D).
main()
{ intx=10,y=10;
printf("%d%d\n",x--,--y);}
A.10,10 B.9,9C.9,10D.10,9
20、已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!
y)的值是(C).
A.0B.语法错C.1D.“假”
21、表示关系X<=Y<=Z的C语言表达式为(A)。
A.(X<=Y)&&(Y<=Z)B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z)D.(X<=Y)&(Y<=Z)
22、在C语言中,逻辑值"真"用(D )表示.
A.TRUEB.大于0的数C.非0的整数D.非0的数
23、以下程序输出结果是().
main( )
{intm=5;
if(m++>5)printf("%d\n",m);
else printf("%d\n",m--);
}
A.7B.6C.5D.4
24、请读程序:
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序输出结果是(A)..
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=0
25、设x为int型变量,则执行以下语句后,x的值为(B).
x=10; x+=x-=x-x;
A.10B.20C.40D.30
26、下面的程序(D )。
#include
main()
{intx=3,y=0,z=0;
if(x=y+z)printf(”****”);
elseprintf(”####”);
}
A.有语法错误不能通过编译
B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行
D.输出####
27、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为:
(B).
A.0B.1C.2D.3
28、为表示关系x≥y≥z,应使用C语言表达式(A).
A.(x>=y)&&(y>=z)
B.(x>=y)AND(y>=z)
C.(x>=y>=z)
D.(x>=y)&(y>=z)
29、若有定义:
floatw;inta,b;则合法的switch语句是(D).
A.switch(w){case1.0:
printf("*\n");case2.0:
printf("**\n");}
B.switch(a);{case1printf("*\n");case2printf("**\n");}
C.switch(b){casea:
printf("*\n");default:
printf("\n");caseb:
printf("**\n");}
D.switch(a+b){case1:
printf("*\n");case2:
printf("**\n");default:
printf("\n");}
30、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B).
if(x>y)
z=x;x=y;y=z;
A.x=10,y=20,z=30B.x=20,y=30,z=30
C.x=20,y=30,z=10D.x=20,y=30,z=20
31、以下程序的输出结果是().
main()
{intx=2,y=-1,z=2;
if(x if(y<0)z=0;
else z+=1;
printf("%d\n",z);
}
A.3B.2C.1D.0
32、请阅读以下程序:
#include
main()
{floatx,y;
scanf("%f",&x);
if(x<0.0)y=0.0;
elseif((x<5.0)&&(x!
=2.0))
Y=1.O/(x+2.0);
elseif(x<10.0)Y=1.O/x;
elsey=10.0;
printf(”%f\n”,y);
}
若运行时从键盘上输入2.0(表示回车),答案是:
(C)
A.0.000000B.O.250000C.O.500000D.1.000000
33、设有程序段
intk=10;
while(k=0)k=k-1;
则下面描述中正确的是________
A.while循环执行10次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
34、执行语句for(i=1;i++<4;);后变量i的值是(C).
A.3B.4C.5D.不定
35、下面程序段的运行结果是(A).
a=1;b=2;c=2;
while(a
printf("%d,%d,%d",a,b,c);
A.1,2,0B.2,1,0C.1,2,1D.2,1,1
36、以下程序的输出结果是(C).
main()
{inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A.258B.741C.852D.369
37、下面程序的输出结果是( D )。
#include
main()
{intk,j,m;
for(k=5;k>=1;k--)
{m=0:
for(j=k;j<=5;j++)
m=m+k*j;
}
printf(”%d\n”,m);
}
A.124B.25C.36D.15
38、若二维数组a有m列,则在a[i][j]之前的元素个数为( B )。
A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1
39、下列程序的输出结果是().
main()
{ints[][3]={{1,2,3},{4,5,6}};
intt;
t=(s[0][0],s[1][1],s[0][1]+s[1][2]);
printf("%d\n",t);
}
A.5B.6C.7D.8
40、设有数组定义:
chararray[]=”China”;,则数组array所占的空间为( C )。
A.4个字节B.5个字节C.6个字节D.7个字节
41、以下程序的输出结果是(C).
#define f(x) x*x
main( )
{ int a=6,b=2,c;
c=f(a)/f(b);
printf("%d\n",c);
}
A.9B.6C.36D.18
42、以下程序的输出结果是(C).
main()
{charch[3][4]={"123","456","78"},*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
}
A.123456780B.123456780C.12345678D.147
43、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是().
A.x||yB.x|yC.x&yD.x^y
44、以下只有在使用时才为该类型变量分配内存的存储类说明是().
A.auto和staticB.auto和register
C.register和staticD.extern和register
45、下述程序的输出结果是( )。
#include
longfun(intn)
{longs;
if(n==1||n=:
2)
s=2:
else
s=n+fun(n-1);
retums;
}
main()
{
printf(”\n%ld”,fun(4));
} .
A.7B.8C.9D.10
二、判断题
1.C语言本身没有输入输出语句,输入输出操作都是通过调用库函数来实现的。
()
2.在C语言中,int、char和short三种类型数据在内存中所占用的字节数都是由用户自己定义的。
()
3、在if语句中,if子句与else子句都可以单独使用,构成了if语句的两种缺省形式。
()
4、for语句作为循环控制语句时,其括号内各个表达式及其后的分号都可缺省。
()
5、C程序中函数不可以嵌套定义但可以嵌套调用。
()
6.C语言中while和do-while循环的主要区别是while语句的循环体至少会被执行一次,而do-while语句的循环体则可能一次也不执行。
()
7.数组首地址不仅能通过数组中第一个元素的地址表示,也可以通过数组名来表示。
()
8.在C语言中,只有在两个字符串所包含的字符个数相同时,才能比较大小。
如字符串“That”与“The”就不能进行大小比较。
()
9、C程序可以由若干个源文件组成,因此最小的功能单位是源文件,最小编译单位的是函数。
()
10、C程序有三种结构化程序设计方法,分别顺序结构、选择结构和循环结构。
()
11.在C程序中一行内可以写几个语句,一个语句可以分写在多行上。
因此,并不是每一条C语句都必须有一个分号的。
()
12.在C语言的if语句中,用作条件判断的表达式只能是关系和逻辑表达式。
()
13.在C语言中break和continue都是循环中途退出语句,其中break语句用来跳出一层循环结构;continue语句用来结束一次循环。
()
14、字符串可以用来给数组赋值,在C程序的执行语句中可以直接用字符串给数组名赋值。
()
15、数组名也可作为函数参数使用,此时数组名代表数组的起始地址。
()
16、在函数内的复合语句中定义的变量在本函数范围内有效。
()
17、函数的返回值类型是由函数的类型和return语句中表达式的类型共同决定的,当这两类型不一致时最终起决定作用的是return中表达式的类型。
()
18、定义指针变量时指定的类型称为基类型,基类型是指针变量所指向变量的类型,因此指针变量被定义之后都只能指向某一类型的变量。
()
三、填空题:
1、语句可以用来从循环体内跳出循环体;语句则用来结束本次循环。
2、可以用来表示C语言的整型常数的进制是、、。
3、任何C语句必须以结束,C语言中的空语句就是【2】。
4、输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。
请填空:
main()
{charch;
scanf(“%c”,&ch);
if()ch=ch+32;
elseif(ch>’a’&&ch<‘z’)();
printf(”%c\n”,ch);}
5、以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。
请填空:
main()
{inta[3][4]={{7,5,-2,3},{1,0,-3,4},{6,8,0,2}};
intb[3][4]={{5,-1,7,6},{-2,0,1,4},{2,0,8,6}};
inti,j,c[3][4];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
c[i][j]=;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf(“%3d”,c[i][j]);
;}
}
6、下面程序可求出1~1000的自然数中所有的完数(因子和等于该数本身的数)请填空。
main()
{intm,n,s;
for(m=2;m<1000;m++)
{__;
for(n=1;n<=m/2;n++)
if(__)s+=n;
if(_)printf(“%d\n”,m);}}
7、用起泡法对十个数由大到小排序。
main()
{inta[11],i,j,t;
printf(“input10numbers:
\n”);
for(i=1;i<11;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=1;j<=9;j++)
for(i=1;__;i++)
if(__)
{t=a[i];a[i]=a[i+1];__;}
printf(“thesortednumbers:
\n”);
for(i=1;i<11;i++)
printf(“%d”,a[i]);
}
三、编程题:
1.编程计算1至50中是7的倍数的数值之和。
__#include
intmain(void)
{
inti,a;
for(i=1;i<=50;i++)
{
a=i%7;
if(a==0)
printf("%d");
}
return0;
}
2.判断一学生的成绩的成绩等级,若大于90分,则输出该学生成绩优秀A+,介于80与89之间则认为成绩良好A,介于79至70之间认为成绩中等B,介于60和69之间则是及格C,否则认为成绩不及格D。
(6分)
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
______
3.把输入的整数(最多不超过5位)按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。
#include
main()
{intn=1,m=0,k,mod_mn=1;/*此句的为什么n=1,m=0,k,而mod_mn=1;*/
printf(“PleaseInputmvalue:
\n”);
scanf(“%d”,&m);
n=1;
for(k=0;;k++)
{mod_mn=m/(n*10);
printf(“%d”,(m-mod_mn*n*10)/n);
if(mod_mn==0)break;
n*=10;
}
}
4.编写一个程序,打印杨辉三角形(如下所示,要求打印10行)
1
11
121
1331
14641
15101051
……
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________