C语言综合模拟题.docx
《C语言综合模拟题.docx》由会员分享,可在线阅读,更多相关《C语言综合模拟题.docx(32页珍藏版)》请在冰点文库上搜索。
![C语言综合模拟题.docx](https://file1.bingdoc.com/fileroot1/2023-7/8/90db1e97-5571-4382-957e-ca95d85bb52f/90db1e97-5571-4382-957e-ca95d85bb52f1.gif)
C语言综合模拟题
C语言综合模拟题
(一)
一、选择题
1.在C语言程序中( )
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的嵌套和函数的调用均不可以嵌套
D)函数的嵌套和函数的调用均可以嵌套
2.下面程序段的输出结果是( )
inta=011;
printf(“%d\n”,++a);
A)12 B)11 C)10 D)9
3.若k为整型,则while循环( )
k=2;
while(k==0)
printf("%d",k);
k--;printf("%d",i);
A)0 B)123456789 C)0123456789 D)10
5.以下对二维数组a进行正确初始化的是______
A)inta[2][3]={{1,2},{3,4},{5,6}};
B)inta[][3]={1,2,3,4,5,6};
C)inta[2][]={1,2,3,4,5,6};
D)inta[2][]={{1,2},{3,4}};
6.若有定义:
inta[4][10],则以下选项中对数组元素a[i][j]的错误引用是(此处0<=i<4,0<=j<10)
A)(&a[0][0]+10i+j) B)*(a+i)[j]
C)*(*(a+i)+j) D)*(a[i]+j)
7.以下程序段的输出结果
inta[]={1,2,3,4,5,6},*p;
p=a;*(p+3)+=2;
printf("%d,%d\n",*p,
*(p+3));
A)0,5 B)1,5 C)0,6 D)1,6
8.下面各语句中,能正确进行赋字符串操作的是____
A)chars[5]={'a','b','c','d','e'}
B)char*s;get(s)
C)char*s;s=“ADFA”;
D)chars[5];scanf(“%s”,&s);
9.下列程序段的运行结果
#definep3
#defineS(a)p*a*a
main()
{intar;
ar=S(3+5);
printf("\n%d",ar);}
A)192 B)29 C)27 D)25
10.下面程序段的运行结果
x=y=0;
while(x<15)y++,,x+=++y;
printf("%d,%d",y,x);
A)20,7B)6,12
C)20,8D)8,20
11.有以下说明和语句:
structworker
{intno;
char*name;
}work,*p=&work;则以下引用方式不正确的是_______
A)work.no B)(*p).no C)p->no D)work->no
12.在说明一个联合体变量时,系统分配给它的存储空间是_____
A)该联合体中第一个成员需存储空间
B)该联合体中最后一个成员所需存储空间
C)该联合体中占用最大存储空间的成员所需存储空间
D)该联合体中所有成员所需存储空间的总和
二.填空题
1.设n=10,i=4,则赋值运算n%=i+1执行后n的值是___
2.若intx=1,y=2,z=3;则表达式z+=x>y?
++x,++y的值是_____
3.若a=3,b=4,c=5,则表达式!
(a+b)+c-1&&b+c/2的值是______
4.当a=1,b=2,c=3时,执行以下语句后a=______,b=_________
if(a>c) b=a;a=c;c=b;
5.若所用变量都已正确定义,请填写以下程序段的输出结果_____
s=7;
dos-=2;while(s=0);
printf("s=%d\n",s);
6.定义inta[]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是___
7.设a=000101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的二进制数应为_____
8.C语言中的文件类型有______和________两种。
三.程序分析题
1.若输入b,以下程序的运行结果为_________
main()
{chargrade;scanf("%c",&grade);
switch(grade)
{case'A':
printf(">=85");
case'B':
printf(">=75");
case'C':
printf(">=60");
case'D':
printf("<60default:
printf("errror");}}2.程序运行结果是______
main()
{inti=1;
while(i<10)
if(++i%3!
=1)continute;
elseprintf("%d",i);}
3.程序输出结果是_______
#include
sub1(chara,charb)
{charc;c=a;a=b;b=c;}
sub2(chara,charb)
{charc;c=a;*a=b;b=c;}
sub3(chara,charb)
{charc;c=*a;*a=*b;*b=c;}
main()
{chara,b;
a='A';b='B';sub1(a,b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);putchar(b);
a='A';b='B';sub1(&a,&b);putchar(a);putchar(b);
}
4.程序输出结果是_______
intfact(intn)
{staticintf=1;
f=f*n;
return(f);}
main()
{inti;
for(i=1;i<=5;i++)printf("%d1=%d\n",i,fact(i));}
5.程序输出结果是_______
#definen5
main()
{inta[N]={1,3,5,7,9},i,temp;
for(i=0;i {temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}
printf("\n");
for(i=0;i四.程序填空题
1.完善程序,将输入字符的大写转换成小写后显示出来
#include
main()
{intc;
c=getchar9);
if(_________)______________;
putchar(c);}
2.下面程序的功能是调用max()函数,求两个数中较大者,请填空
max(x,y)
intx,y;
{intz;if(x>y)z=x;elsez=y;returnz;}
Main{
inta=8,b=12,c;
p=max;c=______;
printf("%d",c);}
3.以下程序实现将三个数中的大数输出在前,小数输出在后,请填空。
#include
swap(int*p1,int*p2)
{int*t;
__________;
t=p1;*p1=*p2;*p2=*t;}
chang(int*q1,int*q2int*q3)
{if(*q1>*q2)swap(q1,q2);
if(*q1>*q3)swap(q1,q3);
if(*q2>*q3)swap(q2,q3);}
main()
{inta=6,b=4,c=2;
chang(_____________);
printf("%d,%d,%d\n",a,b,c):
}
4.以下程序的功能是输出字符串。
main()
{char*a[]={"pasecal","Clanguage","dbase","Cobol"}
char______________;
intj=0;
p=a;
for(;j<4;j++)
printf("%s\n",*___);}5.下面程序有终端键盘输入字符,存放到文件中,用#结束输入。
请填空
#inckude
main()
{FILE*fp;charch,fname[10];
gets(fname);
if((fp=fopen(fname,"w"))==NULL)
{printf("enterdata:
\n");
while(_____!
='#') fputc(____________);
fclose(fp);
}
五.编程题(共2题)
1.判断输入的数是否为素数,是则输入yes,否则输出no,要求用函数调用完成。
2.编写程序。
用键盘输入10名学生的成绩,显示其中的最低分,最高分及平均成绩,要求利用指针
一、填空
1.执行a=10>8*2?
3+5:
3*2;后,a的值是
2.设inti=10;则执行j=++i;后j的值为
3.(!
x)==(x!
=0)的值为
4.能表示一个整数即是奇数又是3的倍数的表达式是
5.定义一指向整型数据的指针变量p的语句是
6.C语言中三种常用的循环控制结构是循环、do---while循环和循环。
7.inta[9];则a数组的下标范围是
8.对应scanf("a=%d,b=%d",&a,&b);语句的输入a为3,b为7的键盘输入格式是
二、选择
1.C语言中,要求运算数必须是整型的运算符是()
(A)%(B)/(C)<(D)!
2.表达式10!
=9的值是()
(A)0(B)1
(C)true(D)false
3.连接两个字符串的C语言库函数是()
(A)strcmp(B)strcpy
(C)strcat(D)strlen
4.以下定义整型3行4列的二维数组a并初始化不正确的是()
(A)inta[3][4]={0};
(B)inta[][4]={0,1,2,3,4,5,6,7,8,9,10,11,12};
(C)inta[3][]={0,1,2,3,4,5,6,7,8,9,10,11,12};
(D)inta[3][4]={{1,2},{1,2,3},{1,2,3,4}};
5.有如下程序,该程序的执行结果是()
main()
{inti,sum=0;
for(i=1;i<=3;i++)
sum+=i++;
printf("%d\n",sum);}
(A)6(B)3(C)死循环(D)4
6.有如下程序,该程序的输出的结果是()
intaddc(inta,intb,intc)
{c=a+b;
return(c);}
main()
{intx=4,y=2,z,r;
z=x+y;
r=addc(addc(x,y,z),addc(y,z,x),z);
printf("%d\n",r);}
(A)36(B)12(C)14(D)6
7.有如下程序,该程序的输出结果是()
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
else
if(n==2)return
(2);
elsereturn
(1);}
main()
{printf("%d\n",fib(4));}
(A)3(B)4(C)5(D)6
8.以下程序的输出结果是()
main()
{inta;
for(a=1;a<=100;a++)
if(a%3==0)
a+=3;
printf("%d\n",a);}
A)100(B)101(C)102(D)103
9.以下程序的输出结果是()
voidfun(int*a,intb)
{*a=2;b=5;}
main()
{inta=3,b=7;
fun(&a,b);
printf("%d%d\n",a,b);}
A)25(B)37(C)35(D)27
10.以下程序的输出结果()
#defineMAX(x,y,z)x*(y)+z
main()
{inta=1,b=2,c=3;
printf("%d\n",MAX(a+b,b+c,c+a));}
A)12(B)15(C)19(D)22
11.以下程序输出结果是()
main()
{inti=5,j=0;
do
{j=j+(--i);}
while(i<2);
printf("%d\n",j);}
(A)4(B)5(C)6(D)9
12.以下程序输出结果是()
intf(intb[],intm,intn)
{inti,s=1;
for(i=m;i{b[i]=b[i-2]+b[i+2];
s+=b[i];}
returns;}
main()
{intx,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,4,7);
printf("%d\n",x);}
A)22(B)26(C)42(D)64
13.以下程序输出结果是()
intfunc(intn)
{staticintm=0;
m=m+n;
return(m);}
main()
{inti,a=0;
for(i=1;i<=4;i++)
a+=func(i);
printf("%d\n",a);}
A)10(B)15(C)20(D)22
14.下列程序输出结果是()
structstudent
{inta,b,c;};
main()
{structstudentstu[2]={{1,2,3},{4,5,6}};intt;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%d\n",t);}
(A)0(B)1(C)3(D)5
15.以下程序输出结果是()
main()
{inta=0,i;
for(i=0;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;break;
default:
a+=5;}}
printf("%d\n",a);}
A)10(B)15(C)21(D)36
三、程序填空
1.下面程序的功能是:
输出100以内能被3整除且个位数为6的所有整数,请填空。
main()
{inti,j;
for(i=0;i<10;i++)
{①
if(②)continue;
printf("%d",j);}}
2.打印出[19002050]之间的所有的闰年,程序如下,请填空:
main()
{inti;
for(i=1900;i<=2050;i++)
if(③)
printf("%d,",i);}
3.下面程序的功能是将数组中的数据按逆序存放,请填空使程序完整。
#defineN12
main()
{intk,j,t,a[N];
for(k=0;kscanf("%d",④);
k=0;
⑤
while(k{t=a[k];
⑥
a[j]=t;
k++;
⑦}
for(k=0;kprintf("%4d",a[k]);
printf("\n");}
四、读程序题
1.读程序从键盘输入1080,则程序的输出结果是:
intf(intn)
{intm=0,c;
while(n!
=0)
{c=n%10;
m=m*10+c;
n=n/10;}
return(m);}
main()
{intm;
scanf("%d",&m);
printf("%d\n",f(m));}
2.写当运行程序输入5时程序输出的结果:
main()
{inti,j,n;
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
if((i+j>=n/2&&i+j<=n/2+n-1)&&(i-j>=-n/2&&i-j<=n/2))
printf("*");
else
printf("");/*注释:
引号内空白处为一个空格*/
printf("\n");}}
3.写出程序的执行结果:
#defineM3
#defineN3
main()
{inta[M][N]={1,2,3,4,5,6,7,8,9};
inti,j,t;
for(i=0;ifor(j=i+1;j{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
for(i=0;i{for(j=0;jprintf("%d",a[i][j]);
printf("\n");}}
4.写出程序的执行结果:
voidswap(int*a,int*b)
{int*tmp;
tmp=a;
a=b;
b=tmp;
*tmp=4;}
main()
{inta=3,b=5;
swap(&a,&b);
printf("%d,%d",a,b);}
五、编程序
1.用公式
求∏的近似值,直到最后一项的绝对值小于
为止,请编程实现。
2.编程从键盘输入一个5行5列的二维数组数据,并找出数组中的最大值及其所在的行下标和列下标;最小值及其所在的行下标和列下标。
要求打印格式,例如最大值形式:
Max=最大值,row=行标,col=列
C语言综合模拟题
(二)
1、设x为整型变量,值为1,则表达式(x&&1)==(x%2)的值为____
2、与二进制数101等值的十进制数为______
3、若已知a=10,b=20,则表达式!
a
4、结构化程序设计所规定的三种基本控制结构是___结构___结构和___结构
5、定义inti=1;执行语句while(i++<5);后,i的值为6、定义3行4列的整型二维数组a的语句是________
7、int*p,a;则语句p=&a;中的运算符&是______符号
8、设y是int型变量,请写出判断y为奇数的关系表达式
二、选择
1、下列优先级最低的是()
A&&B&C||D=
2、已知intj,i=1;执行语句“j=i++;”后,变量i的值是()
A1B2C–1D-2
3、已知inti,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量i的值是()
A6B12C30D36
4、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()
Aa<>0B!
aCa=0Da
5、以下错误的if语句是()
Aif(x>y);
Bif(x==y)x+=y;
Cif(x!
=y)scanf(“%d”,&x)elsescanf(“%d”,&y);
Dif(x6、为了判断两个字符串s1和s2是否相等,应当使用()
Aif(s1==s2)
Bif(s1=s2)
Cif(strcpy(s1,s2))
Dif(strcmp(s1,s2)==0)
7、若有说明intx,y;不能实现以下函数关系的程序段是()
y=-1(x<0)
y=0(x=0)
y=1(x>0)
A.if(x<0)y=-1;
B.y=-1;
elseif(x==0)y=0;
if(x!
=0)
elsey=1;
if(x>0)y=1;
elsey=0;
C.y=0;
D.if(x>=0)
if(x>=0)if(x>0)y=1;
{if(x>0)y=1;}elsey=0;
elsey=-1;elsey=-1;
8、以下错误的描述是()
Abreak语句不能用于循环语句和switch语句外的任何其他语句
B在switch语句中使用break语句或continue语句的作用相同
C在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环
D在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
9、若inti=10;执行下列程序后,变量i的正确结果是()
switch(i)
{case0:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}A10B11C12D13
10、下列程序是求1到100的累加和,其中有1个不能够完成规定的功能,是()
A.s=0;i=0;
while(i<=100)s+=i++;
B.s=0;i=1;while(i++<100)
s+=i;
Cs=0;i=0;
while(i<100)s+=++i;
D)s=0;i=0;while(++i<=100)s+=i;
11、选择程序输出结果()
f(intb[],intm,intn)
{inti,s=0;
for(i=m;is+=b[i];
returns;
}
main()
{intx,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
A30B15C18D22
12、C语言中函数返回值的类型由()决定的。
Areturn语句中的表达式类型
B调用该函数的主调函数的类型
C调用函数时临时决定
D定义函数时所指定的函数类型
13、选择下列程序的运行结果()
fun(int*p)
{inta=10;
p=&a;
++*p;
}
main()
{inta=5;
fun(&a);
printf(“%d\n”,a);
}
A5B6C10D11
14、执行后y的值是()
main()
{inta[]={1,2,3,4},y,*p=a;
y=*p++;
}
A1B2C3D4
15、下列程序输出结果是()
structabc
{i