C语言模拟试题.docx
《C语言模拟试题.docx》由会员分享,可在线阅读,更多相关《C语言模拟试题.docx(22页珍藏版)》请在冰豆网上搜索。
C语言模拟试题
期末二级C语言笔试试卷(A)
注意事项:
1.一题答案填涂在答题卡上
2.二、三、四、五题答案做在答题纸上
一.单项选择题。
(每小题1分,共20分)
1.C程序的源程序由预处理命令和()组成。
(A)函数(B)语句(C)保留字(D)标始符
2.下面程序段中,与if(x%2)中的x%2所表示条件等价的是()。
scanf(〞%d〞,&x);
(A)x%2==0(B)x%2!
=1(C)x%2!
=0(D)x%2==1
3.执行下面C语言序列后,变量b的值是()。
Inta,b,c;a=b=c=1;++a||++b&&++c;
(A)错误(B)0(C)2(D)1
4.设有C语句inta[3][4];,则每次移动过a数组一行元素的指针变量定义形式是()。
(A)int*p;(B)int**p;(C)int(*p)[4];(D)int*p[4];
5.设有整型变量a,实型变量f,双精度型变量x,则表达式10+′b′+x*f值的类型为()。
(A)int(B)float(C)double(D)不能确定
6.C语言中规定,函数调用中用简单变量做实参时,它和对应形参之间的数据传递方式是()。
(A)地址传递(B)单向值传递
(C)由实参传给形参,再由形参传回给实参(D)由用户指定传递方式
7.下面程序的输出是()。
#include
voidmain()
{
intx=10,y=3;
printf(〞%d\n〞,y=x/y);
}
(A)0(B)1(C)3(D)不确定的值
8.执行下面的程序段后,B的值为()。
intx=35;
charz=′A′;
intB;
B=((X&5)&&(z<′a′));
(A)0(B)1(C)2(D)3
9.以下程序的输出结果为()。
#include
voidmain()
{inti=0;
for(;;)
if(i++==5)
break;
printf(〞%d\n〞,i);
}
(A)0(B)5(C)6(D)前3个选项都错
10.已知:
chars[4]=〞cba〞;char*p;执行语句列p=s;printf(〞%c\n〞,*p+1);后,其输出为()。
(A)c(B)b(C)a(D)d
11.运行完下列程序后,在屏幕上的内容是()。
#include
voidmain()
{inta=0;
a+=a=12;
printf(〞%d\n〞,a);
}
(A)0(B)6(C)12(D)24
12.已知:
intx=1,y=2,z=0,则执行z=x>y?
(10+x,10-x):
(20+y,20-y)后,z的值为()。
(A)11(B)9(C)18(D)22
13.若已定义x和y为double类型,则表达式x=2,y=x+10/4的值是()
(A)2(B)4(C)4.0(D)4.5
14.以下程序的输出结果是()。
#include
intx=3,y=4;
voidmain()
{intx=0;
x+=y++;
printf(〞%d〞,x);
}
(A)3(B)4(C)5(D)6
15.在下面C语言的函数说明语句中,正确的是()。
(A)intfun(intx,inty);(B)intfun(intx,y);
(C)intfun(x,y);(D)intfun(intx;inty);
16.有定义:
intx,y=10,*p=&y;,则能使得x的值也等于10的语句是()。
(A)x=p;(B)x=&p;(C)x=&y;(D)x=*p;
17.有定义:
inta[5][4],(*p)[4]=a;,则*(*(p+2)+3)等价于()。
(A)a[2][0](B)a[2][1](C)a[2][2](D)a[2][3]
18.有定义:
char*s=〞\t\〞Name\\Address\〞〞;,那么strlen(s)等于()。
(A)15(B)16(C)17(D)18
19.设有定义intm=1,n=-1;则执行语句printf(〞%d\n〞,(m--&&++n));后的输出结果是()。
(A)-1(B)0(C)1(D)2
20.设有C语句:
structT{intn;doublex;}d,*p;,若要使p指向结构体变量中的成员n,正确的赋值语句是()。
(A)p=&d.n(B)*p=d.n
(C)p=(structT*)&d.n(D)p=(structT*)d.n
二.基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各个小题的空白处。
没空2分,共10分)
1.一个C程序无论由多少个函数组成,只能有一个主函数,其函数名是①。
2.表达式x*=x+b等价于表达式②。
3.在C语言中,③语句是一条限定转移语句,其功能是提前结束本次循环体的执行过程而直接进入下一次循环。
4.结构体数据类型仍然是一类变量的抽象形式,系统不会为数据类型分配存储空间。
要使用结构体类型数据,必须要④。
5.调用feof库函数可以判断文件内部读写位置指针是否达到文件尾,当读写位置指针到达文件尾时,该函数的返回值是:
⑤。
备选项:
(A)void(B)x=x*x+b(C)continue
(D)x=x*(x+b)(E)break(F)定义结构体成员
(G)定义结构体类型变量(H)定义联合体类型变量(I)0
(J)非0(K)main(L)goto
三.程序填空题。
(每空2分,共20分)。
1.程序的功能是:
统计输入字符串中小写字母的个数。
#include
voidmain()
{charc;
intnum=0;
while((c=getchar())!
=①)
{if(c<′a′‖c>′z′)
continue;
②
}
printf(〞%d\n〞,num);
}
2.下面程序的功能是输出数组中的各字符串,请填空完成程序。
#include
voidmain()
{char*a[]={〞abcd〞,〞12345〞,〞efghijk〞,〞67890〞};
intj=0;
for(;③;j++)
puts(④);
}
3.下面程序实现计算1+(1+2)+(1+2+3)+……+(1+2+3+……+10),请填空完善程序。
#include
voidmain()
{inttotal,sum,m,n;
total=0;
for(m=1;m<=10;m++)
{sum=0;
for(n=1;⑤;n++)
sum=sum+n;
⑥;
}
printf(〞total=%d\n〞,total);
}
4.函数fun的功能是判断一个3位整数的各位数和百位数之和是否等于其十位上的数字,是则返回〞yes!
〞,否则返回〞no!
〞,请填空完成函数。
#include
⑦fun(intn)
{intg,s,b;
g=n%10;
s=n/10%10;
b=n/100;
if((g+b)==s)
return〞yes〞;
else
return⑧;
}
voidmain()
{intn;
scanf(〞%d〞,&n);
printf(〞%s\n〞,fun(n));
}
5.下面程序的功能是打印出整数1~1000中满足条件:
〞个位数字的立方等于其本身〞的所有数,请填空完成程序。
#include
voidmain()
{intn;
for(i=1;i<1000;i++)
{g=⑨;
if(⑩)
printf(〞%4d〞,i);
}
printf(〞\n〞);
}
四.阅读程序,填写结果(每小题5分,共30分)
1.下列程序的运行结果是()。
#include
voidmain()
{voidadd();
inti;
for(i=0;i<3;i++)
add()
}
voidadd()
{staticintx=0;
x++;
printf(〞%d〞,x);
}
2.以下程序的输出结果为()。
#include
voidmain()
{inta,b,c,x;
a=b=c=0;
x=35;
if(!
a)
x--;
elseif(b)
;
if(c)
x=3;
else
x=4
printf(〞%d\n〞,x);
}
3.以下程序的输出结果为()。
#include
voidmain()
{inti,j,row,colum,max;
inta[3][4]={1,2,3,4,9,8,7,6,-10,10,-5,2};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf(〞max=%d,row=%d,colum=%d\n〞,max,row,colum);
}
4.下面程序的执行结果是()。
#include
#defineMin(x,y)(x)<(y)?
(x):
(y)
voidmain()
{inta=1,b=2,c=3,d=4,t;
t=Min(a+b,c+d)*1000;
printf(〞t=%d\n〞,t);
}
5.下列程序的运行结果是()。
#include
voidfun(intx)
{putchar(′0′+x%10);
if(x/10)
fun(x/10);
}
voidmain()
{intm=1234;
fun(m);
putchar(′\n′);
}
6.以下程序的运行结果是()。
#include
voidmain()
{inta[]={1,3,5},s=1,j,*p=a;
for(j=0;j<3;j++)
s*=*(p+j);
printf(〞s=%d\n〞,s);
}
五、程序设计题。
(每小题10分,共20分)
1.编程序实现功能:
一个正整数与3的和是5的倍数,与3的差是6的倍数,求出符合此条件的最小正整数。
2.函数reverse的原型为:
voidreverse(chars[]);,其功能是将字符串s中的字符位置颠倒。
例如,字符串“abcdefg”中的字符位置颠倒后变为“gfedcba”。
编制函数reverse并用相应的主函数进行测试。
二级C语言笔试试卷(B)
注意事项:
1.一题答案填涂在答题卡上
2.二、三、四、五题答案做在答题纸上
一.单项选择题。
(每小题1分,共20分)
1.假设有intx=11;,则表达式(x++*1/3)的值是()
(A)3(B)12(C)11(D)0
2.设有定义:
char*s=”\t\”Name\\Address\”\n”;,那么strlen(s)等于()
(A)15(B)16(C)17(D)18
3.若有语句#definef(x,y)x+y及inta=2,b=3;,则执行printf(“%d”,f(a,b)*f(a,b))后输出的值为()
(A)36(B)25(C)11(D)13
4.对于基类型相同的两个指针变量之间,不可进行的运算是()
(A)==(B)=(C)+(D)-
5.若程序中需要表示关系x≥y≥z,应使用C语言表达式为()
(A)(x>=y)&&(y>=z)(B)(x>=y)AND(y>=z)
(C)(x>=y>=z)(D)(x>=y)&(y>=z)
6.若有C语句intk=5;floatx=1.2;,则表达式(int)(x+k)的值是()
(A)5(B)6.2(C)7(D)6
7.设有定义:
intx,*p;,能使指针变量p指向变量x的语句是()
(A)*p=&x;(B)p=&x;(C)*p=x;(D)p=*&x;
8.在执行语句if((x=y=2)>=x&&(x=5))y*=x;后变量x,y的值应分别为()
(A)2、2(B)5、2(C)5、10(D)执行时报错
9.以下程序的输出结果为()
#include
voidmain()
{intx,n;
for(n=10,x=0;n=0;x++,n--)
;
printf(〞%d\n〞,x);
}
(A)程序无限循环无输出(B)10(C)1(D)0
10.下面程序的输出结果为()
#include
voidmain()
{intx=1,y=1,z;
z=1||++x&&y--;
printf(〞\n%d,%d,%d〞,x,y,z);
}
(A)1,1,1(B)2,0,1(C)2,1,1(D)2,0,0
11.下面程序执行后输出为()
#include
voidmain()
{enumweekday{sun,mon=3,tue,wed,thu};
enumweekdayday;
day=wed;
printf(〞%d\n〞,day);
}
(A)5(B)6(C)4(D)编译时出错
12.下面程序执行后输出为()
#include
voidmain()
{inta;
printf(〞%d\n〞,(a=3*5,a*4,a+5));
}
(A)65(B)20(C)15(D)10
13.以下程序的输出结果是()。
#include
voidmain()
{struct
{intx,y;
}d[2]={{1,3},{2,7}};
printf(〞%d\n〞,d[0].y/d[0].x*d[1].x);
}
(A)0(B)1(C)3(D)6
14.下面程序执行后输出为()
#include
intf(intn)
{if(n==1)return1;
elseif(n==2)return2;
elsereturnf(n-1)+f(n-2);
}
voidmain()
{printf(〞%d\n〞,f(4));
}
(A)1(B)2(C)3(D)5
15.下面程序的输出结果为()
#include
voidmain()
{union
{intshortx;//32位系统中,短整型数据占2个字节
charch[2];
}u;
u.x=100;
u.ch[0]=’a’;u.ch[1]=0;
printf(〞%x\n〞,u.x);
}
(A)100(B)97(C)61(D)0
16.设有inta=0,b=5,c=2,x=0;,下面可以执行到x++的语句是()
(A)if(a)x++;(B)if(a=b)x++;(C)if(a>=b)x++;(D)if(!
(b-c))x++;
17.设有下列C语句,则下面叙述正确的选项是()
typedefstruct
{intn;
charch[8];
}Stt;
(A)Stt是结构体变量名(B)Stt是结构体类型名
(C)typedefstruct是结构体类型(D)struct是结构体类型名
18.下面程序执行后输出为()
#include
voidmain()
{inta=5,*p1,**p2;
p1=&a;p2=&p1;
(*p1)++;
printf(〞%d\n〞,**p2);
}
(A)5(B)4(C)6(D)不确定
19.表达式k=(12<10)?
4:
1?
2:
3的值为()
(A)1(B)2(C)3(D)4
20.若fp是指向某文件的指针,且已读到该文件的末尾,则C标准函数feof(fp)的返回值是()
(A)-1(B)1(C)0(D)NULL
二.基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各个小题的空白处。
没空2分,共10分)
1.表达式y/=x+a等价于表达式①。
2.在执行while循环时,其循环体②。
3.二维数组中,各数组元素的存放顺序是③。
4.在对文件进行操作的过程中,若要求文件的读写位置回到文件的开头,应当调用的标准库函数是④。
5.要将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自所占的存储空间分别是⑤字节。
备选项:
(A)按列存放(B)y=y/x+a(C)5和4
(D)y=1/(x+a)(E)输入函数(F)有可能一次都不被执行
(G)rewind(H)按列存放(I)y=y/(x+a)
(J)至少要被执行一次(K)fseek(L)4和5
三.程序填空题。
(每空2分,共20分)。
1.下面程序的功能是:
计算a数组中奇数的个数和奇数的平均值,请填空。
#include
voidmain()
{inta[10]={3,2,8,7,5,6,9,10,1,4},j,k=0,s=0;
floatave;
for(j=0;j<10;j++)
if(①)
{s+=a[j];
k++;
}
if(k!
=0)
{ave=②;
printf("%d,%f\n",k,ave);
}
}
2.下面程序的功能是:
将字符串b连接到字符串a的后面,请填空完成程序。
#include
#include
voidmain()
{chara[20]=〞Iam〞,b[]=〞astudent.〞;
inti,j;
i=strlen(a);
for(③;b[j]!
=’\0’;j++)
a[i+j]=④;
a[i+j]=⑤;
puts(a);
}
3.下面程序的功能是:
求出100以内整数中可以被13整除的最大数,请填空完成程序。
#include
voidmain()
{inti;
for(;⑥;i--)
if(⑦)
break;;
printf(〞%d\n〞,i);
return0;
}
4.下面程序的功能是:
用冒泡法对一维数组a按升序排序,请填空完成程序。
#include
voidmain()
{voidsort(inta[],intn);
inti,a[9]={2,6,1,4,3,5,9,8,7};
sort(⑧);
for(i=0;i<9;i++)
printf(“%3d”,a[i]);
printf(“\n”);
}
voidsort(inta[],intn)
{inti,j,temp;
for(i=0;i<⑨;i++)
for(j=0;jif(a[j]>⑩)
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
}
四.阅读程序,填写结果(每小题5分,共30分)
1.下列程序的运行结果是()。
#include
voidmain()
{intx=-3;
x+=x-=x*x;
printf(〞x=%d\n〞,x);
}
2.以下程序的输出结果为()。
#include
voidmain()
{voidswap(intx,int*y);
inta=5,b=10;
printf(“%d,%d\n”,a,b);
swap(a,&b);
printf(“%d,%d\n”,a,b);
}
voidswap(intx,int*y)
{intt;
t=x;x=*y;*y=t;
}
3.以下程序的输出结果为()。
#include
#include
voidmain()
{voidfun(char*w,intn);
charp[]=”1234567”;
fun(p,strlen(p));
puts(p);
}
voidfun(char*w,intn)
{chart,*s1,*s2;
s1=w;s2=w+n-1;
while(s1{t=*s1;
*s1=*s2,s1++;
*s2=t,s2--;
}
}
4.以下程序的输出结果为()。
#include
inta,b,c,d;
voidmain()
{voidp(inta,intb);
a=b=c=d;
printf(“%3d%3d%3d%3d\n”,a,b,c,d);
p(a,b);
printf(“%3d%3d%3d%3d\n”,a,b,c,d);
}
voidp(inta,intb)
{staticintc;
a++,b++;
c-=10,d+=5;
if(a<2)
p(a,b);
printf(“%3d%3d%3d%3d\n”,a,b,c,d);
}
5.下列程序的运行结果是()。
#include
voidmain()
{inta[3][2]={1,2,3,4,5,6},*p[3],i;
for(i=0;i<3;i++)
p[i]=a[i];
for(i=0;i<3;i++)
printf(〞%d〞