《C语言程序设计》复习题Word文档格式.docx
《《C语言程序设计》复习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》复习题Word文档格式.docx(39页珍藏版)》请在冰点文库上搜索。
![《C语言程序设计》复习题Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/202915ae-ed5c-4266-9374-1e48d82e29a7/202915ae-ed5c-4266-9374-1e48d82e29a71.gif)
floatx=-3;
执行语句y=x%2;
后,则变量y的值是【4】。
①1 ②-1 ③0 ④语句错误
11.不能进行++和――运算的数据类型是【3】。
①int型 ②long型 ③double型 ④指针型
12.若有定义:
intx;
要将x强制转换为双精度型,应该写成【3】。
①x(double)②(x)double③(double)x④double(x)
13.已知:
#defineN3;
执行语句i=N*3;
后,i=【3】。
①3②6③9④①、②、③都不是
14.C语言的编译系统对宏命令是【4】
①在程序运行时进行代换处理 ②在程序连接时进行代换处理
③和源程序C语句同时进行编译 ④在源程序C语句编译前进行处理
15.已知:
inta=5;
执行以下的程序段后输出结果为【1】。
Do
{printf(“%d\n”,a--);
}while(!
a);
①5②4③陷入死循环 ④54321
16.执行语句for(i=0;
i++<
3;
);
变量i的值是【3】。
①2②3③4④5
17.下列程序运行后的输出结果为【10】。
#include<
stdio.h>
main()
{inti,j,x=0;
for(i=0;
i<
2;
i++)
{x++;
for(j=0;
j<
=3;
j++)
{if(j%2)continue;
x++;
}
printf("
x=%d\n"
x);
}
①x=4 ②x=8③x=6④x=12
18.以下程序的输出结果是【4】。
#include"
stdio.h"
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;
j=a++;
k=b;
i=%d,j=%d,k=%d\n"
i,j,k);
①i=2,j=1,k=3②i=1,j=1,k=2
③i=4,j=2,k=4④i=1,j=1,k=3
19.以下程序的输出结果是【2】。
#include<
f(char*s)
{char*p=s;
while(*p!
='
\0'
)p++;
return(p-s);
{printf("
%d\n"
f("
ABCDEF"
));
①3②6③8④0
20.以下程序的输出结果是【1】。
#include"
#definePW(x)x*3
{inta=20,b;
b=PW(a+10);
%d\n"
b);
①50②90③70④110
二.判断题(下列各题,你认为正确的,请在题中的括号内打“√”,错的打“╳”。
每题1分,共10分)
1.For循环只能用于循环次数已经确定的情况。
【╳】
2.数组的大小是固定的,但可以有不的类型的数组元素。
3.C语言中规定函数的返回值的类型由在定义该函数时所指定的函数类型所决定。
【√】
4.定义函数时,形参的类型说明可以放在函数体内。
5.在不同函数中可以使用相同名字的变量。
6.函数可以嵌套定义,即在一个函数的内部可以定义另一个函数。
7.字符“\0”是字符串的结束标记,其ASCII代码为0。
8.指向同一数组的两指针p1、p2相减的结果与所指元素的下标相减的结果是相同的。
9.存放地址的变量同其它变量一样,可以存放任何类型的数据。
10.在说明一个结构体变量时系统分配给它的存储空间是该结构体中最后一个成员所需存储空间。
三.填空题(每空2分,共20分)
1.若x=1,y=2,z=3,则表达式z+=++x+y++之值为7。
2.若有定义inty=3;
floatz=5.2,x=4.8;
则表达式y+=int(x)+x+z之值为17。
3.若x=2,y=3,则x%=y+3之值为2。
4.表达式a=(b=8)/(c=2)之值为4。
5.i为int型变量,且初值是2,有表达式++i3,则该表达式的值是0,变量i的值是3。
6.若a=1,b=2,c=3,则执行表达式(a>
b)&
&
(c++)后,c的值为3。
7.执行循环结构或switch结构中的break语句能够立即退出该结构。
8.直接或间接调用自身的函数称为 递归 函数。
9.使用两个下标的数组称为 二维 数组。
10.有三种值可用来初始化指针,它们是 0 、 变量地址 和 其他的指针 。
四.阅读程序,写出运行结果。
(每题5分,共25分)
1.下列程序运行结果是【d=20】。
#include<
{inta,b,c,d,x;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15;
elsex=25;
printf(“d=%d\n”,d);
2.下列程序运行结果是【x=10,y=30】。
{
inta=10,b=4,c=5,x,y;
x=++a-c+b++;
y=18+(b=4)*3;
x=%d,y=%d\n"
x,y);
3.下列程序运行结果是【frist,third】。
intx=1,y=0;
switch(x)
{
case1:
switch(y)
case0:
first\n"
break;
second\n"
case2:
third\n"
4.下列程序运行结果是【-1】。
#include<
{intn=4;
do
n--;
while(n);
--n);
5.下列程序运行结果是【432】。
dec()
{staticintx=5;
x--;
%d"
x);
{intk;
for(k=0;
k<
k++)
dec();
五.程序填空(请依题意,将程序中括号部分补充完整。
每题3分,共15分)
1.一个正整数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。
#include<
main()
intn;
n=1;
while
(1)
n=n+1;
if(((n+3)%5==0)&
((n-3)%6==0))break;
n=%d"
n);
2.将两个字符串合并成一个字符串。
chars1[20],s2[20],s3[40];
inti,j;
String1:
"
gets(s1);
String2:
gets(s2);
for(i=0;
s1[I]!
=’\0’;
i++)
s3[i]=s1[i];
for(j=0;
s2[j]!
='
;
j++)
s3[i+j]=s2[j];
s3[I+j]=’\0’;
String3:
%s\n"
s3);
3.程序中,find函数的功能是:
在N行M列的二维数组中,选出一个最小值作为函数值返回,并通过形参传回此最小值所在的列下标。
#defineN3
#defineM3
find(inta[N][M],int*n)
inti,j,row=1,colum=1;
N;
M;
if(a[i][j]<
a[row][colum]){row=i;
colum=j;
}
*n=colum;
return(a[row][colum]);
a
inta[N][M]={9,11,23,6,31,15,3,17,25},max,n;
max=find(a,&
n);
max=%d,line=%d\n"
max,n);
六.编程题(10分)
求ijk+kji=1333的i、j、k的程序i、j、k是1位的整数。
inti,j,k;
i<
10;
i++)
j<
if((i*100+j*10+k+k*100+j*10+i)==1333)
%d%d%d\n"
i,j,k);
i=10;
j=10;
}_
(二)
1.在C语言中,不同类型数据混合运算时,要先转换成同一类型后进行运算。
设一表达式中包含有int、long、unsigned、char类型的变量和数据,则表达式最后的运算结果是【4】类型数据。
①int②char③unsigned ④long
2.若int型数据占2个字节,则以下语句的输出为【4】。
intk=-1;
printf(“%d,%u\n”,k,k);
①-1,-1②-1,32767③-1,32768④-1,65535
3.设x和y均为int型变量,则执行以下语句后的输出为【1】。
x=15;
y=5;
printf(“%d\n”,x%=(y%=2));
① 0 ② 1③ 6④ 12
4.若x为unsignedint型变量,则执行以下语句后的x值为【4】。
x=65535;
printf(“%d\n”,x);
①65535②1
③无定值④-1
5.判断char型变量c1是否为小写字母的最简单且正确的表达式为【4】。
①’a’<
=c1<
=’z’②(c1>
=a)&
(c1<
=z)
③(‘a’<
=c1)||(‘z’>
=c1)④(c1>
=’a’)&
=’z’)
6.以下不正确的if语句是【3】。
① if(x>
y);
②if(x==y)x+=y;
③if(x!
=y)scanf(“%d”,&
x)elsescanf(“%d”,&
④if(x<
y){x++;
y++;
7.C语言对嵌套if语句的规定是:
else总是与【4】配对。
①其之前最近的if②第一个if
③缩进位置相同的if④其之前最近且不带else的if
8.设有说明语句:
inta=2,b=7,c=5;
则执行以下语句后,输出为【2】。
switch(a>
0)
{
case1:
switch(b<
{case1:
printf(“@”);
printf(“!
”);
case0:
switch(c==5)
{case0:
printf(“*”);
printf(“#”);
default:
printf(“$”);
printf(“&
①@#&
②#&
③*&
④$&
9.若有说明语句:
intw=2,x=3,y=3,z=4;
则表达式w>
x?
w:
z>
y?
z:
x的值是【1】。
① 4② 3③ 2④ 1
10.下面有关for循环的正确描述是【4】。
1for循环只能用于循环次数已经确定的情况
2for循环是先执行循环体语句,后判定表达式
3在for循环中,不能用break语句跳出循环体
4for循环体语句中,可以包含多条语句,但要用花括号括起来
11.C语言中函数返回值的类型是由【2】确定的。
①return语句中的表达式类型②定义函数所指定的函数的类型
③调用函数时临时④调用该函数的主函数类型
12.在一个源文件中定义的全局变量的作用域为【1】。
①源文件的全部范围②本程序的全部范围
③本函数的全部范围④从定义该变量的位置开始至本文件尾
13.若只想对文本文件进行读操作,打开此文件的方式为【1】。
①”r”②”w”③”a”④”rd”
14.以下程序的运行结果是【1】。
#include“stdio.h”
{inti;
for(i=1;
=5;
{if(i%2)printf("
*"
elsecontinue;
#"
printf("
$\n"
①*#*#*#$②#*#*#*$③*#*#$④#*#*$
15.以下程序的运行结果是【1】。
main()
while(n--)
printf(“%d”,--n);
①20②21③32④43
16.下面程序的输出是【4】。
#include“stdio.h”
main()
{intx=3,y=6,a=0;
while(x++!
=(y=1))
{a+=2;
if(y<
x)break;
x=%d,y=%d,a=%d\n"
x,y,a);
①x=4,y=4,a=1②x=5,y=5,a=1
③x=5,y=4,a=3④x=5,y=4,a=2
17.下列程序运行后的输出结果为【2】。
#defineADD(X,Y)XY
{inta=3,b=6;
printf(“%d\n”,ADD(a++,b++));
①.12②18③16④20
18.下列程序运行后的输出结果为【3】。
chlen(char*s)
=‘\0’)p++;
return(ps);
{printf(“%d\n”,chlen(“Hello!
”));
①3②8③6④0
19.以下for语句构成的循环执行【3】次。
#defineN2
#defineMN+1
#defineNUM(M+2)*M/3
intk,n=0;
for(k=1;
=NUM;
n++;
\n"
getchar();
①8②6③10④9
20.以下程序的输出结果是【3】。
{
intnum;
for(num=0;
num<
=2;
num++)
printf(“%d”,num);
①1②123③012④1234
1.C程序中,有调用关系的所有函数不一定放在同一个源程序文件中。
2.C语言中规定函数的返回值的类型是由在定义该函数时所指定的函数类型所决定。
3.C程序文件中每个函数都将被本文件调用。
4.若有说明:
inta[][3]={1,2,3,4,5,6};
,则a[1][2]的初值为2。
5.若有说明:
staticinta[2][5];
,则数组a中各元素可在程序的编译阶段得到初值0。
6.存放地址的变量同其它变量一样,可以存放任何类型的数据。
7.设chars[10];
*p=s;
则s=p+s;
是正确的表达式。
8.指针变量可用于保存同类型变量的地址值。
9.在一个函数中,不允许定义与结构体类型的成员相同名的变量。
10.当已存在一个abc.txt文件时,执行函数fopen(“abc.txt”,”r+”)的功能是打开abc.txt文件,可以读取和写入新的内容。
三.填空题(每题2分,共20分)
1.C语言中,double型数据在内存中占用【8】个字节来存储。
2.已知:
charch=’A’;
则下列表达式的值是【a】。
ch=(ch>
=’A’&
ch<
=’Z’)?
(ch+32):
ch;
3.在C语言中,规定标识符只能由字母、数值或下划线三类字符组成,且第一个字符必须为【字母】或【下划线】。
4.将下列代数式写成C表达式【(x-y)*(x-y)*((a+b)/(a-b))】。
5.i为int型变量,且初值是3,有表达式i++3,则该表达式的值是【0】,变量i的值是【4】。
6.若采用十进制数的表示方法,则077是【63】,0111是【73】 ,0X29是【41】 ,0XAB是【171】 。
7.若执行下列语句时,输入数据:
123401234%671234<
回车>
,则变量a的值为【1234】 ,b的值为【1234.000000】,s的值为【%】 ,c的值为【67.000000】 。
inta;
floatb,c;
chars;
scanf(“%d%f%c%f\n”,&
a,&
b,&
s,&
c);
8.设x,y,z为int型变量,且x=3,y=-4,z=5,请写出下列各表达式的结果。
(1)(x&
y)==(x||z)【1】;
(2)!
(x>
y)+(y!
=z)||(x+y)&
(y-z)【1】;
(3)x++-y+(++z)【14】。
9.设x,y和z均为int型变量,请用C语言描述下列命题。
(1)x和y中有一个小于z【(x<
2)||(y<
2)】。
(2)x、y和z中有两个为负数【((x<
0)&
(y<
0))||(x<
(z<
0)||((y<
0))】。
(3)y是奇数【(y%2!
=0】。
10.运行两次以下的程序,如果分别从键盘上输入数值6和4,分别写出其结果。
{intx;
scanf("
&
x);
if(x++>
5)printf("
x);
elseprintf("
输入6时,结果是:
【7】。
输入4时,结果是:
【5】。
1.下列程序运行结果是【16,17】
{inta=16,b=18;
printf(“%d,%d\n”,a--,--b);
2.下列程序运行结果是【0,1】
{intx=1,y=4,z=6;
printf(“%d\t”,(z>
=y&
y==x)?
1:
0);
printf(“%d\t”,z>
=y||y==x);
3.下列程序运行后的输出结果是【3,7,11】。
{fun();
fun();