C语言综合习题及答案.docx

上传人:b****6 文档编号:6932869 上传时间:2023-01-12 格式:DOCX 页数:28 大小:26.49KB
下载 相关 举报
C语言综合习题及答案.docx_第1页
第1页 / 共28页
C语言综合习题及答案.docx_第2页
第2页 / 共28页
C语言综合习题及答案.docx_第3页
第3页 / 共28页
C语言综合习题及答案.docx_第4页
第4页 / 共28页
C语言综合习题及答案.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言综合习题及答案.docx

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

C语言综合习题及答案.docx

C语言综合习题及答案

 

C语言练习题

 

一、选择题

1.一个完整的C源程序是【B】。

 

2.以下关于函数的叙述中正确的是【C】。

A)C语言程序将从源程序中第一个函数开始执行

B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束

D)main可作为用户标识符,用以定义任意一个函数

3.以下关于函数的叙述中不正确的是【B】。

A)C程序是函数的集合,包括标准库函数和用户自定义函数

B)在C语言程序中,被调用的函数必须在main函数中定义

C)在C语言程序中,函数的定义不能嵌套

D)在C语言程序中,函数的调用可以嵌套

4.在一个C程序中,【B】。

 

5.C程序的执行是从【A】开始的。

A)主函数

B)子函数

C)从程序第一行

D)printf()函数

6.以下选项中不合法的标识符是【C】

A)printB)FORC)&aD)_00

7.以下选项中可作为C语言合法常量的是【A】

A)-80

B)-080

C)-8e1.0

D)-80.0e

8.以下选项中不属于字符常量的是【

B】

A)′C′

B)"C"

C)′xCC′D)

′072′

9.若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【

C】

A)float

B)long

C)int

D)double

10.以下关于函数叙述中,错误的是【D】。

A)函数未被调用时,系统将不为形参分配内存单元

B)实参与形参的个数应相等,且实参与形参的类型必须对应一致

C)当形参是变量时,实参可以是常量、变量或表达式

D)形参可以是常量、变量或表达式

11.C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是

 

【D】。

A)参数的形实(哑实)结合

B)函数返回值

C)全局变量

D)同名的局部变量

12.

若有定义:

inta[2][3];,

以下选项中对

a数组元素正确引用的是【

C】

A)a[2][!

1]

B)a[2][3]

C)a[1>2][!

1]

D)a[0][3]

13.

若有说明:

inta[][4]={0,0};

则下面不正确的叙述是【

D】

A)数组a的每个元素都可得到初值0

B)

二维数组a的第一维大小为1

C)因为二维数组

a中第二维大小的值除经初值个数的商为

1,故数组a的行数为1

D)有元素a[0][0]

和a[0][1]可得到初值0,其余元素均得不到初值

0

14.下列选项中错误的说明语句是【D】

A)chara[]={′t′,′o′,′y′,′o′,′u′,′0′};B)chara[]={"toyou\0"};

C)chara[]="toyou\0";D)chara[]=′toyou0′;

15.chara1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是

A)strcat(a2,a1);B)strcpy(a2,a1);

C)strcat(a1,a2);D)strcpy(a1,a2);

15.

若函数调用时参数为基本数据类型的变量,以下叙述正确的是【

C】。

A)实参与其对应的形参共占存储单元

B)只有当实参与其对应的形参同名时才共占存储单元

C)实参与对应的形参分别占用不同的存储单元

D)实参将数据传递给形参后,立即释放原先占用的存储单元

16.

函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【

D】。

A)实参将其地址传递给形参,并释放原先占用的存储单元

B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参

C)实参将其值传递给形参,调用结束时形参再将其值回传给实参

D)实参将其值传递给形参,调用结束时形参并不将其值回传给实参

17.

若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是【

D】。

A)函数的实参和其对应的形参共占同一存储单元

B)形参只是形式上的存在,不占用具体存储单元

C)同名的实参和形参占同一存储单元

D)函数的形参和实参分别占用不同的存储单元

18.若用数组名作为函数调用的实参,则传递给形参的是【A】。

A)数组的首地址B)数组的第一个元素的值

C)数组中全部元素的值D)数组元素的个数

19若函数调用时,用数组名作为函数的参数,以下叙述中正确的是【A】。

A)实参与其对应的形参共用同一段存储空间

B)实参与其对应的形参占用相同的存储空间

C)实参将其地址传递给形参,同时形参也会将该地址传递给实参

D)实参将其地址传递给形参,等同实现了参数之间的双向值的传递

20.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量【C】。

A)为全局变量,在本程序文件范围内有效B)为局部变量,只在该函数内有效

 

--2

 

C)为局部变量,只在该复合语句中有效

D)定义无效,为非法变量

21.C语言中函数返回值的类型是由【D】决定。

A)return语句中的表达式类型

 

B)调用函数的主调函数类型C)调用函数时临时

D)定义函数时所指定的函数类型

22.有以下程序

#include

main()

{charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,

′c′};

printf("%d%d\n",strlen(p),strlen(q));}

以下叙述中正确的是【B】

A)在给p和q数组置初值时,系统会自动添加字符串结束符

故输出的长度都为

3

B)由于p数组中没有字符串结束符

长度不能确定,但q数组中字符串长度为

3

C)由于q数组中没有字符串结束符

长度不能确定,但p数组中字符串长度为

3

D)由于p和q数组中都没有字符串结束符

故长度都不能确定

23定义一个void型函数意味着调用该函数时,函数【

C】

A)通过return返回一个用户所希望的函数值

B)返回一个系统默认值

C)没有返回值

D)返回一个不确定的值

24.若定义函数float*fun(),则函数fun的返回值为【B】。

A)一个实数B)一个指向实型变量的指针

C)一个指向实型函数的指针D)一个实型函数的入口地址

25.下列数组说明中,正确的是【D】

A)staticcharstr[]="China";

B)staticcharstr[];str="China";

C)staticcharstr1[5],str2[]={"China"};str1=str2;

D)staticcharstr1[],str2[];str2={"China"};strcpy(str1,str2);

26.在C语言程序中,当调用函数时【B】A)实参和形参共用一个存储空间B)实参和形参各占一个独立的存储空间

C)由用户指定实参和形参是否共用存储空间

D)由系统确定实参和形参是否共用存储空间

27.关于以下fun函数的功能叙述中,正确的是【A】。

intfun(char*s)

{

char*t=s;

while(*t++);

t--;

return(t-s);

}

A)求字符串s的长度B)比较两个串的大小

C)将串s复制到串tD)求字符串s所占字节数

 

--3

 

21.下面程序段运行后的输出结果是【B】(假设程序运行时输入5,3回车)

inta,b;

voidswap()

{

intt;

t=a;a=b;b=t;

}

main()

{

scanf("%d,%d",&a,&b);

swap();

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

}

A)a=5,b=3

B)a=3,b=5

C)5,3

D)3,5

22.以下程序运行后的输出结果是【D】。

fun(inta,intb)

 

{

if(a>b)returna;

elsereturnb;

}

main()

{

intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

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

}

A)3

B)6

C)8

D)12

23.以下程序的运行结果是【C】。

voidf(inta,intb)

{

intt;

t=a;a=b;b=t;

}

main()

{

intx=1,y=3,z=2;

if(x>y)f(x,y);

elseif(y>z)f(x,z);

elsef(x,z);

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

}

A)1,2,3

B)3,1,2

C)1,3,2

D)2,3,1

 

25有以下程序

#include

 

--4

 

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;}

main()

{intz;z=f(3);

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

程序的运行结果是【C】

A)0B)9C)6D)8

26.有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-′a′+′A′;s++;}}

main()

{charstr1[100]="abcddfefdbd",c=′d′;

ss(str1,c);

printf("%s\n",str1);}

程序运行后的输出结果是【B】

A)ABCDDEFEDBDB)abcDDfefDbD

C)abcAAfefAbAD)Abcddfefdbd

26以下程序运行后的输出结果为【B】。

int*f(int*x,int*y)

{

if(*x<*y)returnx;

elsereturny;

}

 

main()

{

inta=7,b=8,*p,*q,*r;

p=&a,q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

}

A)7,8,8

B)7,8,7

C)8,7,7

D)8,7,8

27.以下程序的正确运行结果是【A】。

#inclued

main()

{

intk=4,m=1,p;

p=func(k,m);

printf(“%d”,p);

 

--5

 

p=func(k,m);

printf(“%dn”,p);

}

func(inta,intb)

{

staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

A)8,17

B)8,16

C)8,20

D)8,8

28.有以下程序

intfun(intn)

{

if(n==1)

return1;

elsereturn(n+fun(n-1));

}

main()

{

intx;

scanf("%d",&x);

x=fun(x);

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

}

程序执行时,若输入10,程序的输出结果是【

A】。

A)55

B)54

C)65

D)45

29.下面是一个计算

1至m的阶乘并依次输出的程序。

程序中应填入的正确选项是【

D】。

#include

doubleresult=1;

factorial(intj)

{

result=result*j;

return;

}

main()

{

intm,i=0,x;

printf("Pleaseenteraninteger:

");

scanf("%d",&m);

for(;i++

{

x=factorial(i);

printf("%d!

=%.0f\n",【】);

}

}

 

--6

 

A)i,factorial(i)B)i,xC)j,xD)i,result

30.下面程序段的运行结果是【D】

char*s="abcde";

s+=2;printf("%d",s);

A)cdeB)字符′c′C)字符′的c′地址D)无确定的输出结果

31.有以下程序

#include

voidfun(int*s,intn1,intn2)

{inti,j,t;i=n1;j=n2;while(i

{t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);

fun(a,4,9);

fun(a,0,9);

for(k=0;k

printf("%d",a[k]);

printf("\n");}

程序的运行结果是【

C】

A)0987654321

B)4321098765

C)5678901234

D)0987651234

32.下面程序的输出结果是

#include

#include

main()

{char*p1="abc",*p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n",str);}

A)xyzabcABC

B)xyabcABC

C)zabcABC

D)yzabcABC

33.有以下程序

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;}

main()

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

f(a);

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

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

程序运行后的输出结果是【

A】

A)6,2,3,4,5,B)2,2,3,4,5,

C)1,2,3,4,5,D)2,3,4,5,6,

34.有以下程序

#include

#include

typedef

struct{

charname[9];

charsex;

 

--7

 

floatscore[2];

}STU;

voidf(STU

a)

{

STU

b={"Zhao",

′m′.,850,90.0};

int

i;

strcpy(a.name,b.name);

a.sex=b.sex;

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

a.score[i]=b.score[i];}

main()

{

STU

c={"Qian",

′f′,95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);}

程序的运行结果是【C】

A)Qian,f,85,90B)Qian,m,95,92

C)Zhao,f,95,92D)Zhao,m,85,90

35.有以下程序

#include

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);}

程序的运行结果是【D】

A)a=1,b=0B)a=2,b=2

C)a=1,b=1D)a=2,b=1

36.下列程序的输出结果是【C】#include"stdio.h"

main()

{inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0)

{a++;

continue;}

b++;}

printf("a=%d,b=%d",a,b);}

A)a=4,b=4B)a=5,b=4C)a=4,b=5D)a=5,b=5

37.已知

#intt=0;

while(t=1)

{...}

则以下叙述正确的是【A】

 

--8

 

A)循环控制表达式的值为1B)循环控制表达式的值为0

C)循环控制表达式不合法D)以上说法都不对

38.有如下程序

main()

{charch[2][5]={“6937”,”8254”},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>0’;j+=2)’

s=10*s+p[i][j]-‘0’;

printf(“%dn”,s);

}

该程序的输出结果是【C】。

A)69825B)63825C)6385D)693825

39.下面程序的输出是【B】main()

{intnum=0

while(num<=2)

{num++;

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

A)1

B)1

C)1

D)1

2

2

2

3

3

4

40以下能正确定义一维数组的选项是【

B】

A)inta[5]={0,1,2,3,4,5};

B)chara[]={'0',’1’,’2’,’3’,’4’,’5’,’\0’};

C)chara={'A’,’B’,’C’};

D)inta[5]="0123";

41.若有如下定义和语句,且0<=i<5,下面【A】是对数值为3数组元素的引用

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

p=a;

A)*(a+2)B)a[p-3]C)p+2D)a+3

42.下列【B】表达式的值为真

a=5;b=8;c=10;d=0

A)a*2>8+2B)a&&dC)(a*2-c)||dC)a-b

43.下列字符数组长度为

A)charB)charC)charD)char

5的是【A】

a[]={‘h’,‘a’,‘b’,‘c’,‘d’};

b[]={‘h’,‘a’,‘b’,‘c’,‘d’,‘\0’};c[10]={‘h’,‘a’,‘b’,‘c’,‘d’};d[6]={‘h’,‘a’,‘b’,‘c’,‘\0’}

44.执行下列程序后,其结果为【D】

inta[]={2,4,6,8,10,12};*p;

p=a;

 

--9

 

*(p+4=2;

printf(“%d,

n”,*p,*(p+4));

A)0,10

B)0,2

C)2,10

D)2,2

45.有下列结构体,对该结构体变量stu的成员项引用不正确的是【D】

structstudent

{intm;

floatn;

}stu,*p;

A.stu.nB)p->mC)(*p).mD)p.stu.n

46.下列函数中不能用于对文件进行输入输出操作的是【B】

A)fscanf()B)printf()C)fgetc()D)fputs()

47.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是【B】。

A)"ab+"B)"wb+"C)"rb+"D)"ab"

48..若fp是指向某文件的指针,文件操作结束之后,关闭文件指针应使用下列【D】语句

A)fp=fclose();B)fp=fclose;C)fclose;D)fclose(fp);

 

二、程序填空题

1.以下程序实现了计算x的n次方,请将程序填写完整。

floatpower(floatx,intn)

{inti;floatt=1;for(i=1;i<=n;i++)t=t*x;

;【returnt】

}

main()

{floatx,y;intn;scanf("%f,%d",&x,&n);y=power(x,n);

printf("%8.2f\n",y);

}

2.以下程序实现了求两个数的最大公约数,请将程序填写完整。

intdivisor(inta,intb)

{intr;r=a%b;

while()【r!

=0】

{a=b;b=r;r=a%b;}returnb;

}

voidmain()

{inta,b,d,t;

scanf("%d%d",&

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

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

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

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