C语言试题.docx
- 文档编号:5356013
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:20.37KB
C语言试题.docx
《C语言试题.docx》由会员分享,可在线阅读,更多相关《C语言试题.docx(18页珍藏版)》请在冰点文库上搜索。
C语言试题
一、选择题(1-10每题1分,11-30每题1.5分,共40分)
1.下列选项中,可以作为用户标识符的是
A)voidB)8_8C)_a_0D)a*b
2.若有定义:
floata=22;inti=0,k=18;则不符合C语言规定的赋值语句是
A)k=i++;B)i=(i*k)>=(i-k);C)i=a%11;D)k=!
a;
3.若执行了语句:
floatx=1008;inta=15;则表达式(int)(x+y)%7/17的值为
A)23B)1C)0D)无法确定
4.若有定义语句:
inta=1;doubleb=3.14;,则表达式‘X’+a+b的结果的类型是
A)charB)intC)doubleD)float
5.如有定义语句:
intx=12,y=8,z;,在其后执行语句z=0.9+x/y,则z的值为
A)1.9B)1C)2D)2.4
6.以下是if语句的一种形式:
if(表达式)语句
其中关于“表达式”的说明正确的是:
A)必须是逻辑表达式B)必须是关系表达式
C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式
7.若有定义:
inta,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是
A)35B)3,5C)3;5D)35
8.若有定义语句:
intk1=10,k2=20;,执行表达式
(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为
A)0和1B)0和20C)10和1D)10和20
9.下列语句中正确的是:
A)charstr[10];str=“Hello”;B)char*str;str=“Hello”;
C)charstr[10];str={“Hello”};D)char*str;str={“Hello”};
10.设有定义inta[10],*p=a;以下能够代表数组元素a[4]的是:
A)a+4B)*(p+4)C)*a+4D)*p+4
11.有以下程序
#include
intmain()
{
inta=1,b=0;
if(--a)
b++;
elseif(a==0)
b+=2;
else
b+=3;
printf(“%d\n”,b);
return0;
}
程序运行后的输出结果是
A)0B)1C)2D)3
12.下列条件语句中输出结果与其他语句不同的是
A)if(a)printf(“%d\n”,x);elseprintf(“%d\n”,y);
B)if(a==0)printf(“%d\n”,y);elseprintf(“%d\n”,x);
C)if(a!
=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);
D)if(a==0)printf(“%d\n”,x);elseprintf(“%d\n”,y);
13.有以下程序:
#include
voidmain()
{inta=7;
while(a--);
printf(“%d\n”,a);
}
程序运行后的输出结果是
A)-1B)0C)1D)7
14.以下不能输出字符A的语句是(注:
字符A的ASCII码值为65,字符a的ASCII码值为97)
A)printf(“%c\n”,’a’-32);B)printf(“%d\n”,’A’);
C)printf(“%c\n”,65);D)printf(“%c\n”,’B’-1);
15.有以下程序(注:
字符a的ASCII码值为97)
#include
voidmain()
{char*s={“abc”};
do
{printf(“%d”,*s%10);++s;}
while(*s);
}
程序运行后的输出结果是
A)abcB)789C)7890D)979898
16.若有定义语句:
doublea,*p=&a;以下叙述中错误的是
A)定义语句中的*号是一个地址运算符
B)定义语句中的*号是一个说明符
C)定义语句中的p只能存放double类型变量的地址
D)定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p
17.有以下程序:
#include
doublef(doublex);
voidmain()
{doublea=0;inti;
for(i=0;i<30;i+=10)a+=f((double)i);
printf(“%5.0f\n”,a);
}
doublef(doublex)
{returnx*x+1;}
程序运行后的输出结果是
A)503B)401C)500D)1404
18.若定义语句:
intyear=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是
A)*p+=1;B)(*p)++;C)++(*p);D)*p++;
19.以下定义数组的语句中错误的是
A)intnum[]={1,2,3,4,5,6};
B)intnum[][3]={{1,2},3,4,5,6};
C)intnum[2][4]={{1,2},{3,4},{5,6}};
D)intnum[][4]={1,2,3,4,5,6};
20.有以下程序
#include
voidfun(int*p)
{printf(“%d\n”,p[5]);}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);
}
程序运行后的输出结果是
A)5B)6C)8D)9
21.有以下函数
intfun(char*x,char*y)
{intn=0;
while((*x==*y)&&*x!
=’\0’){x++;y++;n++;}
returnn;
}
函数的功能是
A)查找x和y所指字符串中是否有‘\0‘
B)统计x和y所指字符串中最前面连续相同的字符个数
C)将y所指字符串赋给x所指存储空间
D)统计x和y所指字符串中相同的字符个数
22.数学上的式子1 A)1 23.若有定义语句: char*s1=”OK”;*s2=”ok”;,以下选项中,能够输出“OK”的语句是 A)if(strcmp(s1,s2)==0)puts(s1); B)if(strcmp(s1,s2)! =0)puts(s2); C)if(strcmp(s1,s2)==1)puts(s1); D)if(strcmp(s1,s2)! =0)puts(s1); 24.以下程序的主函数中调用了在其前面定义的fun函数 #include voidmain() {doublea[15],k; k=fun(a); } 则以下选项中错误的fun函数首部是 A)doublefun(doublea[15]) B)doublefun(double*a) C)doublefun(doublea[]) D)doublefun(doublea) 25.有以下程序: #include intf(intm) {staticintn=0; n+=m; returnn; } voidmain() {intn=0; printf(“%d,”,f(++n)); printf(“%d\n”,f(n++)); } 程序运行后的输出结果是 A)1,2B)1,1C)2,3D)3,3 26.若有定义语句: inta=3,b=2,c=1;,以下选项中错误的赋值表达式是 A)a=(b=4)=3;B)a=b=c+1; C)a=(b=4)+c;D)a=1+(b=c=4); 27.有以下程序 #include voidmain() {ints; scanf("%d",&s); while(s>0) {switch(s) {case1: printf("%d",s+5); case2: printf("%d",s+4);break; case3: printf("%d",s+3); default: printf("%d",s+1);break; } scanf("%d",&s); } } 运行时,若输入123450<回车>,则输出结果是 A)6566456B)66656C)66666D)6666656 28.有以下程序 #include #defineS(x)4*(x)*x+1 voidmain() {intk=5,j=2; printf("%d\n",S(k+j)); } 程序运行后的输出结果是 A)197B)143C)33D)28 29.有如下程序,其中k的初始值为八进制数 #include voidmain() {intk=011; k++; printf(“%d\n”,k); } 则程序运行后的输出结果是: A)12B)11C)10D)9 30.设有定义: struct{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则以下语句中错误的是 A)t1=t2;B)t2.num1=t1.num1; C)t2.mark=t1.mark;D)t2.num2=t1.num2; 二、填空题(【1】-【10】每空1分,【11】-【20】每空2分,共30分) 1、以下程序实现两个字符串的连接。 不用strcat函数,填空请将程序补充完整 voidstr_cat(charS1[80],S2[40]) { inti=0,j=0; while(【1】) i++; while(S2[j]! =’\0’) 【2】 【3】 printf(“\n连接后的字符串为: %s”,S1); } 2、以下程序计算1! +2! +…+10! 的值,请填空: void main() { intf=1,i,j,sum=0; for(j=1;j<=10;j++) { for(i=1;【4】;i++) 【5】 【6】 f=1; } printf("1! +2! +…+10! =%d",sum); } 3、请将以下程序补充完整,实现求二维数组中最大元素值及其行列号。 voidmain() {inta[5][5],i,j; for(i=0;i<5;i++) { for(j=0;j<5;j++) {scanf(“%d”,&a[i][j]);} } intsum=a[0][0],row,col; for(i=0;i<5;i++) {for(j=0;j<5;j++) { if(【7】) { 【8】 【9】 【10】 } } } printf(“a[%d][%d]=%d”,row,col,sum); } 4、以下程序是从键盘输入字符统计小写字母个数,读入字符‘#’时停止统计,请填空: voidmain() { intn=0,c; while((c=getchar())! =【11】) { if(【12】)n++; } printf("%d\n",n); } 5、以下程序是找年龄最大的人,输出其姓名和年龄。 请将以下程序补充完整: #defineN4 structman {charname[20]; intage; }person[N]={“li”,18,”wang”,19,”zhang”,22,”sun”,20}; voidmain() { structman*q,*p; inti,m=0; p=person;q=person; for(i=0;i if(m<_【13】) {q=p++; 【14】 } print(“【15】,%d”,q->name,q->age); } 6、以下程序实现数组的逆序输出,请填空: #defineN5 voidmain() {inta[N]={9,6,8,4,1},i,temp; printf(“\noriginalarray: \n”); for(i=0;i printf(“%4d”,a[i]); for(i=0;【17】;i++) {temp=a[i]; 【18】 a[N-i-1]=temp; } printf(“sortedarray: \n”); for(i=0;i printf(“%4d”,a[i]); } 7从键盘读取一个字符串,统计出现某特定字符个数.请完善该程序: voidmain() {inti=0,num=0; charstr[20],ch; ch=getchar(); 【19】 while(str[i]! =’\0’) { if(【20】)num++; i++; } printf(“the%cnumis%d\n”,ch,num); } 三、读程序,写出运行结果(每小题3分,共15分) 1. voidfunc1(inti); voidfunc2(inti); charst[]="hello,friend! "; voidfunc1(inti) { printf("%c",st[i]); if(i<3) {i+=2;func2(i);} } voidfunc2(inti) { printf("%c",st[i]); if(i<3){i+=2;func1(i);} } voidmain() {inti=0;func1(i);printf("\n");} 2. voidmain() { inti=0,s=0; do{ if(i%2){i++;continue;} i++; s+=i; }while(i<7); printf("%d\n",s); } 3. voidf(intx,inty) { intt; if(x } voidmain() { inta=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d",a,b,c); } 4. voidfun(int*a,inti,intj) { intt; if(i } voidmain() { inta[]={18,2,5,4,7,6},i,j,s=0,m=5; for(j=0;j<6;j++) { fun(a,s,m); s++; m--; } for(i=0;i<6;i++) printf("%d",a[i]); } 5. #defineA4 #defineBA-2 voidpoint(char*t) { t+=B/2; *t=*t+1; } voidmain() {charb[]="abcdef",*p=b; point(p); printf("%s\n",b); } 四.编程题(第一题7分,第二题8分,共15分) 1.通过键盘输入3×3的整数矩阵,编程求出矩阵主对角线上元素之和。 2.编写函数,其功能是在字符串s1的指定位置f前插入字符串s2,要求函数首部为: voidinsert(char*s1,char*s2,intf)。 参考答案 一、选择题(1-10每题1分,11-30每题1.5分,共40分) 1-5CCCCB 6-10DCBBB 11-15CDABB 16-20AADCD 21-25BCDDA 26-30AABCC 二、填空题(每题2分,共30分) 1s1[i]! ='\0'ors1[i]! =0 2s1[i++]=s2[j++] 3s1[i]='\0'ors1[i]=0 4i<=j 5f=f*iorf*=i 6sum=sum+forsum+=f 7a[i][j]>=sum 8sum=a[i][j]; 9row=i; 10col=j; 11'#' 12c>='a'&&c<='z' 13p->ageor(*p).ageorperson[i].age 14m=q->age;orm=(*q).age;orm=person[i].age 15%s 16i++ 17i 18a[i]=a[N-i-1]; 19gets(str);orscanf("%s",str); 20str[i]==ch 三、读程序,写出程序运行结果(每题3分,共15分) 1.hlo 2.16 3.4,3,5 4.6745218 5.abceef 四、编程题(第1题7分,第2题8分,共15分) 1. #include intsummary(intb[3][3]) { inti,sum=0; for(i=0;i<3;i++) { sum=sum+b[i][i]; } returnsum; } voidmain() { inta[3][3],sum=0; inti,j; printf("pleaseinputrectangleelements: \n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); sum=summary(a); printf("sumis%d",sum); } 2. voidinsert(char*s1,char*s2,intf) { inti,j; chart; for(i=f,j=0;s2[j];i++,j++) { t=s1[i]; s1[i]=s2[j]; s2[j]=t; } for(j=0;s2[j];j++,i++) s1[i]=s2[j]; s1[i]='\0'; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题