c模拟题6.docx
《c模拟题6.docx》由会员分享,可在线阅读,更多相关《c模拟题6.docx(17页珍藏版)》请在冰点文库上搜索。
c模拟题6
一、单项选择题
1、下列变量说明语句中,正确的是(D)。
A、chara;b;c;
B、char:
abc;
C、intx;z;
D、intx,z;
2、设以下变量均为int类型,则值不等于7的表达式是(A)。
A、(x=6,x+1,y=6,x+y)
B、(x=y=6,x+y,y+1)
C、(y=6,y+1,x=y,x+1)
D、(x=y=6,x+y,x+1)
3、设:
longw=65535,t=7654321;
根据下面的输出结果,正确的程序段是(C).
w=65535,t=7654321
end
A、printf("w=%5d,t=%7d\n",w,t);printf("%s","end');
B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end");
C、printf("w=%5ld,t=%7ld\n",w,t);printf("%s","end");
D、printf("w=%5u,t=%7u\n",w,t);printf("end");
4、设x,y,z,t均为整型变量,则执行以下语句后,t的值为:
(B)
x=y=z=1;
t=++x||++y&&++z;
A、0
B、1
C、2
D、不定值
5、如果inta=2,b=3,c=0,下列描述正确的是(B)。
A、a&&b>c的结果为假
B、!
a!
=(b!
=c)表达式的值为1
C、a||(b=c)执行后b的值为0
D、a>b!
=c和a>(b!
=c)的执行顺序是一样的
6、从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句(D)。
#include"stdio.h"
main()
{intmin=0,a;
do{
scanf("%d",&a);
if(min>a)min=a;
}while(___A___);
printf("%d",min);
}
A、a=0
B、a==0
C、a>0&&a<0
D、a!
=0
7、设有如下程序段:
intk=10;
while(k==0)
k--;
则下述说明中正确的是(A).
A、循环体一次也不执行
B、循环体执行一次
C、死循环
D、循环体执行10次
8、staticcharstr[10]="China";数组元素个数为(D)。
A、6
B、9
C、5
D、10
9、函数调用:
strcat(strcpy(str1,str2),str3)的功能是(D)。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str2连接到串str1之后再将串str1复制到串str3中
C、将串str1连接到串str2之后再复制到串str3之后
D、将串str2复制到串str1中后再将串str3连接到串str1之后
10、C语言程序中必须有的函数是(B)。
A、#include"stdio.h"
B、main
C、printf
D、scanf
11、程序运行结束后,屏幕上输出值为(B).
staticintx=10;
main()
{intx=3;
f();
x--;
printf("%d",x);
}
f()
{x++;
}
A、10
B、2
C、11
D、3
12、file1.c中有命令,#include,若file2.c中有全局静态变量a,则(B).
A、a在file1.c中应用extern说明.
B、a在file1.c中有效,不必用extern说明.
C、a在file1.c中不生效
D、a在file1.c和file2.c中均不生效.
13、若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是(C)。
A、*p=*q;
B、n=*q;
C、p=n;
D、p=q;
14、以下程序的输出结果是(A).
main()
{charstr[]="ABCD",*p=str;printf("%d\n",*(p+3));}
A、68
B、不确定的值
C、字符D的地址
D、0
15、使用共用体变量,不可以(A)。
A、同时访问所有成员
B、进行动态管理
C、节省存储空间
D、简化程序设计
二、判断题
1、在C语言中,各种类型的整型数据在内存中都占2个字节。
N
2、表达式(j=3,j++)的值是4.Y
3、格式字符%e以指数形式输出实数数字部分小数位数7位.N
4、charc[6]="abcde";printf("%3s",c)表示输出的字段的宽度为3位,如果被输出的数据的位数大于3,只输出3位数.N
5、设d=1,e=2,f=3,则逻辑表达式!
(d+e)+f&&e+f*2的值为0.N
6、已知a=1,b=2,c=3,d=4,则条件表达式a>b?
a:
(c>d?
c:
d)的值为4.Y
7、已知a=3,b=4,c=5.则逻辑表达式a+b>c&&b==c值为0.Y
8、do-while循环由do开始,while结束,循环体可能一次也不做。
N
9、对于for(表达式1;表达式2;表达式3)语句来说,continue语句意味着转去执行表达式2.N
10、在do-while循环中,任何情况下都不能省略while.Y
11、对静态变量的初始化不是在编译阶段完成的.N
12、定义intx[5],n;则x=x+n;或x++;都是正确的.N
13、语句charch[12]={"CProgram"};与语句charch[]="CProgram";具有不同的赋初值功能.Y
14、数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.N
15、变量根据其作用域的范围可以分作局部变量和全局变量.Y
16、当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区.N
17、若有宏定义:
#defineS(a,b)t=a;a=b;b=t由于变量t没定义,
所以此宏定义是错误的。
N
18、设有如下定义:
int*p;*p=100;则printf("%d",p);的输出结果是100.N
19、使几个不同的变量共占同一段内存的结构,称为"结构体"类型.N
20、在打开文件时,必须说明文件的使用方式,"wb+"表示以读/写方式打开一个二进制文件.Y
三、填空题
1、若有定义:
inta=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是_____.c=(a-=(b-5));c=(a%11)+(b=3);9
2、getchar()函数只能接收一个_____.字符
3、当a=1,b=2,c=3时,执行以下程序段后b=_____.if(a>c)b=a;a=c;c=b;2
4、abcde<回车>,则以下while循环体将执行_____次.while((ch=getchar())=='e')printf("*");0
5、字符串的结束标志是_____.'\0'0
6、如果函数不要求返回值,可用_____来定义函数为空类型.void
7、将函数funl的入口地址赋给指针变量p的语句是_____.p=funl;小写的L,不是数字一
8、设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是_____。
unionstud{shortintnum;charname[8];floatscore[3];doubleave;}d,stu[3];12
四、程序设计
1、/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用do-while语句求1~100的累计和。
------------------------------------------------*/
#include"stdio.h"
longintfun(intn)
{
/*********Begin**********/
/**********End**********/
}
main()
{
inti=100;
voidTestFunc();
printf("1~100的累加和为:
%ld\n",fun(i));
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
inti;
intiIN;
longintiOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<5;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%ld\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
【参考代码】
inti=1,sum=0;
do
{sum=sum+i;
i++;
}while(i<=n);
returnsum;
2、/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
------------------------------------------------*/
#include"stdio.h"
voidfun(intarray[3][3])
{
/*********Begin**********/
/**********End**********/
}
main()
{
inti,j;
voidNONO();
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
NONO();
}
voidNONO()
{
inti,j,array[3][3];
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
fprintf(wf,"%7d",array[i][j]);
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
【参考代码】
inti,j,t;
for(i=0;i<3;i++)
for(j=0;j
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;}
===============
【或】
inti,j,t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
五、程序改错
1、/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
有1、2、3、4个数字,能组成多少个互不相同且无重复数
字的三位数?
都是多少?
------------------------------------------------------*/
#include"stdio.h"
main()
{
inti,j,k;
/**********ERROR**********/
printf("\n")
/**********ERROR**********/
for(i=1;i<=5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
{
/**********ERROR**********/
if(i!
=k||i!
=j||j!
=k)
printf("%d,%d,%d\n",i,j,k);
}
}
【参考答案】
printf("\n");
【参考答案】
for(i=1;i<5;i++)
【参考答案】
if(i!
=k&&i!
=j&&j!
=k)
2、/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
以下程序把两个数按由大到小的顺序输出来.
------------------------------------------------------*/
#include"stdio.h"
/***********ERROR***********/
voidswap(int*p1,*p2)
{
intp;
p=*p1;
*p1=*p2;
*p2=p;
}
main()
{
inta,b,*p,*q;
printf("inputa,b:
");
/***********ERROR***********/
scanf("%d%d",a,b);
p=&a;
q=&b;
if(a
swap(p,q);
printf("a=%d,b=%d\n",a,b);
/***********ERROR***********/
printf("max=%d,min=%d\n",p,q);
}
【参考答案】
swap(int*p1,int*p2)
【参考答案】
scanf("%d%d",&a,&b);
【参考答案】
printf("max=%d,min=%d\n",*p,*q);
六、程序填空
1、/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
计算平均成绩并统计90分以上人数。
-------------------------------------------------------*/
#include"stdio.h"
main()
{
intn,m;floatgrade,average;
/***********FILL***********/
average=n=m=_____;
while
(1)
{
/***********FILL***********/
_____("%f",&grade);
if(grade<0)break;
n++;
average+=grade;
/***********FILL***********/
if(grade<90)_____;
m++;
}
if(n)printf("%.2f%d\n",average/n,m);
}
【参考答案】
0
【参考答案】
scanf
【参考答案】
continue
2、/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
通过函数的递归调用计算阶乘。
-------------------------------------------------------*/
#include"stdio.h"
longpower(intn)
{
longf;
if(n>1)
/***********FILL***********/
f=_____;
else
f=1;
return(f);
}
main()
{
intn;
longy;
printf("inputainteagernumber:
\n");
/***********FILL***********/
scanf("%d",_____);
y=power(n);
/***********FILL***********/
printf("%d!
=%ld\n",n,_____);
}
【参考答案】
power(n-1)*n
power(n-1)*n
n*power(n-1)
【参考答案】
&n
【参考答案】
power(n)
y