C语言题库.docx
- 文档编号:25266107
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:100
- 大小:70.64KB
C语言题库.docx
《C语言题库.docx》由会员分享,可在线阅读,更多相关《C语言题库.docx(100页珍藏版)》请在冰豆网上搜索。
C语言题库
12.3试卷
(2)
12.3.1选择题
(本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)
1.在C语言中,用户能使用的合法标识符是【B】。
【1】A)姓名B)-xyz
C)5iD)For
2.执行语句printf("%d\n",strlen("abc\x41\n"));的输出结果是【2】。
【2】A)5B)7
C)abcAD)abc\x41
3.在C语言中,合法的字符常量是【3】。
【3】A)'字'B)"A"
C)"ABC"D)'\x41'
4.C语言中简单数据类型包括【4】。
【4】A)整型、实型、字符型B)整型、实型、逻辑型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
5.在C语言中,不合法的实型常量是【5】。
【5】A)-0.123B)-.123
C)-1.23e-1D)-123e-3.0
6.以下关于C语言变量的叙述,错误的是【6】。
【6】A)变量名必须由字母或下划线开头
B)变量按所定义的类型存放数据
C)不同基本类型的变量之间不能混合运算
D)变量的类型确定了变量的取值范围
7.以下整数值中,不正确的八进制或十六进制数是【7】。
【7】A)0x9aB)012
C)-0x3AD)090
8.下列i、j、k均为整型变量,选项中不正确的C语言赋值语句是【8】。
【8】A)i+1=k;B)i=j=k=1;
C)i=j+=++k;D)j=i+1==i++;
9.以下程序的运行结果是【9】。
main()
{inta=1,b=2,c;
c=a
3:
a>=b?
a:
b;
printf("%d\n",c);
}
【9】A)0B)1
C)2D)3
10.设E为表达式,以下与do…while(E);不等价的语句是【10】。
【10】A)do…while(!
E==0);B)do…while(E>0||E<0);
C)do…while(E==0);D)do…while(E!
=0);
11.设以下程序段中的变量都是int类型,则输出的结果是【11】。
sum=pad=5;
pAd=sum++,pAd++,++pAd;
printf("%d\n",pad);
【11】A)7B)6
C)5D)4
12.以下程序的输出结果为【12】。
main()
{inti=59;
printf("%5o,%-10d,%x\n",i,i,i);
}
【12】A)73,59,3bB)073,59,0x3b
C)00073,59,3BD)73,59,3B
13.以下程序的运行结果是【13】。
main()
{unsigneda=0x3ef,b;
b=a<<2;
printf("%x,%x\n",a,b);
}
【13】A)3ef,fbB)3ef,fbc
C)fbc,3efD)fbc,fbc
14.以下程序的运行结果是【14】。
main()
{inta,b,c;
a=b=c=1;
if(a++||++b)c++;
printf("%d,%d,%d\n",a,b,c);
}
【14】A)2,1,2B)1,2,1
C)2,2,2D)2,2,1
15.以下在定义一维数组a的同时,给a数组所有元素赋初值0,正确的语句是【15】。
【15】A)inta[8]={0};B)inta[8]=0,0,0,0,0,0,0,0;
C)inta[8]={};D)inta[8]=0;
16.以下对C语言字符数组描述:
【16】,是正确的。
【16】A)可以用length函数计算字符数组中字符串的长度
B)使用printf函数整体输出字符数组中的字符串时,遇到字符'\0'结束输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)字符数组只能存放字符串,不能存放字符
17.有以下程序:
main()
{intc;
while((c=getchar())!
='\n')
{switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
}
printf("\n");
}
当输入:
247<回车>,程序的输出结果是【17】。
【17】A)689B)6689
C)66778D)66887
18.以下程序的输出结果是【18】。
#defineSUM(y)1+y
main()
{intx=2;
printf("%d\n",SUM(5)*x);
}
【18】A)10B)11
C)12D)15
19.以下程序的输出结果是【19】。
main()
{inti=1,j=3;
printf("%d,",i++);
{inti=0;
i+=j*2;
printf("%d,%d,",i,j);
}
printf("%d,%d",i,j);
}
【19】A)1,6,3,1,3B)1,6,3,2,3
C)1,6,3,6,3D)1,7,3,2,3
20.以下运算符中,优先级最高的运算符是【20】。
【20】A)<=B)&&
C)=D)/
21.以下程序的输出结果是【21】。
main()
{inta=10,b=20;
swap(&a,&b);
printf("%d,%d\n",a,b);
}
swap(int*p,int*q)
{intt;
t=*p;*p=*q;*q=t;
}
【21】A)10,10B)20,20
C)10,20D)20,10
22.以下程序的输出结果是【22】。
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5;
}
printf("%d\n",a);
}
【22】A)7B)8
C)9D)10
23.以下不能对二维数组a进行正确初始化的语句是:
【23】。
【23】A)inta[3][2]={0};
B)inta[][2]={1,2,3,4,5};
C)inta[3][2]={{1,2},{3,4},{5,6}};
D)inta[3][2]={{1},{3,4,5}};
24.若a[][4]={1,2,3,4,5,6,7,8,9};,则a数组第一维的大小是【24】。
【24】A)1B)2
C)3D)无确定值
25.以下程序的运行结果是:
【25】。
main()
{unionu_type
{inti;
doublex;
floatf;
};
structstr_type
{charstr[100];
unionu_typeu[2];
};
printf("%d\n",sizeof(structstr_type));
}
【25】A)100B)116
C)120D)200
26.以下对枚举类型进行定义,不正确的是【26】。
【26】A)enumb{1,2,3};B)enuma{A,B,C};
C)enumc{D=3,E,F};D)enumd{X=0,Y=5,Z=9};
27.若有以下定义和语句,且0≤i<4,0≤j<3,则不能访问a数组中的元素的是【27】。
inti,(*p)[3],a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
p=a;
【27】A)*(*(a+i)+j)B)p[i][j]
C)(*(p+i))[j]D)p[i]+j
28.以下程序的输出结果是【28】。
main()
{printf("%d\n",fac(5));
}
fac(intn)
{ints;
if(n==1)return1;
elsereturnn*fac(n-1);
}
【28】A)120B)60
C)6D)1
29.循环语句循环体中执行continue语句,其作用是【29】。
【29】A)立即终止程序运行
B)继续执行continue语句之后的循环体各语句
C)结束本次循环
D)结束本次循环,跳出循环
30.运行以下程序,输出结果是a=5,b=4,则输入数据的形式应该是【30】。
main()
{inta,b;
scanf("%d,b=%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
【30】A)54B)5,4
C)5b=4D)5,b=4
31.以下程序的输出结果是【31】。
main()
{unionexample
{struct
{intx;
inty;
}in;
inta[2];
}e={0,0};
e.a[0]=1;e.a[1]=2;
printf("%d,%d\n",e.in.x,e.in.y);
}
【31】A)2,1B)0,0
C)1,2D)0,1
32.以下程序运行后,输出的结果是【32】。
func(inta)
{staticintm=0;
m+=a;
return(m);
}
main()
{intk=4,p;
p=func(k);printf("%d,",p);
p=func(k);printf("%d\n",p);
}
【32】A)4,4B)0,4
C)4,8D)8,8
33.标准函数fgets(s,n,f)的功能是【33】。
【33】A)从文件f中读取长度为n的字符串存入指针s所指的内存
B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C)从文件f中读取n个字符串存入指针s所指的内存
D)从文件f中读取长度为n-1的字符串存入指针s所指的内存
34.以下关于指针概念的叙述中,错误的是【34】。
【34】A)一个指针变量只能指向同一类型的变量
B)一个变量的地址称为该变量的指针
C)两个同类型的指针变量可以作加减运算
D)任何指针变量都可以与空指针NULL进行比较
35.执行下列语句组后,*a、*p、**p的值分别为【35】。
inti,a[]={0,1,2,3,4},*p[5];
for(i=0;i<5;i++)p[i]=a+i;
【35】A)0、0、0B)0、数组a的首地址、0
C)0、1、2D)0、数组a的首地址、数组p的首地址
36.以下程序的运行结果是【36】。
main()
{charch[7]="12xy89";
inti,s=0;
for(i=0;ch[i];i++)
if(ch[i]>='0'&&ch[i]<='9')s=10*s+ch[i]-'0';
printf("%d\n",s);
}
【36】A)12B)xy
C)12xy89D)1289
37.以下程序运行后,输出的结果是【37】。
main()
{inty=18,i=0,j,a[8];
do
{a[i]=y%2;
i++;
y=y/2;
}while(y>=1);
for(j=i-1;j>=0;j--)printf("%d",a[j]);
printf("\n");
}
【37】A)10010B)01001
C)00110D)10100
38.设有以下程序:
main()
{chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);
gets(s2);
if(!
strcmp(s1,s2))printf("*");
elseprintf("#");
printf("%d\n",strlen(strcat(s1,s2)));
}
如果从键盘上输入:
aver<回车>
aver<空格><回车>
则输出的结果是【38】。
【38】A)*8B)#9
C)#8D)*9
39.以下程序运行后,输出的结果是【39】。
fun(char*w)
{chart,*s1,*s2;
for(s1=w,s2=w+strlen(s1)-1;s1 {t=*s1; *s1=*s2; *s2=t; } } main() {char*p="12345"; fun(p); puts(p); } 【39】A)12345B)54321 C)15115D)51551 40.若已建立以下的链表结构(如下图所示),指针p指向某单向链表的第一个结点。 structnode {intdata; structnode*next; }*p; p─┌─┐┌─……┌─┐ │1│││56│ ├─┤│├─┤ │┼─┘│∧│ └─┘└─┘ 以下循环语句输出该链表所有结点的数据成员data,正确的是【40】。 【40】A)for(;p! =NULL;p++)B)for(;! p;p=p->next) printf("%7d,",p->data);printf("%7d,",(*p).data); C)while(p)D)while(p! =NULL) {printf("%7d,",(*p).data);{printf("%7d,",p->data); p=p->next;p++; }} 12.3.2填空题 (本大题共20个空,每个空2分,共40分。 请将答案写在答题卡对应栏中,答在试 卷上不得分) 1.以下程序从读入的整数数据中统计大于零和小于零整数的个数,用零结束输入。 main() {intn,i,j; i=j=0; scanf("%d",&n); while(【1】) {if(n>0)i++; else【2】; scanf("%d",&n); } printf("正数的个数为: %d,负数的个数为: %d\n",i,j); } 2.以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制的形式输出,请填空。 main() {charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; intc[64],i=0,base; longn; printf("enteranumber: \n"); scanf("%ld",&n); printf("enternewbase: \n"); scanf("%d",&base); do {c[i]=【3】; i++; n=n/base; }while(n! =0); printf("transmitnewbase: \n"); for(--i;i>=0;--i) printf("%c",b[【4】]); } 3.以下函数delete(s,i,n)从字符串s中删除第i个字符开始的n个字符。 voiddelete(chars[],inti,intn) {intj,k,length=0;/*length用于计算字符串的长度*/ while(s[length])【5】; i--; j=i; if(i {k=i+n; if(i+n<=length) while(k s[j]=【6】; } } 4.以下程序求数组a中所有素数的和,函数isprime用来判断自变量是否为素数。 素数是只能被1和本身整除且大于1的自然数。 main() {inti,a[10],*p=a,sum=0; printf("Enter10num: "); for(i=0;i<10;i++)scanf("%d",&a[i]); for(i=0;i<10;i++) if(isprime(*(p+【7】))==1) {printf("%d,",*(a+i)); sum+=*(a+i); } printf("sum=%d\n",sum); } isprime(intx) {inti; for(i=2;i<=x/2;i++) if(x%i==0)return0; return【8】; } 5.以下程序根据n的值打印2n-1行#号。 运行后当输入4给变量n时,将打印如下图案: # ### ##### ####### ##### ### # main() {intn,i,j; printf("Entern: "); scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=2*(n-i);j++)putchar(''); for(j=1;j<=【9】;j++)putchar('#'); 【10】; } for(i=1;i<=n-1;i++) {for(j=1;j<=【11】;j++)putchar('#'); printf("\n"); } } 6.输入正整数n,输出对应的中文字符串,其中n≤999。 对应规则: 若百位不为零,则在该百位后写一个“佰”,如356: 叁佰伍拾陆; 若十位不为零,则在该拾位后写一个“拾”,如56: 伍拾陆; 个位写“零”字的情况,百位、十位、个位均为零,0: 零; 拾位写“零”字的情况,百位、个位均不为零,且拾位为零,如308: 叁佰零捌。 例如,0: 零1: 壹15: 壹拾伍100: 壹佰308: 叁佰零捌 main() {char*s[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰"}; charstr[30]=""; unsignedintn1,n10,n100,num;/*n1为个位,n10为拾位,n100为百位*/ scanf("%d",&num); n100=num/100; n10=num/10-n100*10; n1=num%10; if(n100! =0) {strcat(str,s[n100]); strcat(str,【12】); } if(n10! =0) {strcat(str,s[n10]); strcat(str,s[10]); } else if((n100! =0&&n1! =0)||(n100==0&&n1==0))strcat(str,s[0]); if(【13】)strcat(str,s[n1]); puts(str); } 7.给定一个年、月、日,函数getdays()返回这一年的第几天。 闰年的二月有29天,表达式“(year%4==0&&year%100! =0)||(year%400)==0”值为真,即为闰年,其中year表示年号。 如以下程序运行时输入: 200125<回车>,则输出: 2001年2月5日是该年的第36天。 structdatetp {unsignedyear,month,day; }; unsignedmonths[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; main() {structdatetpd; printf("请输入年月日: "); scanf("%u%u%u",&d.year,&d.month,【14】); if((d.year%4==0&&d.year%100! =0)||(d.year%400)==0)months[2]=29; printf("%d年%d月%d日是该年的第%d天。 \n",d.year,d.month,d.day,getdays(d)); } getdays(【15】date) {unsigneddays=0,i; for(i=1;i days+=【16】; days+=date.day; returndays; } 8.某一文件内容为英文,文件名由命令行输入。 以下程序对其进行一项英文语法检查: 把每个英文句子的第一个字母改为大写。 假设每个英文句子可分别由标点符号“.”或“! ”或“? ”结束,并且每行少于1000个英文字母。 将修改后的结果存入文件C: \DATA\FIEL1.TXT中。 main(intargc,【17】) {FILE*fpr,*fpw; inti,sentence_end=1; charstr[1000]; if(argc<2) {printf("Pleaseinputafilename.\n");exit (1); } if((fpr=fopen(argv[1],"r"))==NULL) {printf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题库