您的当前位置:首页正文

C语言习题课(附答案)

2023-01-31 来源:易榕旅网
C语言习题课

一、单项选择题:

1.以下 A 是C语言中有效的变量名称。 A._abc

B.2abc C.char D.a#3

变量名只能以下划线和字母开头 2.下面四个说法中错误的是 B 。

A.for循环不仅可以和for循环嵌套,而且可以和While循环嵌套。 B.当在循环体内执行continue语句的时候,将结束整个循环。 C.while循环最少循环0次,do-while循环最少循环1次。 D.goto语句也可以实现循环的功能。

3.在while ( x )中的x与下面条件表达式等价的是 D A.x = = 0 B.x= = 1 C.x! = 1 D.x ! = 0 4.为表示关系x≥y≥z,应使用C语言表达式 A

A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z)

5.设有如下定义:int x=9,y=2,z;则语句printf(“%d\\n”,z= x/y);的输出结果是 C

A.1 B. C.4 D.3 整形中的“/”是整除

6.若有以下语句:static char x[ ]=”12345”;static char y[ ]={‘1’,’2’,’3’,’4’,’5’};则正

确的说法是 B 。

A.x数组和y数组的长度相同 B.x数组的长度大于y数组的长度 C.x数组的长度小于y数组的长度 D.x数组与y数组等价

字符串后有一个“\\0”

7.已知有定义:char ch;则下面正确的赋值语句为 A 。

A.ch='X' B.ch='55' 8.以下说法中正确的是 C

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

B.在C语言程序中,要调用的函数必须在main()函数中定义 C.C语言程序总是从main()函数开始执行

D.C语言程序中的main()函数必须放在程序的开始部分 语言中,形参的缺省存储类型说明是: A

C.ch=\"M\"

D.ch=\"55\"

语言中的简单数据类型有: B

A.整型 实型 逻辑型 B.整型 实型 字符型 C.整型 字符型 逻辑型 D.整型 实型 逻辑型 字符型 11.以下程序段的输出结果是: C

A.1

int x=3;

do{

printf(\"%3d\

B.3 0 C.1 -2

D.死循环 }while(!(--x)); 12.以下非法的赋值语句是: A

A.n=(i=2,++i); B.j++; C.++(i+1); D.x=y>0;

13.设a和b均为double型变量,且a=,b=,则表达式(int)a+b/b的值是: D

A.

B.6 C.

D.

14.已知x=3,y=2,则表达式x*=y+8的值为: C

A.3 B.2 C.30 D.10 y+8是一个整体

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

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

B.2 C.1 D.0

A.不定值

16.为了测试字符串的实际长度,C语言规定了一个“字符串结束标志”,这个结束标志字符是: B

A.‘\\n’ B.‘\\0’

C.‘\\x’

D.‘\\9’

程序的三种基本结构是: A

A.顺序结构、选择结构、循环结构 B.逻辑结构、层次结构、网状结构 C.顺序结构、逻辑结构、选择结构 D.层次结构、顺序结构、循环结构

18.若int i=10;执行完下面程序判断后,变量i的正确结果是 D 。

A.10 switch ( i ) B.11 {

C.12 case 7: i+=1; D.13 case 10: i+=1;

case 17: i+=1; default: i+=1;

}

case后有break,结束跳出结果,没有break,继续执行 具体见书本105页 19.下列关于C语言注释的描述中,错误的是: D 。 A.C语言中用/*……*/表示注释部分

B.注释只是给人看的,对编译和运行不起作用 C.注释可以加在程序中的任何位置 D.C语言中用{*……*}表示注释部分

20.下列关于C程序的描述中,错误的是: D 。

A.C程序是由函数构成的

B.一个C程序总是从main函数开始执行

C.C程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上 D.C语言中是利用输入/输出运算符构成输入/输出语句完成输入/输出操作的 源程序的后缀名默认为: B 。 A.cpp

B.c

C.obj

D.exe

C语言的默认后缀名是.c,在C++中才是cpp 22.以下不属于C语言的基本数据类型的是: B 。 A.整型

B.布尔型

C.字符型

D.实型

23.下列标识符中,符合C语言语法规范的是: C 。 A.

下列选项中,不是C语言中的关键字的是: C 。 A.auto

B.if

C.VOID

D.break

25.下列常量中,合法的长整型常量是: A 。 A.0L

长整型的范围是 -48~47

26.设int型变量m,n,a,b,c,d均为0,执行表达式(m=a==b)||(n=c==d)后,m和n的值是: C 。 A.0,0

B.0,1

C.1,0

D.1,1

B.00

C.

D.2e+2

当在“或”的前面为1,后面不再执行。在“与”前面为0,后面也不在执行,出现“短路”现象。 27.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是: C 。 A.-3

B.9

C.-12

D.6

28.假设double型变量x,y已经正确定义,则表达式x=1,y=x+3/2的值是: D 。 A.1

B.

C.2

D.

29.已知’A’的ASCII码为65,则下列程序的运行结果为: A 。

main() {

char ch1=’A’; char ch2=ch1+3;

printf(“%d,%c\\n”,ch1,ch1);

printf(“%d,%c”,ch2,ch2); } A.65,A 68,D

B.A,65 D,68

C.A,D 65,68

D.D,68 A,65

30.以下关于while语句的叙述正确的是 B A.while语句构成的循环必须用break语句才能退出

B.while循环语句中,当while子句中的表达式值为零时,结束循环 C.不能使用while语句来构成循环结构 D.while语句的循环体至少被执行一次 二、填空题:

1.程序段float x=; printf(“x=%-10.2f”,x);执行时输出的结果为: □□□□ p76 2.设x,y,z,k都是int型变量,则执行表达式x=(y=4,z=16,k=32)后,x的值为: 32 3.要将两个字符串连接成一个字符串,可以使用的标准库函数名为: strcat P147

4.多分支选择结构中,若在执行某一个case语句后,使流程跳出switch结构,应该使用语句 break p105。 5.若有定义int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},则a[1][2]= 7 p137 语言中,结束本轮循环,将循环是否继续交给循环判断条件确定的语句是: continue 。 7.设x=,a=7,y=,则算术表达式x+a%3*(int)(x+y)%2/4的值为: 语言中,函数是程序的基本构成单元,其中 main 函数是必须的,且唯一。 9.在C语言程序中,用关键字 float 定义单精度实型变量。

10.设有语句“int i=1,s=1;for(;s+i<6;i++) s+=i;”,其中for语句的循环次数为 2 。 11.已知有声明“int x=1,y=2”,则执行表达式“(x>y)&&(--x>0)”后x的值为 1 。

12.多分支选择结构中,若在执行某一个case语句后,使流程跳出switch结构,应该使用语句 break p105 语言中的if语句属于三种基本结构中的 选择 结构的语句。

14.若变量ch为char类型,判断ch为数字字符的表达式是 ch>’0’&& ch<’9’ 。 15.设x=,a=7,y=,则算术表达式x+a%3*(int)(x+y)%2/4的值为: 语句只能用在三种基本结构中的 循环 结构的语句中。

17.如果在用户的程序中要使用C库函数中的数学函数时应在该源文件中使用的include命令是: 18.若有定义:int x[5]; 则访问x数组中的元素时,下标的上限为: 4 。

语言中,函数是程序的基本构成单元,其中 main 函数是必须的,且唯一。 语言本身没有输入输出语句,格式化的标准输出是借助库函数 <> 实现。 三、程序阅读题:

1.阅读下列程序,并给出程序运行的结果。

void main() {

int n,d,k; n=263; d=1; k=1; do {

k*=n%10; n/=10;

printf(\"%d,\

d++;

}

}while(n); printf(\"\\n\"); printf(\"%d\\n\ printf(\"%d\\n\

运行结果:1,2,3 36 0

2.阅读下列程序,并给出程序运行的结果。

void main() {

int x=2345,t;

int sum,muti; sum=0; muti=1;

printf(\"数字为:%d\\n\ while (x!=0) { }

t=x%10; sum+=t; muti*=t; x=x/10;

printf(\"构成数字的和:%d\\n\ printf(\"构成数字的乘积:%d\\n\ }

运行结果:数字为:2345 构成数字的和:14 构成数字的乘积:120

3.阅读下列程序,并给出程序运行的结果。

void main( ) {

int x=20,y=30,z=60;

while(xprintf(“%d\\n”,x);

printf(“%d\\n”,y);

printf(“%d\\n”, z);

} 运行结果:32 34 30

4.阅读下列程序,并给出程序运行的结果。

void main() {

int i,j,l,m,a[10]={9,8,7,6,5,4,3,2,1,5}; for(i=0;i<=8;i++) {

l=i;

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

if(a[j]l=j;

if(l!=i) {

m=a[i]; a[i]=a[l]; a[l]=m; }

}

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

{

printf(\"%d \

if(i%3==0&&i!=0)

printf(“\\n”);

}

}

运行结果:1 2 3 4 5 5 6 7 8 9

四、编程题:(8分每题,共16分)

1.写一个函数,输入一个四位数字,要求输出这4个数字字符,但每两个数字间空一个空格。例如输入1990,应该输出“1 9 9 0”。 算法一: # include <> void main( ) {

π11111 int a,b,c,d,e; 写程序,用公式 ≈1- + - + - +…求π的近似值,直到最后一项小于

435791110为止。

解法一: #include<> #include<> void main() {

double x=1,i=1; f\\n”,pi); }

3.输入一行字符(不超过100),将其中的大写字符变成小写,小写字符变成大写,其余字符不变。

解法一: # include <> void main() {

-5

char c;

while((c=getchar())!='\\n') 下程序把100~200之间不能被3整除的数输出

# include <> void main() { int i;

for (i=100;i<=200;i++) 方法一: # include <> void main() {

int x,y,z,t;

printf(\"请输入要比较的三个数:\"); scanf(\"%d %d %d\ if (x>y) { t=x; x=y; y=t; } if(y>z) { t=z; z=y; } if (x入3个数,按从小到大的顺序输出。 y=t; else { y=x; x=t; }

printf(\"%d %d %d\\n\ } 方法二:

100

# include <> 以下程序用while语句计算式子n

n=1

方法一:用while计算

# include <> 100~200间的全部素数。 方法一: # include <>

void main() {

int i , n ;

for(n=101 ;n< 200;n+=2) {

for(i=2;i<=n-1;i++) if(n%i==0) break; if(i== n )

printf(\"%5d\\n\ }

}

方法二: # include <> # include <> void main() {

int m,i,k,n=0;

for(m=101 ;m<=200;m+=2) {

k=sqrt(m);

for(i=2;i<=k;i++) if(m%i==0) break;

if (i>=k+1) {

printf(\"%d\\n\ n+=1; }

} }

π1121231234

8.函数pi()的功能是根据以下公式求π值, =1+ + × + × × + × × × +…

23353573579直到最后一项小于10为止。

#include<>

double jiecheng1(int x) 断输入的一个年份是否是闰年。

# include<> void main()

-5

printf(\"\\n\");

{ int x;

printf(\"请输入年份:\"); scanf(\"%d\

if(x%400==0||(x%4==0&&x%100!=0)) 写程序,在屏幕上打印输出下列图形。

1 # include < > 222 void main() 33333 {

4444444 for (int i=1;i<=9;i++) 出所有“水仙花数”,所谓“水

仙花数”是指一个3位数,其各位数字立方和等于其本身。例如:153是“水仙花数”,因为153=1+5+3

# include <> # include <> void main() {

int a,b,c,i; double x;

for(i=100;i<1000;i++) {

a=i/100; b=(i-a*100)/10; c=i-a*100-b*10;

x=pow(a,3)+pow(b,3)+pow(c,3); if(x==i) } }

printf(\"%d\\n\

3

3

3

12. 编写程序,输入三角形三条边的边长,求三角形的面积。

#include <> # include <> void main( ) {

float a,b,c; double s,t;

printf(\"请输入三角形三边:\"); scanf(\"%f %f %f\

if(((a+b)<=c)||((a+c)<=b)||((b+c)<=a)) main() x1=(x2+1)*2; { x2=x1; int day,x1,x2; day--; day=9; }

x2=1; printf(\"while(day>0) }{

子吃桃P129 桃子总数=%d\\n\

因篇幅问题不能全部显示,请点此查看更多更全内容