完整word版C语言期末模拟试题.docx
- 文档编号:16019654
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:40
- 大小:31.46KB
完整word版C语言期末模拟试题.docx
《完整word版C语言期末模拟试题.docx》由会员分享,可在线阅读,更多相关《完整word版C语言期末模拟试题.docx(40页珍藏版)》请在冰点文库上搜索。
完整word版C语言期末模拟试题
一、选择题:
(20分,每题2分)
1.以下不正确的C语言标识符是(D)。
A.ABCB.abcC.a_bcD.ab.c
2.C程序是由B构成的。
A.主程序与子程序
B.主函数与若干子函数
C.一个主函数与一个其它函数
D.主函数与子函数
3.以下说法中正确的是:
A。
A.在C语言中,实参与其对应的形参各占独立的存储单元;
B. 在C语言中,实参与其对应的形参共占同一个存储单元;
C. 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;
D.在C语言中,形参是虚拟的,不占存储单元。
4.设n=3;则n++的结果是(B)。
A.2B.3C.4D.5
5.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是(A)。
A.0B.1C.2D.3
6.凡是函数中未指定存储类别的局部变量其隐含的存储类别是(A)。
A.自动(auto)B.静态(static)C.外部(extern)D.寄存器(register)
7.在while(x)语句中的x与下面条件表达式等价的是:
D。
A.x==0B.x==1C.x!
=1D.x!
=0
8.若有以下说明和语句:
structworker
{
intno;
char*name;
}work,*p=&work;
则以下引用方法不正确的是(D)。
A.work.noB.(*p).noC.p->noD.work->no
9.以下对二维数组进行正确初始化的是(B)。
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}};
10.二维数组a有m列,则在a[i][j]之前的元素个数为:
B。
A) j*m+i
B) i*m+j
C) i*m+j-1
D)i*m+j+1
二、给出下列程序的运行结果:
(20分,前四题每题3分,后两题每题4分)
1.#include
main()
{
inti=16,j,x=6;
j=i+++1;
x*=i=j;
printf(“%d,%d\n”,j,x);
}
运行结果是:
2.#include
#include
main()
{
inta=1,b=4,c=2;
floatx=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf(“%f\n”,z);
}
运行结果是:
3.#include
main()
{
inta,b,c,d;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=25;
elsed=15;
printf(“d=%d\n”,d);
}
运行结果:
4.main()
{
inti=10;
switch(i){
case9:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
printf(“%d”,i);
}
运行结果:
5.#include
main()
{
inta[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;i>=0;i--)
{
s=s+a[i]*j;
j=j*10;
}
printf("s=%d\n",s);
}
运行结果:
6.func(intx)
{x=20;}
main()
{
intx=10;
func(x);
printf(“%d”,x);
}
运行结果:
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(20分,每空2分)
1.已知能被4整除而不能被100整除的或者能被400整除的年份是润年,则判断某一年是否是润年的程序如下:
main()
{
intyear,leap;
scanf(“%d”,&year);
if()
leap=1;
elseleap=0;
if()printf(“是润年”);
elseprintf(“不是润年”);
}
2.将100至200间不能被3整除的数输出:
main()
{
intn;
for(n=100;n<=200;n++)
{
if(n%3==0);
printf(“%d”,n);
}
}
3.判断m是否是素数
#include
main()
{
intm,i,k;
scanf(“%d”,&m);k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0);
if(i>=k+1)printf(“%disaprimenumber\n”,m);
elseprintf(“%disnotaprimenumber\n”,m);
}
4.给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。
main()
{
inti,j,row=0,colum=0,max;
staticinta[3][4]={{1,2,3,4}{9,8,7,6}{10,-10,-4,4}};
;
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
;
;
}
printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);
}
5.下面函数的功能是将两个字符串s和t连接起来。
char*conj(char*s,char*t)
{
char*p=s;
while(*s);
while(*t)
{
*s=;
s++;
t++;
}
*s=’\0’;
;
}
四、编程(40分)
1.计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于10-4为止。
(13分)
2.输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。
(13分)
3.任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。
(14分)
答案
一、选择题
1、D,2、B,3、A,4、B,5、A,6、A,7、D,8、D,9、B,10、B
二、给出下列程序的运行结果
1、17,102
2、13.700000
3、d=20
4、13
5、s=1234
6、10
三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
1、 (year%4==0&&year%100!
=0)||year%400==0)
leap
2、 continue
3、 break
4、 max=a[0][0]
row=i+1
colum=j+1
5、 s++
*t
return(p)
四、编程
1、
#include
main()
{
inti;
floatsum,sign;
i=1;
sum=0;
sign=1.0;
while((1.0/i)>=1e-4)
{
sum+=sign/i;
i++;
sign=-sign;
}
printf("sum=%.4f",sum);
}
2、
#include
main()
{
charstr[81];
inti;
intletter,space,num,other;
charc;
printf("Pleaseenterastring:
");
gets(str);
letter=space=num=other=0;
for(i=0;str[i]!
='\0';i++)
{
c=str[i];
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
letter++;
elseif(c>='0'&&c<='9')
num++;
elseif(c=='')
space++;
elseother++;
}
printf("Inthisstring:
letter=%d,space=%d,num=%d,other=%d",letter,space,num,other);
}
3、
#include
main()
{
intnum[10];
inti,j,k;
inttemp;
printf("Pleaseenter10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
{
if(num[k]>num[j])
k=j;
if(k!
=i)
{
temp=num[i];
num[i]=num[k];
num[k]=temp;
}
}
printf("Aftersorted:
\n");
for(i=0;i<10;i++)
printf("%5d",num[i]);
}
}
选择题(后附答案)
1. 以下叙述正确的是__B___。
A)在C程序中,main函数必须位于程序的最前面。
B)C语言本身没有输入输出语句。
C)C程序的每行只能写一条语句。
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
2. 下面四个选项中,均是不合法的用户标识符的选项是。
C
A)AB)floatC)b-aD)_123
P_01a0gototemp
do_AintINT
3、下列四个选项中都是合法的转义字符的A
A)‘\’’‘\\’‘\n’B)‘\’‘\017’‘\”’
C)‘\018’‘\f’‘xab’D)‘\\0’‘\101’‘x1f’
4、设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是:
B
A)7B)8C)6D)2
5、若有代数式,则不正确的C语言表达式是:
C
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
6、若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”。
则以下不能满足要求的表达式是__C_____。
A)A%2==1B)!
(A%2==0)
C)!
(A%2)D)A%2
7、以下程序的运行结果是:
D
main()
{
intm=6;
if(m++>6)printf("%d\n",m);
e1seprintf("%d\n",--m);
}
A)4B)5C)7D)6
8、当a=1,b=3,c=5,d=4,执行完下面一段程序后x的值是:
B
if(a
if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)2C)3D)6 9、阅读以下程序,当输入数据的形式为25,13,10 main() { intx,y,z scanf("%d%d%d",&x,&y,&z); printf(“x+y+z=%d\n”,x+y+z);。 } A)x+y+z=48B)x+y+z=35 C)x+y+z=35D)不确定值 10、 已知各变量的类型说明如下 intk,a,b; unsignedlongw=5; doublex=1.42; 则以下不符合C语言语法的表达式是A: A)x%(-3)B)w+=-2 C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3) 11、 设有: inta=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后n的值为____B___。 A)1B)2C)0D)4 12、 判断char型变量ch是否为大写字母的正确表达式是____C____。 A)'A'<=ch<='Z'B)(ch>='A')&(ch<='Z') C)(ch>='A')&&(ch<='Z')D)('A'<=ch)AND('Z'>=ch) 13、 以下描述中正确的是_____C____: A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B)在while循环体中,循环体至少要执行一次。 C)在do一while循环体中,循环体至少无条件的执行一次 D)do一while循环由do开始,用while结束,在while(表达式)后面不能写分号 14、 已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是__D_____。 if(x>y) z=x;x=y;y=z; A)x=10,y=20,z=30B)x=20,y=30,z=20 C)x=20,y=30,z=10D)x=20,y=30,z=30 15、 若i为整型变量,则以下循环执行次数是: D for(i=2;i! =0;)printf("%d",i--); A)无限次B)0次C)1次D)2次 16、 下面程序段: B for(t=1;t<=100;t++) {scanf("%d",&x); if(x<0)continue; printf("%3d",t); } A)当x<0时整个循环结束 B)x>=0时什么也不输出 C)printf函数永远也不执行 D)最多允许输出100个非负整数 17、 若有说明: inta[3][4];则对a数组元素的正确引用是___C___。 A)a[2][4]B)a[1,3]C)a[1+1][0]D)a (2) (1) 18、 定义如下变量和数组: B intk; inta[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是: B for(k=0;k<3;k++)printf("%d",a[2-k][k]); A)369B)753C)963D)357 19、 判断字符串a和b是否相等,应当使用____D___. A)if(a==b)B)if(a=b) C) if(strcpy(a,b))D)if(strcmp(a,b)) 20、 对两个数组a和b进行如下初始化 chara[]="ABCDEF"; charb[]={’A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是_D_. A)a与b数组完全相同B)a与b长度相同 C)a和b中都存放字符串D)a数组比b数组长度长 21、 有两个字符数组a和b,则以下正确的输入语句是_____B__: A)gets(a,b);B)scanf(“%s%s”,a,b); C)scanf(“%s%s”,&a,&b);D)gets(“a”),gets(“b”); 22、 下面程序段的运行结果是___B___ charstr[]="ABC",*p=str; printf("%d\n",*(p+2)); (A)0(B)字符'C'的ASCII码(C)字符'C'的地址(D)字符'C' 23、 下面描述正确的是____D___。 A) 两个字符串所包含的字符个数相同时,才能比较字符串 B) 字符个数多的字符串比字符个数少的字符串大 C) 字符串”STOP”(注: 有一个空格)与”STOP”相等 D) 字符串”That”小于字符串”The” 24、 下面判断正确的是___B___。 A)char*a=“china”;等价于char*a;*a=“china”; B)charstr[10]={“china”};等价于charstr[10];str[]={“china”}; C)char*s=“china”;等价于char*s;s=“china”; D)charc[4]=“abc”,d[4]=“abc”;等价于charc[4]=d[4]=“abc”; 25、 若用数组名作为函数调用的实参,传递给形参的是___A____。 A) 数组的首地址 B) 数组第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数 26、 下面函数调用语句含有实参的个数为____C___。 y=func(a,b,max(d,e)); A)5B)2C)3D)4 27、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是___B____。 A)float型 B)int型 C)long型 D)double型 28、 在C语言中,形参的缺省存储类是A A)autoB)registerC)staticD)extern 29、 以下正确的函数定义形式是____A______: A) doublefun(intx,inty) B) doublefun(intx;inty) C) doublefun(intx,inty); D) doublefun(intx,y); 30、 在宏定义#definePI“3.14159”中,用宏名PI代替一个_D____。 A)常量B)单精度数C)双精度数D)字符串 31、 #defineADD(x)x+x main() { intm=1,n=2,k=3; intsum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面的程序运行结果是___B_____: A)sum=9B)sum=10C)sum=12D)sum=18 32、 以下有关宏替换和函数的调用叙述不正确的是____A___: A) 宏替换和函数的调用均占用运行时间。 B) 宏名无类型,函数有类型 C) 宏替换只是字符替换,不分配内存,但函数调用要分配内存 D) 再调用宏时程序的长度要加长,而函数调用不变 33、 以下程序的输出的结果是C main() {inti; for(i=1;i<=2;i++)incre(); } incre() {staticintx=1; x*=x+1; printf("%d",x); } A)33B)22C)26D)25 34、 有如下定义D structperson{charname[9];intage;}; strictpersonclass[10]={"Johu",17, "Paul",19, "Mary",18, "Adam”,16,}; 根据上述定义,能输出字母M的语句是 A)prinft("%c\n",class[3].mane); B)pfintf("%c\n",class[3].name[1]); C)prinft("%c\n",class[2].name[1]) D)printf("%c\n",class[2].name[0]); 35、 以下程序的输出结果是哪一项? D #include main() { inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3]; printf("%d\n",p[3][2]); } A.输出项不合法B.6 C.8D.12 36、 以下程序的输出结果是B unionmyun {struct { intx,y,z; }u; intk; }a; main() {a.u.x=4;a.u.y=5;a.u.z=6; a.k=1; printf("%d\n",a.u.y); } A)4B)5C)6D)1 37、 以下关于结构体与共用体的说法,其中正确的是C A)共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。 B)结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。 C)共用体每个成员分别占有自己的内存单元。 D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。 38、 以下程序的输出结果是B longfun(intn) { longs; if(n==1||n==2)s=2; elses=n-fun(n-1); returns; } main() { printf("%ld\n",fun(5)); } A)1B)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 语言 期末 模拟 试题