C语言程序设计复习题447Word下载.docx
《C语言程序设计复习题447Word下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题447Word下载.docx(25页珍藏版)》请在冰点文库上搜索。
![C语言程序设计复习题447Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/7342fdc1-0058-4e5a-abf8-bcebb4f317c3/7342fdc1-0058-4e5a-abf8-bcebb4f317c31.gif)
C)5D)4
8.以下程序的运行结果是 【8】。
{charc=’y’;
if(c>
=’a‘&&c<=’u’)c+=5;
elseif(c>=’v‘&&c<
=’z‘)c-=21;
putchar(c);
}
【8】A)‘y’B)‘d’
C)yD)d
9.若定义inti;
则以下循环语句的循环执行次数是【9】。
for(i=2;
i==0;
)printf(“%d”,i――);
【9】A)无限次B)0次
C)1次D)2次
10.以下程序的运行结果是 【10】。
#include<
main()
inta[4][3]={1,2,3,4,5,6,7,8,9,l0,11,12};
intp[4],j;
for(j=0;
j<
4;
j++)
p[j]=a[j];
Printf(“%2d,%2d,%2d,%2d\n”,*p[1],(*P)[1],p[3][2],*(p[3]+1));
}
【10】A)4,4,9,8B)程序出错
C)4,2,12,11D)1,1,7,5
11。
以下程序的运行结果是【11】。
{
inti=0;
while
(1)
printf(“*”);
i++;
if(i<3=beake;
printf(“\n“);
【11】A)*B)***
C)**D)****
12.若定义a[][2]={1,2,3,4,5,6,7};
则a数组中行的大小是【12】。
【12】A)2B)3
C)4D)无确定值
13.要使以下程序中t的输出结果为4,则输入a和b应满足的条件是 【13】。
ints,t,a,b;
scanf(“%d%d”,&a,&b);
s=t=1;
if(a>
0)s+=1;
b)t=s+t;
e1se
if(a==b)t=5;
elset=2*s;
printf(“%d\n”,t);
【13】A)a>0并且a<bB)a<0并且a<b
C)a>0并且a>bD)a<9并且a>b
14.以下程序的运行结果是【14】。
voidf(intb[])
{
inti=0;
while (b[i]<
=10)
b[i]+=2;
}
inti,a[]={1,5,10,9,13,7};
f(a十1);
for(i=0;
i<
6;
i++)
printf(“%d”,a[i]);
【14】A)271211139B)171211137
C)l71211139D)l7129137
15.以下各语句或语句组中,正确的操作是【15】。
【15】A)chars[5]=”abcde”;
B)char*s;
gets(s);
C)char*s;
s=”abcde”;
D)chars[5];
scanf(“%s”,&
s);
16.以下C语言中,对函数不正确的描述是 【16】
【16】A) 当用数组名作形参时,形参数组改变可使实参数组随之改变
B)允许函数递归调用
C)函数形参的作用范围只是局限于所定义的函数内
D) 函数说明必须在主调函数之前
17.在循环语句的循环体中,continue语句的作用是 【17】。
【17】A)立即终止整个循环
B)继续执行continue语句之后的循环体各语句
C)结束本次循环
D)结束本次循环并跳出循环
18.以下程序的运行结果是【18】。
char*s=”xcbc3abcd”;
inta,b,c,d;
a=b=c=d=0;
for(;
*s;
s++)
switch(*s)
case‘c’:
c++;
case‘b’:
b++;
default:
d++;
break;
case‘a’:
a++;
printf(“a=%d,b=%d,c=%d,d=%d\n”,a,b,c,d);
【18】A)a=1,b=5,c=3,d=8B)a=1,b=2,c=3,d=3
C)a=9,b=5,c=3,d=8D)a=0,b=2,c=3,d=3
19.若fp为文件指针,且文件已正确打开,i为long型变量,以下程序段的输出结果是 【19】。
fseek(fp,0,SEEK_END);
i=ftell(fp);
printf(“i=%ld\n”,i);
【l9】A)-1B)fp所指文件的长度,以字节为单位
C)0D)2
20.以下程序的输出结果是【20】。
inti;
inti=1,j=2;
fun(fun(i,&j),&j);
fun(i11ta,int*b)
staticintm=2;
i+=m十a;
m=++(*b);
printf(“%d,%d\n”,i,m);
return(m);
【20】A)3,3B)3,3
9,46,3
C)3,3D)3,3
9,36,4
21.定义compare(char*sl,char*s2)函数,以实现比较两个字符串大小的功能。
以下程序运行结果为—32,选择正确答案填空。
printf(“%d\n”,compare(“abCd”,“abc”));
compare(char*sl,char*s2)
while(*s1&&*s2&&【21】)
s1++;
s2++;
return*sl一*s2:
【21】A)*s1!
=*s2B)*s1==*s2
C)*sl=*s2D)s1!
=s2
22.若有以下程序:
main(intargc,char*argv[])
while(――argc)
printf(“%s”,argv[argc]);
printf(“\n”);
该程序经编译和连接后生成可执行文件S。
EXE。
现在DOS提示符下键入SAABBCC回车,则输出结果是 【22】。
【22】A)AABBCCB)AABBCCS
C)CCBBAAD)CCBBAAS
23.若有定义typedefcharSTRING[255];
STRINGs;
则s是【23】。
【23】A)字符指针数组变量B)字符数组变量
C)字符变量D)字符指针变量
24.以下程序的运行结果是 【24】。
Voidfun(char*s);
staticcharstr[]=“123”;
fun(str);
voidfun(char*s)
if(*s)
fun(++s);
printf(“%s\n”,――s);
【24】A)3B)123
3212
3211
C)lD)3
1223
123123
25.判断以下程序段的结果是【25】。
#defineA3
#defineB(a)((A+1)*a)
……
intx;
x=3*(A十B(7));
【25】A)程序错误,不允许嵌套宏定义B)x=93
C)语法错误,宏体中不允许带括号D)x=2l
26.以下程序的运行结果是【26】。
structstu
intx;
int*y;
}*p;
intdt[]={1,2,3,4};
structstua[4]={5,&dt[0],6,&dt[1],7,&dt[2],8,&dt[3]};
p=a;
printf(“%d,“,(++p)->
x);
printf(“%d,“,++p->
printf(“%d\n“,++(*p->
y));
【26】A)6,7,3B)6,6,3
C)6,6,2D)5,7,2
27.以下程序的运行结果是【27】。
voidsub(int*x,inty;
intz)
*x=y—z;
.
inta,b,c;
sub(&a,10,5);
sub(&b,a,7);
sub(&c,a,b);
printf(“%d,%d,%d\n”,a,b,c);
【27】A)10,-2,5B)10,5,7
C)10,一2,7D)5,-2,7
28.以下程序的运行结果是【28】。
voidabc(char*p)
inti,j;
for(i=j=0;
*(p+i)!
=’\0’;
if(*(p+i)<
‘n’)
*(p+j)=*(p十i);
j++;
*(p+j)=’\0’;
charstr[]=”morning”;
abc(str);
puts(str);
【28】A)morigB)morning
C)migD)or
29.若有定义char*1anguage[]={“FORTRAN”,“BASIC”,“PASCAL”,“JAVA”,“C”};
则Language[2]的值是【29】。
【29】A)一个字符B)一个地址
C)一个字符串D)不定值
30.以下程序的运行结果是【30】。
main()
inta=3,b=2,c=1;
、
intb=5,c=12;
c-=b*2;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
a+=c;
printf(“a=%d,b=%d,c=%d\n“,a,b,c);
【30】A)a=3,b=2,c=一3B)a=3,b=5,c=2
a=0,b=2,c=一3a=5,b=5,c=2
C)a=3,b=2,c=1D)a=3,b=5,c=2
a=5,b=5,c=2a=5,b=2,c=l
31.以下程序的运行结果是【31】
#defineDEBUG0
inta=10,b=20,c;
c=a/b;
#ifdefDEBUG
printf(“a=%d,b=%d\n”,a,b);
#endif
printf(“c=%d\n”,c);
【31】A)a=10,b=20B)编译出错
C)a=10,b=20D)c=0
32.以下程序的运行结果是【32】。
union
longa;
intb;
charc;
}m;
printf(“%d\n”,sizeof(m));
【32】A)2B)4
C)1D)7
33.若执行以下程序段
intx=3,y=6,z;
z=x^y<
<
2;
则z的二进制值是【33】。
【33】A)00011011B)00010l00
C)000l1000D)00000110
34.若有以下定义和语句,则对a数组元素地址的正确引用是【34】。
inta[2][3],(*p)[3];
p=a;
【34】A)*(p十2)B)p[2]
C)p[1]+1D)(p+1)+2
35.若执行以下程序段,其运行结果是 【35】。
charc[]={‘a‘,‘b’,‘\0’,’c’,’\0’};
printf(“%s\n”,c);
【35】A)abcB)’a’’b’
C)abcD)ab
36.若有intmax(),(*p);
为使函数指针变量p指向函数max,正确的赋值语句是【36】。
【36】A)p=max;
B)*p=max;
C)p=max(a,b);
D)*p=max(a,b);
37.若有定义inta[3][5],i,j;
(且0<i<3,0≤j<5=,则a[i][j]不正确的地址表示是 【37】。
【37】A)&a[i][j]B)a[i]十j
C)*(a十i)十jD)*(*(a十i)十j)
38.以下程序的运行结果是【38】
enum
{aa,bb=5,cc,dd}e;
for(e=bb;
e>=aa;
e一一)
printf(“%d”,e);
printf(“\n”);
【38】A)543000B)5430
C)543210D)程序出错
39.C语言规定,函数返回值的类型由 【39】所决定。
【39】A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数时的形参类型
D)在定义该函数时所指定的函数类型
40.若建立以下链表结构,其指针p,q定义如下:
structnode
intdata;
structnode*next;
)p,q;
:
p,q指向图中所示结点,则能将q所指的结点插入到链表末尾组成单向链表的一组语句是【40】。
【40】A)q一>next=NULL;
B)p=p一>next;
p=p一>next;
q一>next=p一>next;
p一>next=q;
C)p=p一>nex七;
D)p=(*p).next;
q一>next=p;
(*q).next=(*p).next;
(*p).next=q;
二、请正确填充下面的划线部分,使其完成所要求的功能
(本大题共20个空,每个空2分,共40分。
请将答案写在答题卡对应栏中,答在试卷上不得分)
1.计算sum=l十l/2十l/4十…十l/50的值,并显示出来。
inti=2:
floatsum=1.0;
while(i<
=【1】)
sum+=l/【2】;
i+=2;
printf(“sum=%f\n”,sum);
2.以下程序是用来统计从键盘输入的一个正整数中各位数字中零的个数,并求各位数字中最大者。
例如:
1080其零的个数是2,各位数字中最大者是8。
unsignedlongnum,max,t;
intcount;
count=max=0;
scanf(”%ld“,&num);
do{
t=【3】;
if(t==0)++count;
else
if(max<
t) 【4】;
num/=10;
}while(num);
printf(“count=%d,max=%1d\n”,count,max);
3.以下程序用来检查二维数组是否对称(即:
对所有i,j都有a[i][j]=a[j][i])。
inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,8,6,7,4};
inti,j,found=0;
for(j=0;
j<4;
j++=
for(i=0;
i<4;
i++=
if(【5】)
found= 【6】;
break;
if(found)break;
if(fouud)printf(“不对称\n”);
elseprintf(“对称\n”);
4.以下程序用来完成数学函数f(z,y)的计算:
f(x,y)=
math.h>
doublex,y,z,f();
scanf(“%lf%lf”,&x,&y);
z=x*y/f(【7】);
printf(“result=%lf\n”,z);
doublef(doxblea)
doublef1;
f1=pow(3,a)十sqrt(1+【8】);
returnf1;
5.以下程序用来输出字符串。
char*a[]={“for”,”switch”,”if”,”while”};
char**p;
for(p=a;
p<a+4;
p++=
printf(“%s\n”,【9】);
6.以下程序是用来输比如下图形:
*
#*#
*#*#*
#*#*#*#
*#*#*#*#*
inti,j;
for(i=1;
i<=5;
for(j=1;
j<=5-i;
j++)printf(“”);
j<=2*i—1;
if(【10】)printf(“*”);
elseprintf(“#”);
printf(“\n”);
7.以下程序是用来输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把二者对调,然后输出调整后的5个数。
inta[5],t,f,maxi,mini;
i<5;
i++=
scanf(“%d”,&a[i]);
mini=maxi=【11】;
for(i=1;
i++)
if(【12】)mini=i;
if(a[i]>a[maxi])【13】;
printf(“最小数的位置是:
%3d\n”,mini);
Printf(“最大数的值设是:
%3d\n”,maxi);
t=a[maxi];
【14】
a[mini]=t;
printf(“调整后的数为:
”);
prinrtf(“%d”,a[i]);
printf(“\n”);
8.以下程序是用来从10到99数字中挑出能被3整除且至少有一位是5的两值数,并
打印出所有这样的数及其个数。
intk,m=0;
for(k=10;
k<=99;
k++)