C语言题库.docx

上传人:b****9 文档编号:25266107 上传时间:2023-06-06 格式:DOCX 页数:100 大小:70.64KB
下载 相关 举报
C语言题库.docx_第1页
第1页 / 共100页
C语言题库.docx_第2页
第2页 / 共100页
C语言题库.docx_第3页
第3页 / 共100页
C语言题库.docx_第4页
第4页 / 共100页
C语言题库.docx_第5页
第5页 / 共100页
点击查看更多>>
下载资源
资源描述

C语言题库.docx

《C语言题库.docx》由会员分享,可在线阅读,更多相关《C语言题库.docx(100页珍藏版)》请在冰豆网上搜索。

C语言题库.docx

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("

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1