C语言考试练习题.docx
《C语言考试练习题.docx》由会员分享,可在线阅读,更多相关《C语言考试练习题.docx(11页珍藏版)》请在冰点文库上搜索。
![C语言考试练习题.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/697d54b4-264c-442f-8295-30306650e3c7/697d54b4-264c-442f-8295-30306650e3c71.gif)
C语言考试练习题
一、选择题
1、以下叙述中正确的是C。
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)用C语言编写的程序只能放在一个程序文件中
2、以下不合法的标识符是C。
A)printB)FOR
C)&aD)_00
3、以下不属于字符常量的是B。
A)’C’B)”C”
C)’\xCC’D)’\072’
4、设变量已正确定义并赋值,以下正确的表达式是C。
A)x=y*5=x+zB)int(15.8%5)
C)x=y+z+5,++yD)x=25%2.5
5、以下定义语句中正确的是B。
A)inta=b=0;B)charA=65+1,b=’b’;
C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1;
6、有以下程序段:
charch;
intk;
ch=’a’;
k=12;
printf(“%c,%d,”,ch,ch,k);
printf(“k=%d\n”,k);
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是D。
A)因变量类型与格式描述符的类型不匹配输出不定值
B)输出项与格式描述符个数不符,输出为零或不定值
C)a,97,12k=12
D)a,97,k=12
7、当变量c的值不为2、4、6时,值也为“真”的表达式是C。
A)(c==2)||(c==4)||(c==6)
B)(c>=2&&c<=6)||(c!
=3)||(c!
=5)
C)(c>=2&&c<=6)&&!
(c%2)
D)(c>=2&&c<=6)&&(c%2!
=1)
8、若变量已正确定义,有以下程序段:
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!
=a)c=b;
printf(“%d,%d,%d\n”,a,b,c);
其输出结果为B。
A)程序段有语法错B)3,5,3
C)3,5,5D)3,5,7
9、有如下程序:
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1 :
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
程序运行后的输出结果是D。
A)a=1,b=0B)a=2,b=2
C)a=1,b=1D)a=2,b=1
10、有以下程序:
voidmain()
{intx=8;
for(;x>0;x--)
{if(x%3)
{printf(“%d,”,x--);continue;}
printf(“%d,”,--x);
}
}
程序的运行结果为D。
A)7,4,2,B)8,7,5,2,
C)9,7,6,4,D)8,5,4,2,
11、有以下程序:
voidmain()
{inta[]={1,2,3,4},y,*p=&a[3];
--p;
y=*p;
printf(“y=%d\n”,y);
}
程序的运行结果是D。
A)y=0B)y=1
C)y=2D)y=3
12、以下错误的定义语句是C。
A)intx[][3]={{0},{1},{1,2,3}};
B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)intx[][3]={1,2,3,4};
13、设有如下程序段:
chars[20]=”beijing”,*p;
p=s;
则执行p=s;语句后,以下叙述正确的是A。
A)可以用*p表示s[0]
B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相同
14、若有定义:
inta[2][3];,以下选项中对a数组元素正确引用的是D。
A)a[2][!
1]B)a[2][3]
C)a[0][3]D)a[1>2][!
1]
15、有定义语句:
chars[10];,若要从终端给s输入5个字符,错误的输入语句是D。
A)gets(&s[0]);B)scanf(“%s”,s+1);
C)gets(s);D)scanf(“%s”,s[1]);
16、若函数调用时的实参为变量时,以下关于函数实参和形参的叙述中正确的是D。
A)函数的实参和其对应的形参共占同一存储单元
B)形参只是形式上得存在,不占用具体的存储单元
C)同名的实参和形参占同一存储单元
D)函数的形参和实参分别占用不同的存储单元
17、有以下程序:
voidfun(char**p)
{++p;printf(“%s\n”,*p);}
voidmain()
{char*a[]={“Morning”,“Afternoon”,“Evening”,“Night”};
fun(a);
}
程序的运行结果是A。
A)AfternoonB)fternoon
C)MorningD)orning
18、有以下程序:
#include
#include
voidfun(int*a,intn)
{inti,j,t;
for(i=0;ifor(j=i+1;jif(a[i]}
voidmain()
{
intc[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for(i=0;i<10;i++)
printf(“%d,”,c[i]);
}
程序的运行结果是D。
A)1,2,3,4,5,6,7,8,9,0,
B)0,9,8,7,6,5,1,2,3,4,
C)0,9,8,7,6,5,4,3,2,1,
D)1,2,3,4,9,8,7,6,5,0,
19、有以下程序:
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-3);
returnp;
}
voidmain()
{printf("%d\n",fun(7));
}
程序的运行结果是A。
A)2B)3C)6D)5
20、有以下程序:
structtt
{intx;
structtt*y;
}*p;
structtta[4]={20,a+1,15,a+2,30,a+3,17,a};
voidmain()
{inti;
p=a;
for(i=1;i<=2;i++){printf(“%d,”,p->x);p=p->y;}
}
程序的运行结果是D。
A)20,30,B)30,17,C)15,30,D)20,15,
二、填空题
1、阅读以下程序,写出程序的输出结果。
#include
#include
voidmain()
{charp[20]={‘a’,’b’,’c’,’d’},q[]=”abc”,r[]=”abcde”;
strcpy(p+strlen(q),r);strcat(p,q);
printf(“%d%d\n”,sizeof(p),strlen(p));
}
执行后输出结果是2011。
2、阅读以下程序,写出程序的输出结果。
inta=4;
intf(intn)
{intt=0;staticinta=5;
if(n%2){inta=6;t+=a++;}
else{inta=7;t+=a++;}
returnt+a++;
}
voidmain()
{ints=a,i=0;
for(;i<2;i++)s+=f(i);
printf(“%d\n”,s);
}
程序运行后的输出结果是。
3、阅读以下程序,写出程序的输出结果。
copy_string(char*from,char*to)
{while(*from)*to++=*from++;
*to=‘\0’;
}
voidmain()
{staticchars1[]=“program”;
staticchars2[80];
copy_string(s1,s2);
printf(“%s”,s2);
copy_string(“123”,s2);
printf(“%s\n”,s2);
}
执行后输出结果是。
4、阅读以下程序,写出程序的输出结果。
voidmain()
{char*p[]={“3629”,“7584”};
inti,j;
longnum=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!
=’\0’)
{if((p[i][j]-‘0’)%2)
num=10*num+p[i][j]-‘0’;
j+=2;
}
}
printf(“%d\n”,num);
}
执行后输出结果是。
5、阅读以下程序,写出程序的输出结果。
#include
intf(inta[],intn)
{if(n>1)
returna[0]+f(a+1,n-1);
elsereturna[0];
}
voidmain()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4);printf(“%d\n”,s);
}
执行后输出结果是。
三、填程序题,请在程序空白处填写。
1、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=13+53+33。
voidmain()
{
inti,j,k,n;
printf(“‘waterflower’numberis:
”);
for(n=100;n<1000;n++)
{
i=n/100;
j=(
(1));
k=n%10;
if(
(2))
{
printf(“%d”,n);
}
}
printf("\n");
}
2、将数组a中的n个整数按相反顺序存放。
voidinv(int*x,intn)
{int*p,t,*i,*j,((3));
i=x;
j=x+n-1;
p=x+m;
for(;i<=p;i++,j--)
{t=*i;
((4));
*j=t;
}
}
voidmain()
{inti,a[10]={2,5,6,7,8,9,4,3,6,8};
printf("Theoriginalarray:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
((5));
printf("Thearrayhasbeenreverted:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
}
四、编程题