C语言试题及参考答案.docx

上传人:b****8 文档编号:30765753 上传时间:2023-08-23 格式:DOCX 页数:24 大小:24.84KB
下载 相关 举报
C语言试题及参考答案.docx_第1页
第1页 / 共24页
C语言试题及参考答案.docx_第2页
第2页 / 共24页
C语言试题及参考答案.docx_第3页
第3页 / 共24页
C语言试题及参考答案.docx_第4页
第4页 / 共24页
C语言试题及参考答案.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言试题及参考答案.docx

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

C语言试题及参考答案.docx

C语言试题及参考答案

C语言试题及参考答案

一、选择题。

(本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)

1、C语言程序是由【1】组成的。

【1】A)子程序B)过程C)函数D)主程序和子程序

2、已知a,b为整型变量,则表达式(b=3,a=4,b++,a+b)的值是【2】。

【2】A)7B)8C)3D)4

3、若有定义:

inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)/4的值是【3】。

【3】A)2.750000B)3.500000C)2.500000D)0.000000

4、判断char型变量c1是否小写字母的正确表达式为【4】。

【4】A)'a'<=c1<='z'B)(c1>='a')&&(c1<='z')

C)(c1>=a)&&(c1<=z)D)('a'<=c1)||('z'>=c1)

5、不正确的字符串常量是【5】。

【5】A)'abc'B)"12'12"C)"0"D)""

6、下列对一维数组a的正确说明语句为【6】。

【6】A)inta(10);B)intn=10,a[n];

C)intn;D)#defineSIZE10

scanf("%d",&n);inta[SIZE];

inta[n];

7、下列程序的运行结果是【7】。

main()

{inta=3,b=2,c=1,k=4;

printf("%d\n",k

k:

c

c:

a);

}

【7】A)4B)3C)2D)1

8、已知字符'A'的ASCII码值是65,且charc1='A',c2='D';则执行语句printf("%d,%d\n",c1,c2-2);后的输出结果是【8】。

【8】A)A,DB)A,BC)65,68D)65,66

9、若对两个数组a和b进行初始化

chara[]="ABCDEF";

charb[]={'A','B','C','D','E','F'};

则下列叙述正确的是【9】。

【9】A)a与b数组完全相同B)a与b数组长度相同

C)a与b数组都存放字符串D)数组a比数组b长度长

10、已知下列程序段:

chara[3],b[]="FuJian";

a=b;

printf("%s",a);

则【10】。

【10】A)运行后将输出FuJianB)运行后将输出Fu

C)运行后将输出FuJD)编译出错

11、下列不正确的语句为【11】。

【11】A)if((a=b;)>0)t=a;B)if((a=b)>0)t=a;

C)if(a>b);D)if(a

12、下列程序的运行结果为【12】。

#include

main()

{chara[]="morning";

inti,j=0;

for(i=1;i<7;i++)

if(a[j]

a[j]=a[7];

puts(a);

}

【12】A)mogninrB)moC)morningD)mornin

13、下列程序段的运行结果为【13】。

chara[]="continue",*p;

p=a;

while(*p!

='i')

{printf("%c",*p-32);p++;}

【13】A)continueB)CONTINUEC)CONTD)contINUE

14、与下列函数不等价的函数为【14】。

copy_str(char*from,char*to)

{

while((*to=*from)!

='\0')

{

to++;from++;

}

}

【14】A)copy_str(char*from,char*to)

{while((*to++=*from++)!

='\0');}

B)copy_str(char*from,char*to)

{while(*from)*to++=*from++;*to='\0';}

C)copy_str(char*from,char*to)

{

while(*from!

='\0')

*to++=*from++;

*to='\0';

}

D)copy_str(charfrom[],charto[])

{

char*p1,*p2;p1=from;p2=to;

while((*p2=*p1)!

='\0')

}

15、若有下列定义:

intx[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*p)[3]=x;

则能够正确表示数组元素a[1][2]的表达式为【15】。

【15】A)*(*(p+1)+2)B)*((*p+1)[2])

C)*(*(p+5))D)*((*p+1)+2)

16、设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为【16】。

structstudent

{

charname[20];

intage;

charsex;

}stu[5],*p;

p=stu;

【16】A)scanf("%s",stu[0].name);B)scanf("%d",p->age);

C)scanf("%c",&(p->sex));D)scanf("%d",&stu[0].age);

17、若有下列程序段:

intx=1,y=2;

x=x+y;

y=x-y;

x=x-y;

则执行后x和y的值分别为【17】。

(不用辅助变量交换两数据)

【17】A)x=1,y=2B)x=2,y=2C)x=2,y=1D)x=1,y=1

18、已知函数的调用形式:

fread(buffer,size,count,fp);其中buffer代表【18】。

【18】A)一个整型变量,代表要读入的数据项总数

B)一个文件指针变量,指向要读的文件

C)一个储存区,存放要读的数据项

D)一个指针变量,它存放数据缓冲区的地址

19、已知各变量的类型说明语句如下:

intk,a,b;unsignedlongw=5;doublex=1.42;

则不符合C语言语法的表达式是【19】。

【19】A)x%(-3)B)w+=2

C)k=(a=2,b=3)D)a+=(b=4)*(a=3)

20、已知a是float型变量,b是unsigned型变量,则正确的格式输入语句为【20】。

【20】A)scanf("%6.2f%d",&a,&b);

B)scanf("%f%n",&a,&b);

C)scanf("%6f%3d",&a,&b);

D)scanf("%f%f",&a,&b);

21、已知整型变量k和g,则下列程序段输出结果为【21】。

intk,g;

k=011;g=11;

printf("%d,%x\n",++k,g++);

【21】A)12,BB)10,3C)12,3D)10,B

22、已知inti,k;则下列for循环语句是【22】。

for(i=0,k=-1;k=1;i++,k++);

【22】A)判断循环结束的条件不合法B)无限循环

C)一次也不执行D)只执行一次

23、下列程序的输出结果为【23】。

main()

{

intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{

case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;

break;

case3:

a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

【23】A)a=1,b=0B)a=2,b=1C)a=1,b=1D)a=2,b=2

24、执行【24】程序段,使i的结果为4。

【24】A)inti=0,j=0;B)inti=1,j=0;

(i=3,(j++)+i);j=i=((i++)*2);

C)inti=0,j=1;D)inti=1,j=1;

(j==1)?

(i=1):

(i=3);i+=j+=2;

25、说明语句int(*p)();的含义是【25】。

【25】A)p是一个指向一维数组的指针变量

B)p是指针变量,它指向一个整型数据的指针

C)p是一个指向函数的指针变量,该函数的返回值为整型数

D)p是一个指指针函数,该函数的返回值为指针值

26、下列函数fun的功能是【26】。

fun(char*s)

{

char*t=s;

while(*t++);

return(t-s-1);

}

【26】A)求两个串的长度差B)比较两个串的大小

C)将串s复制到串t中D)求s所指向的字符串长度

27、下列程序的输出结果为【27】。

main()

{

structdata

{

intyear,month,day;

}today;

union

{

longi;intk;charch;

}mix;

printf("%d,",sizeof(structdate));

printf("%d\n",sizeof(mix));

}

【27】A)6,2B)6,4C)8,4D)8,6

28、下列程序的输出结果为【28】。

main()

{

inta[]={1,2,3,4,5},*p;

p=a;

*(p+4)+=5;

printf("%d,%d\n",*p,*(p+4));

}

【28】A)4,10B)10,4C)1,4D)1,10

29、下列程序的输出结果是【29】。

main()

{

inta=10,b=20,*p1,*p2;

p1=&a;

p2=&b;

*p1=20;

*p2=32;

if(*p2>*p1)*p1=*p2;

printf("a=%d,b=%d\n",a,b);

}

【29】A)a=20,b=32B)a=32,b=20C)a=20,b=20D)a=32,b=32

30、下列程序的输出结果为【30】。

main()

{

inta=14,b=1;

printf("%d\n",(a&b)&&b);

}

【30】A)0B)1C)trueD)false

31、下列程序的输出结果为【31】。

main()

{

staticcharstr[]="abcdef";

voidfun();

fun(str);

printf("str[]=%s\n",str);

}

voidfun(chars[])

{

inta,b;

for(a=b=0;s[a]!

='\0';a++)

if(s[a]!

='c')

s[b++]=s[a];

s[b]='\0'

}

(去掉字符'c')

【31】A)str[]=abcdefB)str[]=abcdf

C)str[]=abD)str[]=abd

32、下列程序的输出结果为【32】。

main()

{

intn1,n2;

n1=n2=3;

n2=n1++;

printf("%d,%d\n",n1,n2);

}

【32】A)3,3B)4,4C)4,3D)3,4

33、下列程序段的输出结果为【33】。

intx=3;

do

{

printf("%2d",x--);

}while(!

x);

【33】A)321B)3C)21D)210

34、下列程序的输出结果为【34】。

main()

{

inta=-1,b=4,k;

k=!

((++a<0)&&!

(b--<=0));

printf("%d%d%d\n",k,a,b);

}

【34】A)104B)103C)013D)004

35、下列程序的输出结果为【35】。

main()

{

inta=2,i,k;

for(i=0;i<2;i++)

k=f(a++);

printf("%d\n",k);

}

f(intb)

{

staticinty=3;

return(b+y++);

}

【35】A)7B)6C)5D)8

36、下面对typedef不正确的叙述是【36】;

【36】A)用typedef可以定义各种类型名,但不能用来定义变量

B)用typedef可以增加新类型

C)用typedef只是将已存在的类型用一个新的标识符表示

D)使用typedef有利于程序的通用和移植

37、若有语句

chars1[]="string1",s2[8],*s3,*s4="string2";

则【37】是对库函数strcpy的错误调用。

(只有A能给出正确的结果)

【37】A)strcpy(s1,"string1");B)strcpy(s4,"string2");

C)strcpy("string2",s2);D)strcpy(s3,"string1");

38、下列程序的输出结果为【38】。

#defineSQR(x)x*x

main()

{

inta=10,k=2,m=1;

a/=SQR(k+m);

printf("%d\n",a);

}

【38】A)1B)8C)2D)9

39、下列程序的输出结果为【39】。

intd=1;

voidfun(intp)

{

intd=5;

d+=p++;

printf("%d,",d);

}

main()

{

inta=3;

fun(a);

d+=a++;

printf("%d\n",d);

}

【39】A)8,4B)4,7C)9,4D)8,1

40、下列程序的输出结果是【40】。

main()

{

intx;

x=fun5(4);

printf("%d\n",x);

}

fun5(intn)

{

ints;

if((n==1)||(n==2))

s=2;

else

s=n+fun5(n-1);

returns;

}

【40】A)9B)11C)4D)2

二、请正确填充下列的函数或程序的划线部分,使其完成所要求的功能:

(本大题共20个空,每空2分,共40分。

请将答案写在答题卡对应栏中,答在试卷上不得分,每个空至多填一条语句。

1、下列程序的功能是应用如下的公式近似计算e的x次方。

(前10项的和)

main()

{floatexp=1.0,x,t;

intn,k;

scanf("%f",&x);

exp=exp+x;

t=x;

k=1;

for(n=2;【1】;n++)

{

t=t*x;

k=k*n;

exp=【2】;

}

printf("Thee^%dis%8.4f\n",int(x),exp);

}

2、有15个数按从小到大顺序存放在一个数组中,当输入一个数值时,要求用折半查找法找出该数是数组中第几个元素的值;如果该数不在数组中,则显示相应的提示。

#defineN15

main()

{

inti,num,top,bott,mid,a[N];

printf("请输入15个数(a[i]>a[i-1])\n");

scanf("%d",&a[0]);

i=1;

while(i

{

scanf("%d\n",&a[i]);

if(【3】)i++;

else

{

printf("请重新输入a[i]");

printf("必须大于%d\n",a[i-1]);

}

}

printf("请输入查找数据:

");

scanf("%d",&num);

for(top=0,bott=N-1;top<=bott;)

{

mid=【4】;

if(num==a[mid])

{

printf("%d位于表中第%d个数\n",num,mid+1);

break;

}

elseif(num

elsetop=【6】;

}

if(top>bott)

printf("%d不在表中\n",num);

}

3、下列程序完成统计命令行第三个参数中出现的字母的个数。

(isalpha(intch)函数功能检查ch是否字母,是返回1,否则返回0)

#include

main(argc,argv)

intargc;

char【7】;

{

char*str;

intcount=0;

if(argc<3)exit

(1);

str=【8】;

while(*str)

if(isalpha(【9】))count++;

printf("Count:

%d\n",count);

}

(最好为main(intargc,char【7】))

4、下列程序的功能是显示如下形式的数字:

100000

210000

321000

432100

543210

654321

main()

{

inta[6][6],i,j;

for(i=0;i<6;i++)

{

for(j=0;j<6;j++)

if(【10】)a[i][j]=0;

else【11】;

}

for(i=0;i<6;i++)

{

for(j=0;j<6;j++)

printf("%3d",a[i][j]);

printf('\n');

}

}

5、下列程序的功能是求两个矩阵相乘。

#defineM3

#defineN4

voidfm(【12】)

{

inti,j,k;

for(i=0;i

for(j=0;j

{

c[i][j]=【13】;

for(k=0;k

【14】+=a[i][k]*b[k][j];

}

}

main()

{

inti,j;

intx[M][N]={1,2,3,4,5,6,7,8,9,10,11,12};

inty[N][M]={12,11,10,9,8,7,6,5,4,3,2,1};

intz[M][M];

fm(x,y,z);

for(i=0;i

{

for(j=0;j

printf("%5d",【15】);

printf("\n");

}

}

6、下列程序完成将若干字符串按字母顺序(由大到小)输出。

main()

{

voidsort(),print();

staticchar*name[]={"Followme","BASIC","GreatWall",

"FORTRAN","Computerdesign"};

intn=5;

sort(name,n);

print(name,n);

}

voidsort(char*name1[],intn1)

{

char*temp;

inti,j,k;

for(i=0;i

{

【16】;

for(j=i+1;j

if(strcmp(name1[k],name1[j])>0)

【17】;

if(【18】)

{

temp=name1[i];

name1[i]=【19】;

name1[k]=temp;

}

}

}

voidprint(char*name2[],intn2)

{

inti;

for(i=0;i

printf("%s\n",【20】);

}

补充:

填空使程序完成所要求的功能

1、下面的函数是一个求非负整数阶乘的递归函数。

fac(intn)

{if(n==0)【21】;

elsereturn【22】;

}

2、下面程序使二维数组a[][]的第一行元素以后为零,但保留结尾数据-999,如下所示:

1234

0000

000-999

main()

{staticinta[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,-999}};

intj,k,*pa;

pa=【23】;/*把第一行的起始地址赋入pa*/

while(*pa!

=-999)

{【24】;

pa++;

}

for(j=0;j<3;j++)

{for(k=0;k<4;k++)

printf("%5d",【25】);

printf("\n");

}

}

3、建立函数arraycopy();使数组a[]的内容复制到数组b[]中。

arraycopy(【26】)

{inti=0;

while(a[i]!

=-999)

{【27】;

i++;

}

b[i]=【28】;

}

main()

{staticinta[]={1,2,3,4,5,6,7,8,9,10,-999};

intb[100],i=0;

【29】;

while(b[i]!

=-999)

printf("%d",【30】);/*被复制数组的数据显示*/

}

4、已知由英文单词和数字组成的文本文件xyz,统计该文件中单词和数字的个数并求出最长词或数字的长度。

注意,一个词(或数字)与另一个词(或数字)

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

当前位置:首页 > 解决方案 > 学习计划

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

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