2021c语言练习试题库_第1页
2021c语言练习试题库_第2页
2021c语言练习试题库_第3页
2021c语言练习试题库_第4页
2021c语言练习试题库_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021c语言练习试题库

C语言练习试题库1

1.

#incIude"stdio.h"

main()

(charc;

c=get);

whiIe(c!='?'){putc);c=get);}

}

如果从键盘输入abcde?fgh(回车)

运行结果为:abode

2.

#include

main()

{charc;

while((c=get))!=,$')

{if('A'<=c&&c<=,Z')putc);

elseif(<a,<=c&&c<=iz,)putc-32);)

)

当输入为运行结果为:ABABCDCD

3.

#incIude

main()

(intx,y=0;

for(x=1;x<=10;x++)

{if(y>=10)

break;

y=y+x;

}

printf("%d%dn,y,x);

}

运行结果为:105

详见教材p120for语句

详见教材p126~128break,continue语句

for(表达式1;表达式2;表达式3)

(

}

(1)先求解表达式1

(2)求解表达式2,若其值为真,执行循环体,然后执行(3).

若为假,则结束循环,转到(5)

(3)求解表达式3

(4)转回上面(2)继续执行

(5)循环结束,执行for语句下面的一个语句

break,跳出循环体;continue,结束本次循环(第i次循

环),继续执行下一次循环(第i+1次循环)

此题表达式1为x=1,表达式2(循环条件)为x<=10,表达

式3为x++

初值x为1,y为0,循环条件(即表达式2)x<=10成立,进

入循环体

第1次循环

执行汗语句。。小于10,汗语句的条件表达式不成立,不

执行break;

执行y=y+x;y=0+1=1

转向表达式3,执行x++,x=x+1=1+1=2。循环条件x<=10成

立,进入第2次循环

第2次循环

执行if语句。1小于10,汗语句的条件表达式不成立,不

执行break;

执行y=y+x;y=1+2=3

转向表达式3,执行x++,x=x+1=2+1=3。循环条件x<=10成

立,进入第3次循环

第3次循环

执行if语句。3小于10,if语句的条件表达式不成立,不

执行break;

执行y=y+x;y=3+3=6

转向表达式3,执行x++,x=x+1=3+1=4。循环条件x<=10成

立,进入第4次循环

第4次循环

执行if语句。6小于10,汗语句的条件表达式不成立,不

执行break;

执行y=y+x;y=6+4=10

转向表达式3,执行x++,x=x+1=4+1=5。循环条件x<=10成

立,进入第5次循环

第5次循环

执行if语句。10等于10,if语句的条件表达式成立,执

行break,跳出循环。

从break跳出至for语句的下一条语句。执行

printf(a%d%dw,y,x);

输出当前的y与x.结果为105

4.

#include

main()

{charch;

ch=get);

switch(ch)

{case'A':printf("%c",'A');

case'B':printf(“%c”,'B');break;

default:printf(“%s”,”otherw;

})

当从键盘输入字母A时,运行结果为:AB

详见教材p103,switch语句

switch(表达式)

{case常量1:语句1

case常量2:语句2

III

III

III

case常量n:语句n

default:语句n+1

}

其中表达式,常量1,…,常量n都为整型或字符型

case相当于给出执行程序的入口和起始住置,若找到匹配

的常量,则从此处开始往下执行程序,不再四配常量,直至遇到

break或switch结束

本题过程:

首先从键盘接收一个字符'A,并将其放在变量ch中。

执行switch语句。Switch后面的条件表达式为ch,因此表

达式的值即为字符'A'.用字符'A'依次与下面的case中的

常量匹配。

与第1个case后的常量匹配,则从其后的语句开始往下执

行程序(在执行过程中不再进行匹配。)因此先执行

printf(“%c",'A'),屏幕上输出A;再往下继续执行

printf("%c",'B'),屏幕上输出B;再继续执行break,此

时跳出switch语句。

5.

#include

main()

{inta=1,b=0;

scanf("%d",&a);

switch(a)

(case1:b=1;break;

case2:b=2;break;

default:b=10;}

printf("%d",b);

}

若键盘输入5,运行结果为:10

本题过程:

首先用scanf函数为变量a赋值为5。

执行switch语句oswitch后面的条件表达式为a,因此表达

式的值即为5.用5依次与下面case中的常量匹配。没有找到

匹配的常量,因此两个case后的语句都不执行。执行default

后面的语句b=10;将10赋给变量bo

输出变量b,结果为10

6.

#include

main()_

{chargrade=,C';

switch(grade)

(

case'A':printf(w90-100n);

case仲:printf(w80-90”);

case,C':printf(^70-80”);

case'D':printf(w60-70”);break;

case'E,:printf(“<60”);

default:printf(werror!”);

)

}

运行结果为:

70-80

60-70

本题过程:

首先从键盘接收一个字符'C'并将其放在变量grade中。

执行switch语句oswitch后面的条件表达式为grade,因此

表达式的.值即为字符'1.用字符'C'依次与下面的case

中的常量匹配。

与第3个case后的常量匹配,则从其后的语句开始往下执

行程序(在执行过程中不再进行匹配。)因此先执行

printf(a70-80”);,屏幕上输出70-80,并换行;再往下继续

执行printf(“60-70”),屏幕上输出60-70,并换行;再继续

执行break,此时跳出switch语句。

7.

#include

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf(%dw,--y);

)

}

运行结果为:

852

详见教材p53,自增自减符号

此题表达式1被省略,表达式2(循环条件)为y>0,表达式

3为y―

初值y为9,循环条件(即表达式2)y>0成立,进入循环体

第1次循环

执行if语句。9%3==0,if语句的条件表达式成立,执行

printf(%dw-y),即y先自减1变为8,然后在输出,因此

屏幕上输出8

转向表达式3,执行y—,y=y-1=8-1=70循环条件y>0成立,

进入第2次循环

第2次循环

执行if语句。7%3不为0,if语句的条件表达式不成立,

不执行printf(%d”,---y)

转向表达式3,执行y—,y=y-1=7-1=6o循环条件y>0成立,

进入第3次循环

第3次循环

执行if语句。6%3==0,if语句的条件表达式成立,执行

printf(%dw-y),即y先自减1变为5,然后在输出,因此

屏幕上输出5

转向表达式3,执行y—,y=y-1=5-1=4o循环条件y>0成立,

进入第4次循环

第4次循环

执行if语句。4%3不为0,if语句的条件表达式不成立,

不执行printf(%d”,--y)

转向表达式3,执行y-,y=4-1=3。循环条件y>0成立,进

入第5次循环

第5次循环

执行if语句。3%3==0,if语句的条件表达式成立,执行

printf(%dw-y),即y先自减1变为2,然后在输出,因此

屏幕上输出2

转向表达式3,执行v—,y=y-1=2-1=1。循环条件y>0成立,

进入第5次循环

第6次循环

执行if语句。1%3不为0,if语句的条件表达式不成立,

不执行printf(%d”,---y)

转向表达式3,执行y—,y=1-1=0。循环条件y>0不成立,

循环结束。

8.

#include

main()

{inti,sum=0;i=1;

do{sum=sum+i;i++;}whiIe(i<=10);

printf("%d”,sum);

}

运行结果为:55

9.

#incIude

#defineN4

main()

{inti;

intx1=1,x2=2;

printfC");

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

{printf("%4d%4d",x1,x2);

if(i%2==0)

printfC");

x1=x1+x2;

x2=x2+x1;

}

}

运行结果为:

1235

8132134

此题首先为整型变量赋初值x1=1,x2=2

表达式1为i=1,表达式2(循环条件)为i<=N即i<=4,表

达式3为i++

循环变量初值i为1,循环条件(即表达式2)i<=4成立,进

入第1次循环

第1次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出12

执行if语句。1%2不为0,if语句的条件表达式不成立,

不执行print"'");

执行*仁乂1+*2=1+2=3;此时*1中的值已变为3

执行x2=x2+x1=2+3=5o

转向表达式3,执行i++,i为2。循环条件i<=4成立,进入

第2次循环

第2次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出35

执行if语句。2%2=0,if语句的条件表达式成立,执行

printf("");换行

执行x1=x1+x2=3+5=8;此时x1中的值已变为8

执行x2=x2+x1=5+8=13。

转向表达式3,执行i++,i为30循环条件i<=4成立,进入

第3次循环

第3次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出813

执行if语句。3%2不为0,if语句的条件表达式不成立,

不执行printf

执行x1=x1+x2=8+13=21;此时x1中的值已变为21

执行x2=x2+x1=21+13=34o

转向表达式3,执行i++,i为4。循环条件i<=4成立,进入

第4次循环

第2次循环

执行printf("%4d%4d",x1,x2);因此屏幕上输出2134

执行if语句。4%2==0,if语句的条件表达式成立,执行

printf("");换行

执行*仁*1+*2=21+34=55;此时乂1中的值已变为55

执行x2=x2+x1=34+55=89o

转向表达式3,执行i++,i为50循环条件i<=4不成立,结

束循环

10

#incIude

main()

{intx,y;

for(x=30,y=0;x>=10,y<10;x—,y++)

x/=2,y+=2;

printf("x=%d,y=%d”,x,y);

}

运行结果为:

x=0,y=1211.

#include

#defineN4

main()

{inti,j;

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

{for(j=1;jprintfC");

printf("*");

printfC");

}}

运行结果为:

*

*

*

*

详见教材P41符号常量

用宏处理指令定义符号常量N为4,在编译过程中,遇到N

即视为整数4。

外层for■循环,表达式1为i=1,表达式2(循环条件)为i<=N,

表达式3为i++

内层for循环,表达式1为j=1,表达式2(循环条件)为

j首先计算外层循环的表达式1,i为1,使得循环条件i<=4

成立,进入外层for循环体

外层for循环第1次此时i为1

内层循环j=1,使得循环条件j执行printf("*");

执行printfC");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,

此时i为2.使得循环条件i<=4

成立,再次进入外层for循环体

外层for循环第2次此时i为2

内层循环j=1,使得循环条件j第1次执行内层循环体

printf("");

执行内层循环表达式3,J++为2,j执行printf("*");

执行printfC");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,

此时i为3.使得循环条件i<=4

成立,进入外层for循环体

外层for循环第3次此时i为3

内层循环j=1,使得循环条件j第1次执行内层循环体

printf("");

执行内层循环表达式3,j++为2,j第2次执行内层循环

体printf("");

执行内层循环表达式3,j++为3,j执行printf("*");

执行printf("");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,

此时i为4.使得循环条件i<=4

成立,进入外层for循环体

外层for循环第4次此时i为4

内层循环j=1,使得循环条件j第1次执行内层循环体

printf("");

执行内层循环表达式3,j++为2,j第2次执行内层循环

体printfC'");

执行内层循环表达式3,j++为3,j第3次执行内层循环

体print"'");

执行内层循环表达式3,J++为4,j执行printf("*");

执行printfC");换行

至此外层循环体执行完,计算外层循环的表达式3,i++,

此时i为5.使得循环条件i<=4

不成立,跳出外层for循环体

c语言练习试题库2

单项选择题

1.有charc='1',下面说法中正确的是()。

A.语句putc+2);的输出结果为51

B.语句put“%d”,c+2);的输出结果为3

C.语句put“%c”,c+2);的输出结果为51

D.语句put“%c”,c+2);的输出结果为3

2.设c1,c2均是char型变量,则下面不正确的函数调用为

()0

A.scant("c1=2=%cw,&c1,&c2);

B.get);

C.putc2);

D.putd,c2);

3.为了表示关系x>=y>=z,下面C语言表达式中正确的是

()0

A.(x>=y)&&(y>=z)

B.(x>=y)and(y>=z)

C.(x>=y>=z)

D.(x>=y)&(y>=z)

4.设x,y,z,t为int型变量,则执行以下语句后,t的值为

()0

x=y=z=1;

t=++x||++y&&++z;

A.不定值

B.2

C.1

D.0

5.对if语句中表达式的类型,下面正确的说法是()o

A.必须是关系表达式

B.必须是关系表达式或逻辑表达式

C.可以是任意表达式

D.必须是关系表达式或算术表达式

6.对for(表达式1;;表达式3)可以理解为()。

A.for(表达式1;0;表达式3)

B.for(表达式1;表达式1;表达式3)

C.for(表达式1;1;表达式3)

D.for(表达式1;表达式3;表达式3)

7.执行语句for(i=1;i++<4;);之后,变量i的值为

()0

A.3

B.4

C.5

D.不确定

8.若二维数组a有m列,则在前的元素个数为

()0

A.j*m+i

B.i*m+j

C.i*m+j-i

D.i*m+j+1

9.下面说法中正确的是()。

A.在C语言中,可以使用动态内存分配技术,定义元素个

数可变的数组

B.在C语言中,数组元素的个数可以不确定,允许随即变

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义数组后,就确定了它能容纳的相同数

据类型元素的个数

10.不能把字符串:“good!”赋给数组b的语句是()o

A.charb[10]={,g'J'o'Jd'J!'};

B.charb[10];b="good!”;

C.charb[10]jstrcpy(b,"good!”);

D.charb[10]="good!”;

11.执行下面程序段,给x,y赋值时,不能作为数据分隔符

的是()。

intx,y;

scanf(w%d%d",&x&y);

A.回车

B.Tab键

C.回车

D.逗号

12.已知ch是字符型变量,下面不正确的赋值语句为

()0

A.ch=,a+b';

B.ch='';

C.ch='T+'9';

D.ch=5+9;

13.下面程序段的输出结果是()。

charc1="6',c2='O';

printf(w%c,%c,%d,%dw,c1,c2,c1-c2,c1+c2);

A.因输出格式不合法,输出出错信息

B.6,0,6,102

C.6,0,7,6

D.6,0,5,7

14.在C语言的循环语句for,while,dowhile中,用于直

接中断最内层循环的语句是()。

A.switch

B.continue

C.break

D.if

15.下面的循环结构中,不是无限循环的是()。

A.for(i=1;;i++)printf("%d”,i—);

B.i=1;while(i—){printf(w%dw,i++);}

C.i=1;do{printf(w%dw,i);i++;}whiIe(—i);

D.for(i=0;i;i++)printf(w%dw,i);

16.下面程序段的运行结果是()。

charc□=”will;

u

printf("%dtstrlen(c));

A.14

B.3

C.9

D.字符串中有非法字符,输出值不确定

17.下面说法中正确的是:在C语言程序中()。

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和调用均不可以嵌套

D.函数的定义和调用均可以嵌套

18.若用数据名作为函数调用的实参,传递给形参的是

()0

A.数据的首地址

B.数组第一个元素的值

C.数组中全部元素的值

D.数组元素的个数

19.以下叙述中不正确的是()。

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个结函数内的符合语句中定义的变量在本函数范围

内有效

20.一个变量的指针是指()。

A.该变量的值

B.该变量的地址

C.该变量的变量名

D.该变量的标志

21.若有定义:inta[10],*p=a;,则p+5表示()。

A.元素a[5]的地址

B.元素a[5]的值

C.元素a[6]的地址

D.元素a[6]的值

22.C语言规定,在一个源程序中,main函数的住置

()0

A.必须在最开始

B.必须在系统调用的库函数的后面

C.可以任意

D.必须在最后

23.一个C语言程序是由()。

A.一个主程序或若干个子程序组成

B.函数组成

C.若干过程组成

D.若干个子程序组成

24.下面哪项是构成C语言的基本单位()。

A.函数

B.过程

C.子程序

D.子例程

25.以下正确的说法是()。

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

B.return后边的值不能为表达式

C.如果函数值的类型和返回值类型不一致,以函数值类型

为准

D.如果形参与实参的类型不一致,以函数值类型为准

26.对于基类型相同的两个指针变量之间,不能进行的运算

是()。

A.<

B.=

C.+

D.一

27.变量的指针,其含义是指该变量的()。

A.值

B.地址

C.名

D.一个标志

28.下面程序运行的结果是()。

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-匕'+'A';

s++;

}

)

voidmain()

{charstr1[100]=wabcddfefdbd”3d-

ss(str1,c);

printf(rt%s”,str1);

}

A.ABCDDFEFDBD

B.abcDDfefDbD

C.abcAAfefAbA

D.Abcddfefdbd

29.下列说法中正确的.是()。

A.结构体变量可以作为一个整体进行其值得输入和输出

B.结构体成员项不可以是结构体

C.结构体成员项可以是结构体或其他任何C语言的数据类

D.结构体变量和结构体是相同的概念

30.下面说法中不正确的是()。

A.一个C源程序可有一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成是函数

D.在C程序中,注释语句只能位于一条语句的后面

31.若执行下面的程序段,则下面描述中正确的是()o

intk=5;

while(k=1)k—;

A.while循环执行四次

B.循环体执行一次

C.循环体一次也不执行

D.死循环

32.下面关于for循环的正确描述是()。

A.for循环只能用于循环次数已经确定的情况

B.for循环中是先执行循环体语句,后判断表达式

C.在for循环中,不能用break语句跳出循环

D.for循环的循环体可以包含多条语句,但必须用花括号

括起来

33.不正确的定义语句是()。

A.doubIex[5]={2.0,4.0,6.0,8.0,10.0);

B.inty[5]={0,1,3,5,7,9);

C.charc1[]={'1'2'3'4'5'};

D.charc2[]={,x10'JxOa','x08,);

34.下面是对s的初始化,其中不正确的是()。

A.chars[5]={aabcw);

B.chars[5]={,a'b',,c'};

C.chars[5]="”;

D.chars[5]=wabced”;

35.下面程序段的运行结果是()。

charc[5]={匕','b'c'

printf("%s",c);

A.'a,'b,

B.ab

C.abc

D.abc

36.以下说法中正确的是()o

A.C语言程序总是从第一个定义的函数开始执行

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

C.C语言程序总是从main函数开始执行

D.C语言程序中的main函数必须放在槎序的开始部分

37.下列常量中,合法的C常量是()。

A.“x-y”

B.'105,

C.'Be,

D.07ff

38.下面程序的输出结果是()。

voidmain

t

inti=011,j=11;

printf(a%d,%d",++i,j―);

A.10,11

B.12,10

C.11,11

D.10,9

39.下面程序的执行结果为()。

voidmain()

{intx=20,y;

y=++x;y+=x;

printf(w%d,"y);

y=x——;y+=x;

printf(w%d,"y);

}

A.42,41

B.42,42

C.40,41

D.42,40

40.下面程序的输出结果是()。

voidmain()

{inti=010,j=10;

printf("%d,%d”,i++,++j);

}

A.10,11

B.11,11

C.8,11

D.8,10

41.能正确表示a和b同时为正或同时为负的表达式是

()O

A.(a>=0||b>=0)&&(a<0||b<0)

B.(a>=0||b>=0)&&(a<0&&b<0)

C.(a+b>0)&&(a+|b<0)

D.a*b>0

42.以下关于运算符优先顺序的描述中正确的是()。

A.关系运算符<算术运算符<赋值运算符<逻辑运算符

B.逻辑运算符<关系运算符<算术运算符<赋值运算符

C.赋值运算符<逻辑运算符<关系运算符<算术运算符

D.算术运算符<关系运算符<赋值运算符<逻辑运算符

43.下面程序的运行结果是()。

voidmain()

{inta,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

}

A.6,1

B.2,1

C.6,0

D.2,0

44.若有条件表达式(exp)?a++:b--,则以下表达式中完全等

价于表达式(exp)的是()。

A.(exp==0)

B.(exp!=0)

C.(exp==1)

D.(exp!=1)

45.程序段如下,则正确的执行结果是()。

intk=0;

while(k++<=2);

printf(w%d”,k);

A.2

B.3

0.4

D.无结果

46.下面说法中正确的是()。

A.在C语言函数中,必须有形参

B.在C语言函数中,形参必须是变量名

C.在C语言函数中,可以有也可以没有形参

D.在C语言函数中,数组名不能做形参

47.下面说法正确的是,在C语言中()O

A.实参和与其对应的形参各占用独立的存储单元

B.实参和与其对应的形参共占用一个存储单元

C.只有当实参和与其对应的形参同名时才共占用存储单元

D.形参是虚拟的,不占用存储单元

48.下面不正确的说法是:C语言规定()。

A.实参可以是常量、变量或表达式

B.形参可以是常量、变量或表达式

C.实参传递给形参时,要求实参必须有确定的值

D.形参应与其对应的实参类型可以不一致

49.C语言允许函数值类型缺省定义,此时函数值隐含的类

型是()。

A.float型

B.int型

C.Iong型

D.double型

50.若有以下定义:chars[10]="include*p=s;,则不

能代表字符'u'的表达式为()。

A.s[4]

B.s+4

C.*(p+4)

D.p+=4,*p;

51.C语言规定,简单变量做实参时,它和对应形参之间的

数据传递方式是()。

A.地址传递

B.单向值传递

C.由实参传给形参,再由形参传给实参

D.由用户指定传递方式

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

A.return语句中的表达式类型所决定

B.调用该函数时的主调函数类型所决定

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

D.在定义该函数时所指定的函数类型所决定

53.若有int*p,a[10];p=a;,则下列写法不正确的是

()O

A.p=a+2

B.a++

C.*(a+1)

D.p++

54.若用数组名作为函数调用的实参,传递给形参的是

()0

A.数组的首地址

B.数组第一个元素的值

C.数组中全部元素的值

D.数组元素的个数

55.若使用以为数组名作函数实参,则下面说法中正确的是

()0

A.在被调函数中,与该实参相对应的形参必须是同类型的

数组名或指针变量

B.实参数组类型与形参数组类型可以不四配

C.在被调函数中,不需要考虑形参数组的大小

D.实参数组名与形参数组名必须一致

56.设p1、p2是指向同一个字符串的指针变量,c为字符

变量,则不能正确执行的赋值语句为()。

A.c=*p1+*p2;

B.p2=c;

C.p1=p2;

D.c=(*p1)*(*p2);

57.若有一下结构体定义,则正确的引用和定义是

()0

structexampIe{intx;inty;}v1;

A.example.x=10

B.exampIev2;v2.x=10;

C.structv2;v2.x=10;

D.structexampIev2={10,5};

58.说明一个结构体变量时,系统分配给它的内存是

()0

A.各成员所需内存量的总和

B.结构体中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构体中最后一成员所需内存量

59.在C语言中,文件由下面拿个组成()。

A.记录

B.数据行

C.数据块

D.字符(字节)序列

60.下面程序段的运行结果是()。

charc[]=wwi11”;

printf("%dstrlen(c));

A.14

B.3

0.9

D.字符串中有非法字符,输出值不确定

61.以下叙述中不正确的是()。

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个结函数内的符合语句中定义的变量在本函数范围

内有效

62.一个变量的指针是指()O

A.该变量的值

B.该变量的地址

C.该变量的变量名

D.该变量的标志

c语言练习试题库3

一选择题(7分,每小题0.5分)

1.C语言源程序的基本单位是()o

A过程B函数C子程序D标识符

2.下列程序的输出结果是()o

main()

{inta=7,b=5;

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

}

A5B1C0D不确定值

3.假设变量a,b均为整型,表达式

(a=5,b=2,a>b?a++:b++,a+b)的值是()。

A7B8C9D2

4.设a为int型变量,执行下列赋值语句后,a的取值分别

是()。

a=125.534;a=(int)125.521%4;a=5«2;

A125,31,1B125,1,20C125,31,20D125.534,2,20

5.设有如下程序段,下面描述中正确的是()。

intk=10;while(k=0)k=k-1;

A循环执行一次B循环是无限循环C循环体语句一次也不

执行D循环体语句执行一次

6.以下程序的输出结果为()o

inti;

voidprt()

{for(i=5;i<8;i++)printf("%c",

printfC");

}

main()

{for(i=5;i<=8;i++)prt();

}

***D***★*士★★虫aaa*士*c***

ATTTO*I**I*T,1'•1,•I**I**T**T*TFT!■TTT11*T*TT

7.在C语言程序中,以下说法正确的是()o

A函数的定义可以嵌套,但函数的调用不可以嵌套

B函数的定义不可以嵌套,但函数的调用可以嵌套

C函数的定义和函数的调用都不可以嵌套

D函数的定义和函数的调用都可以嵌套

8.以下函数调用语句中含有()个实参。

func((e1,e2),(e3,e4,e5));

A2B3C5D语法错误

9.以下程序的输出结果为()o

#defineADD(x)x*x

main()

{inta=4,b=6,c=7,d=ADD(a+b)*c;

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

}

Ad=70Bd=80Cd=140Dd=700

10.已知职工记录描述如下,在Turbo0中,系统为变量w

分配()字节的空间。

structworker

{intno;

charname[20];

charsex;

union

{intday;intmonth;intyear;}birth;

}w;

A29B20C25D6

11.设有以下定义,值为5的枚举常量是()。

enumweek{sun,mon=4,tue,wed,thu,fri,sat}w;

AtueBsatCfriDthu

12.下面选项中正确的赋值语句是(设char

a[5],*p=a;)()o

Ap="abcd";Ba="abcd";C*p="abcd";D*a="abcd";

13.设有以下程序段,则值为6的表达式是()。

structst{intn;structst*next;};

staticstructsta[3]={5,&a[1],7,&a[2],9,0},*p;

P=&a[O];

Ap++->nB++p->nCp->n++D(*p).n++

14.C语言中的文件类型只有()0

A索引文件和文本文件两种B文本文件一种

C二进制文件一种DASCII码文件和二进制文件两种

二判断对错,对的划“,错的划“X”(5分,每小题

0.5分)

1.在TurboC中,整型数据在内存中占2个字节。()

2.inti=20;switch(i/10){case2:printf("A");case

1:printf("B");}的输出结果为A。()

3.break语句用在循环体中,可结束本层循环,continue

语句用在循环体中,可结束本次循环。()

4.函数的递归调用不过是一个函数直接或间接地调用它自

身。()

5.函数strlenC'ASDFG")的值是7。()

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

值。()

7.结构体类型只有一种。()

8.char*p="girr';的含义是定义字符型指针变量p,p的值

是字符串"girl"。()

9.若有定义:char*p(chara[10]);则p是函数名。()

10.用fopen("fiIe","r+");打开的文件"fiIe"可以进行修

改。()

三写出下列程序的运行结果(10分,每小题2分)

1.fIoataverage(fIoatarray[10])

{inti;

floataver,sum=array[0];

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

sum=sum+array[i];

aver=sum/10;

return(aver);

}

main()

{float

score[10]={89,67.5,78,91,56,82.5,65,70,79,88),aver;

inti;

aver=average(score);

printf("averagescoreis%5.2f”,aver);

)

2.main()

(chara[5]={(kf,<B,,,C',十',},*p=a,**pa;

for(p=0;p<a+5;p++)<p="">

printf(w%2cw,*p);

printf("”);

printf(w%2cn,**(pa=&p));

}

3.main()

{inta,b,s=0;

for(a=1,b=1;a<=100;a++)

{if(b>=20)break;

if(b%3==1)

{b+=3;continue;}

b-=5;

}

printf("a=%db=%dn,a,b);

}

4.main()

{printf("main():%d”,fact(5));

fact(-5);

}

fact(intvaIue)

{intf;

if(vaIue<0)

{printf(<fArgerror");

return(-1);

}

elseif(vaIue==11|value=0)f=1;

eIsef=vaIue*fact(vaIue-1)+1;

printf("ThiscalledvaIue=%dn,f);

returnf;

}

5.main()

{inta=012,b=0x12,k=12;

charc='102',d='';

printf("a=%db=%dk=%d”,a,b,k);

printf("c=%c,d=%c%o”,c,d,a);

a='A';c=49;

printf("a=%dc=%c”,a,c);

)

四阅读下列程序,在处填入适当内容,使程序完整(8分,

每个空1分)

1.有一个3*4矩阵,求其中的最大元素。

max_value((1))

{inti,j,max;

max=array[0][0];

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

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

if(array[i][j]>max)

max=array[i][j];

⑵;

}

main()

{inta[3][4],i,j;

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

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

(3);

printf("maxvalueis%d”,max_vaIue(a));

}

2.输入x、y两个整数,按先大后小的顺序输出x、V。

#include“stdio.h”

main()

{intx,y,*px,*py,(4);

scanf("%d%d”,&x,&y);

⑸;⑹;

if(x<y)<p="">

P=px;px=py;py=p;}

printf(“x=%d,y=%d”,x,y);

printf(“MAX=%d,MIN=%dw,*px,*py);

}

3.用选择排序法对任意10个整数按照由小到大排序。

main()

{inta[11],i,j,k,t;

printf("Pleaseinput10numbers:");

for(i=1;i<11;i++)scanf("%d",&a[i]);

printfC");

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

{(7);

for(j=i+1;(8);j++)

if(a[j]>a[k])k=j;

if(k!=i)

tt=a[k];a[k]=a[i];a[i]=t;}

}

printf("Thesortednumbers:");

for(i=1;i<11;i++)printf("%d",a[i]);

)

答案

一选择题(7分,每小题0.5分)

1.B2.C3.B4.B5.C

6.A7.B8.A9.A10.C

11.A12.A13.B14.D

二判断对错,对的划“J”,错的划“X”(5分,每小题

0.5分)

1.X2.X3.V4.V5.X

6.X7.X8.X9.V10.V

三写出下列程序的运行结果(10分,每小题2分)

1.2.3.

4.5.

四阅读下列程序,在处填入适当内容,使程序完整(8分,

每个空1分)

1.(1)intarray[3][4](intarray[][4])(2)return(max)

(3)scanf(,&a[i][j])

2.(4)*p(5)px=&x(py=&y)(6)py=&y(px=&x)

3.(7)(8)

2003C语言试题3

一选择题(24分,每小题2分)

1.已知函数fread的调用形式为fread(buffer,size,

count,fp),其中buffer代表的是()。

A存放读入数据项的存储区B存放读入数据的地址或指向

此地址的指针

C一个指向所读文件的文件指针D一个整形变量,代表要

读入的数据项总数

2.以下程序的输出结果为()o

main()

{inti=010,j=10;

printf("%d,%d",i++,j—);

}

A11,9B9,10C8,10D9,9

3.设a为int型变量,执行下列赋值语句后,a的取值分别

是()oa=125.534;a=20.0/3;a=(int)125.521%4;a=5«2;

A125,6,31,1B125,6,1,20C125,6.666666,31,20D

125,534,6.666666,2,20

4.设i和k都是int类型,则for循环语句()。

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

A循环结束的条件不合法B循环体一次也不执行0循环

体只执行一次D是无限循环

5.以下程序的输出结果为()o

main()

{charc;

inti;

for(i=65;i<68;i++)

{c=i+32;

switch(c)

{case'a':case1b':case'c':printf("%c,",c);break;

defau11:printf("end");)

}

}

Aa,b,c,endBa,a,a,endCa,a,a,Da,b,c,

6.函数调用语句:fseek(fp,-10L,2);的含义是()。

A将文件位置指针从文件末尾处向文件头的方向移动10个

字节

B将文件位置指针从当前位置向文件头的方向移动10个字

C将文件位置指针从当前位置向文件末尾方向移动10个字

D将文件位置指针移到距离文件头10个字节处

7.以下程序的输出结果为()o

main()

{chars1[40]="country",s2[20]="side";

inti=0,j=0;

while(s1[i]!='\0')i++;

whiIe(s2[j]!='\0')s1[i++]=s2[j++];

s1[i]=0;

printf("%s",s1);

}

AsideBcountry0sidetryDcountryside

8.下列说法不正确的是()o

A主函数main中定义的变量在整个文件或程序中有效

B不同函数中,可以使用相同名字的变量

C形式参数是局部变量

D在一个函数内部,可以在复合语句中定义变量,这些变量

只在本复合语句中有效

9.在下列程序段中,枚举变量5的.值是()。

enumcolor{red,yeIIow,bIue=4,green,white}c1;

c1=yellow;c1=white;

A1B3C5D6

10.设有说明int(*ptr)();其中标识符ptr是()。

A是一个指向整形变量的指针B是一个指针,它指向一个

函数值是int的函数

0是一个函数名D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的

方式为()o

Aintp;Bint(*p)[n];Cint*p[n];Dint(*p)();

12.具有相同类型的指针类型变量p与数组a,不能进行的操

作是()o

Ap=a;B*p=a[0];Cp=&a[0];Dp=&a;

二判断对错,对的划“,”,错的划“X”(20分,每小

题2分)

1.参加位运算的数据可以是任何类型的数据。()

2.若有定义和语句:inta;charc;fIoat

f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘输入:10,A,12.5,

则a=10,c=,f=12.5o()

3.C语言把文件看作是一个字符(字节)的序列。()

4.若有宏定义:#defineS(a,b)t=a;a=b;b=t由于变量t

没定义,所以此宏定义是错误的。()

5.在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论