C语言试题.docx

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

C语言试题.docx

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

C语言试题.docx

C语言试题

1.下列程序段的输出结果为(C)。

floatk=0.8567;printf("%4.1f%%",k*100);

A、85.6%

B、85.6%%

C、85.7%

D、.857

2.下面的scanf函数输入数据,使得a=10,b=15,s1='S',s2='s',x1=1.5,x2=-3.75,x3=67.8,

正确的键盘输入方法是(A).

(用"[CR]"表示回车,U表示空格)

main()

{inta,b;

floatx1,x2,x3;

chars1,s2;

scanf("%5d%5d%c%c%f%f%*f%f",&a,&b,&s1,&s2,&x1,&x2,&x3);

}

A、10UUU15Ss1.5U-3.75U+1.5U67.8[CR]

B、10UUU15USUs1.5U-3.75U+1.5U67.8[CR]

C、10UUU15USUsU1.5U-3.75U+1.5U67.8[CR]

D、10UUU15Ss1.5U-3.75U+1.5,67.8[CR]

3.C语言的if语句中,用作判断的表达式为(A)。

A、任意表达式

B、算术表达式

C、逻辑表达式

D、关系表达式

4.以下程序的输出结果是:

(A)

main()

{intm=5;

if(m++>5)printf("%d\n",m);

elseprintf("%d\n",m--);

}

A、6

B、5

C、7

D、4

5.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);(C)。

A、3次

B、循环次数不定

C、4次

D、是无限循环

6.

以下不能正确进行字符串赋初值的语句是(A)。

A、charstr[5]="good!

";

B、charstr[5]={'g','o','o','d'};

C、char*str="good!

";

D、charstr[]="good!

";

7.函数调用:

strcat(strcpy(str1,str2),str3)的功能是(D)。

A、将串str1复制到串str2中后再连接到串str3之后

B、将串str2连接到串str1之后再将串str1复制到串str3中

C、将串str1连接到串str2之后再复制到串str3之后

D、将串str2复制到串str1中后再将串str3连接到串str1之后

8.以下函数的类型是(C)。

fff(floatx)

{

return5;

}

A、void类型

B、与参数x的类型相同

C、int类型

D、无法确定

9.设有如下函数

fac(intx)

{

floaty=1.0;

return(x*y);

}

则函数的类型为(A).

A、int型

B、float型

C、无法确定

D、void型

10.下列关于指针定义的描述,错误的是(A)。

A、指针是一种变量,该变量用来存放某个变量的值

B、指针是一种变量,该变量用来存放某个变量的地址值

C、指针变量的类型与它所指向的变量类型一致

D、指针变量的命名规则与标识符相同

11.以下程序的输出结果是(A).

main()

{charstr[]="ABCD",*p=str;printf("%d\n",*(p+3));}

 

A、68

B、不确定的值

C、字符D的地址

D、0

12.对结构体类型的变量的成员的访问,无论成员是何种数据类型都可使用

的运算符是(B)。

A、&

B、.

C、*

D、->

13.在C语言中,各种类型的整型数据在内存中都占2个字节。

(X)

14.若有inti=10,j=2;则执行完i*=j+8;后ⅰ的值为28(X)

15.格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.X

16.C语言程序中输入一个中间带有空格的字符串时,可以用scanf函数.X

17.设d=1,e=2,f=3,则逻辑表达式!

(d+e)+f&&e+f*2的值为0.X

18.已知a=4,b=2,c=3,d=5,表达式a>b?

a:

c

c:

d的值为4.Y

19.语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用语句printf("%d",a>b?

a:

b);取代.Y

20.在do-while循环中,任何情况下都不能省略while.Y

21.break语句能够终止当前进行的多层循环.X

22.continue语句对于while和do-while循环来说,意味着转去计算While表达式.Y

23.对静态变量的初始化不是在编译阶段完成的.X

24.gets函数是用来输入一个字符的函数X

25.当全局变量与局部变量同名时,在局部变量的作用域范围之内,局部变量起作用.Y

26.C语言中,通过函数调用只能获得一个返回值.X

27.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.X

28.被包含文件与其所在的文件(即用#include命令的源文件),在预编译后,成为同一个文件.Y

29.如果需要向函数内传递多个值,用数组和用指针效果是一样的.Y

30.两个类型相同的结构体变量,可以互相赋值.Y

31.C语言中,在打开文件时,必须说明文件的使用方式,"wb+"只能用于文件的写.X

32,下列语句输出的结果是_-1____.

unsignedintb=65535;printf("%d",b);

33.x=5,y=8时,c语言表达式5-2>=x-1<=y-2的值是__1___.

34.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是___3__.

for(x=0,y=0;y!

=123&&x<3;x++)

scanf("%d",&y);

35.连接字符串的函数是_strcat____,只写函数名即可.

36.定义int*p,a[5];将数组a的首地址赋给指针变量p的语句是

p=a

p=&a[0]

p=a;

p=&a[0];

37.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是___34__。

structstud{charname[10];floats[4];doubleave;}a,*p;

38./*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

编写函数fun(str,i,n),从字符串str中删除第i个

字符开始的连续n个字符(注意:

str[0]代表字符串

的第一个字符)。

------------------------------------------------*/

#include"stdio.h"

#include"string.h"

main()

{

charstr[81];

inti,n;

voidfun(charstr[],inti,intn);

voidTestFunc();

printf("请输入字符串str的值:

\n");

scanf("%s",str);

printf("你输入的字符串str是:

%s\n",str);

printf("请输入删除位置i和待删字符个数n的值:

\n");

scanf("%d%d",&i,&n);

while(i+n-1>strlen(str))

{

printf("删除位置i和待删字符个数n的值错!

请重新输入i和n的值\n");

scanf("%d%d",&i,&n);

}

fun(str,i,n);

printf("删除后的字符串str是:

%s\n",str);

TestFunc();

}

voidfun(charstr[],inti,intn)

{

/*********Begin**********/

/**********End**********/

}

voidTestFunc()

{

FILE*IN,*OUT;

chari[200];

/*charo[200];*/

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("ReadFileError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("WriteFileError");

}

fscanf(IN,"%s",i);

fun(i,2,8);

fprintf(OUT,"%s\n",i);

fclose(IN);

fclose(OUT);

}

【参考代码】

while(str[i+n-1])

{

str[i-1]=str[i+n-1];

i++;

}

str[i-1]='\0';

 

===============

39./*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

请编一个函数voidfun(inttt[M][N],intpp[N]),

tt指向一个M行N列的二维数组,求出二维数组每列

中最小元素,并依次放入pp所指一维数组中。

二维

数组中的数已在主函数中赋予。

------------------------------------------------*/

#include"conio.h"

#include"stdio.h"

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

{

/*********Begin**********/

/**********End**********/

}

main()

{

intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};

voidNONO();

intp[N],i,j,k;

printf("Theoriginaldatais:

\n");

for(i=0;i

{

for(j=0;j

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\nTheresultis:

\n");

for(k=0;k

printf("\n");

NONO();

}

voidNONO()

{

inti,j,array[3][4],p[4];

FILE*rf,*wf;

rf=fopen("in.dat","r");

wf=fopen("out.dat","w");

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

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

fscanf(rf,"%d",&array[i][j]);

fun(array,p);

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

{

fprintf(wf,"%7d",p[j]);

fprintf(wf,"\n");

}

fclose(rf);

fclose(wf);

}

【参考代码】

inti,j;

for(j=0;j

{

pp[j]=tt[0][j];

for(i=1;i

if(tt[i][j]

pp[j]=tt[i][j];

}

 

===============

40.【程序改错】

--------------------------------------------------------

功能:

求1到20的阶乘的和。

------------------------------------------------------*/

#include"stdio.h"

voidfun()

{

intn,j;

floats=0.0,t=1.0;

for(n=1;n<=20;n++)

{

/**********ERROR**********/

s=1;

for(j=1;j<=n;j++)

/**********ERROR**********/

t=t*n;

/**********ERROR**********/

s+t=s;

}

/**********ERROR**********/

printf("jiecheng=%d\n",s);

}

main()

{

fun();

}

【参考答案】

t=1;

t=1.0;

41.【程序改错】

--------------------------------------------------------

功能:

编写一个函数,该函数可以统计一个长度为3的字符串在另

一个字符串中出现的次数。

例如:

假定输入的字符串为:

asdasasdfgasdaszx67asdmklo,字符

串为:

asd,则应输出n=4。

------------------------------------------------------*/

#include"stdio.h"

#include"string.h"

#include"conio.h"

intfun(char*str,char*substr)

{

/**********ERROR**********/

inti,n=0

/**********ERROR**********/

for(i=0;i<=strlen(str);i++)

if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2]))

/**********ERROR**********/

++i;

returnn;

}

main()

{

charstr[81],substr[4];

intn;

printf("输入主字符串:

");

gets(str);

printf("输入子字符串:

");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

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

}

【改错1】

【参考答案】

inti,n=0;

【改错2】【参考答案】

for(i=0;i<=strlen(str)-3;i++)

for(i=0;i

【改错3】

【参考答案】

n++;

n+=1;

n=n+1;

++n;

42.程序填空】

---------------------------------------------------------

功能:

计算平均成绩并统计90分以上的人数,输入的成绩为负时程序结束。

-------------------------------------------------------*/

#include"stdio.h"

main()

{

intn,m;floatgrade,average;

/***********FILL***********/

average=n=m=_____;

while

(1)

{

/***********FILL***********/

scanf("%f",&grade);

if(_______)break;

n++;

average+=grade;

/***********FILL***********/

if(grade<90)_____;

m++;

}

if(n)printf("%f\n%d\n",average/n,m);

}

【空1】【参考答案】

0

0.0

【空2】【参考答案】

grade<0

0>grade

【空3】【参考答案】

Continue

43.【程序填空】

---------------------------------------------------------

功能:

求出二维数组中的最大元素值。

-------------------------------------------------------*/

#include"stdio.h"

/***********FILL***********/

intmax_value(intm,intn,int______)

{

inti,j,max;

max=array[0][0];

for(i=0;i

for(j=0;j

/***********FILL***********/

if(max

return(max);

}

main()

{

inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

/***********FILL***********/

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

}

【空1】【参考答案】

array[][4]

array[3][4]

【空2】【参考答案】

max=array[i][j]

【空3】【参考答案】

max_value(3,4,a)

44.下述正确的C语言常量是:

(C).

A、E2

B、5.0E

C、3e-3

D、1.5E2.5

45.若有定义:

inta=7;floatx=2.5,y=4.7;

则表达式x+a%3*(int)(x+y)%2/4的值是(D)。

A、0.000000

B、2.750000

C、3.500000

D、2.500000

46.根据下面的程序,使i=123,c1='A',c2='B'哪一种是正确的键盘输入方法(C).

(规定用[CR]表示回车,U表示空格)

main()

{

inti;

charc1,c2;

scanf("%d%c%c",&i,&c1,&c2);

}

A、123AUB[CR]

B、123UAUB[CR]

C、123AB[CR]

D、123[CR]AB[CR]

47.t为int类型,进人下面的循环之前,t的值为0

while(t=1)

{……}

则以下叙述中正确的是(C)。

A、循环控制表达式的值为0

B、循环控制表达式不合法

C、循环控制表达式的值为1

D、以上说法都不对

48.针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是(B).

A、break语句可以一次性跳出多层嵌套循环

B、break语句只能跳出最内层循环

C、continue语句可以一次性跳出多层嵌套循环

D、continue语句可以跳出最内层循环

49.以下正确的说法是(A).

A、函数的类型决定返回值的类型

B、定义函数时,形参的类型说明可以放在函数体内

C、return后面不能为表达式

D、如果形参与实参的类型不一致,以实参类型为准

50.C语言规定,函数返回值的类型是由(A)。

A、在定义该函数时所指定的函数类型所决定

B、return语句中的表达式类型所决定

C、调用该函数时系统临时决定

D、调用该函数时的主调函数类型所决定

51.函数fun用于将一字符串按相反次序显示,则横线上的表达式为(D).

voidfun(char*s)

{if(!

*s)

return;

_____;

printf("%c",*s);

}

A、printf("%s",s+1);

B、fun(*(s+1));

C、printf("%s",s+strlen(s)-1);

D、fun(s+1);

52.在宏定义#definePI3.14159中,用宏名代替一个(A).

A、字符串

B、常量

C、单精度数

D、双精度数

53.若有说明:

int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是(A)。

A、p1=&m;p2=p1;

B、p1=&m;p2=&p1

C、p1=&m;*p2=*p1;

D、p1=&m;p2=&n;*p1=*p2;

54.下列程序的运行结果是:

(B).

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

A、63

B、36

C、00

D、编译出错

55.C语言结构体类型变量在程序执行期间(B)。

A、没有成员驻留在内存中

B、所有成员一直驻留在内存中

C、只有一个成员驻留在内存中

D、部分成员驻留在内存中

56.表达式(j=3,j++)的值是4.X

57.C语言的输入功能是由系统提供的输入函数实现的.Y

58.条件表达式x?

'a':

'b'中,若x=0时,表达式的值为'a'.X

59.若有说明intc;则while(c=getchar());没有语法错误。

Y

60.二维数组在内存中存贮时,是按列的顺序连续存贮各元素的值.X

61.变量根据其作用域的范围可以分作局部变量和全局变量.Y

62.通过return语句,函数可以带回一个或一个以上的返回值。

X

63.函数的返回值可以通过函数中的return语句获得。

Y

64.若有宏定义:

#defineS(a,b)t=a;a=b;b=t由于变量t没定义,

所以此宏定义是错误的。

X

65.定义inta[]={1,2,3,4},y,*p=&a[1];,则执行y=(*--p)++后,y的值是2.X

66.一个共用体变量中可以同时存放其所有成员.X

67.用fopen("file","r+");打开的文件"file"可以进行修改。

Y

68.C语言中,数组名是一个不可变的_指针地址___常量,不能对它进行加减和赋值运算.

69.函数调用语句func((e1,e2),(e3,e4,e5))中含有__2___个实参.

70.【程序改错】

--------------------

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

当前位置:首页 > 外语学习 > 日语学习

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

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