600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言期末复习题

C语言期末复习题

时间:2020-01-25 00:34:46

相关推荐

C语言期末复习题

目录

一、选择题

二、填空题

三、读程序,写结果

四、改错题

五、编程题

一、选择题

1.以下不是C语言的特点的是( C)

A.C语言简洁、紧凑 B.能够编制出功能复杂的程序

C. C语言可以直接对硬件进行操作 D.C语言移植性好

2.叙述不对的是:( D)

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

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

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

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

3.一个c程序的执行是从( A).

A.main( )函数开始,直到main( )函数结束

B.第一个函数开始,直到最后一个函数结束

C.第一个语句开始,直到最后一个语句结束

D.main( )函数开始,直到最后一个函数结束

4. 已知各变量的类型说明如下:

int k, a, b;

unsinged long w=5;

double x=1.42;

则以下不符合C语言语法的是 ( A)

A.x%(-3)

B.w+=-2;

C.k=(a=2,b=3,a+b)

D.a+=a-=(b=4)*(a=3)

5. 若以下变量均是整形,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为( B)

A.7 B.8 C.9 D.10

6.当输入数据的形式为:25,13,10 <回车>时,以下程序的输出结果为( D)

main()

{int x,y,z;

scanf(“%d%d%d”,&x,&y,&z);

printf(“x+y+z=%d\n”,x+y+z);

}

A.x+y+z=48

B.x+y+z=35

C. x+z=35

D. 不确定值

7. sizeof(float)是( B)。

A.一个双精度型表达式 B. 一个整型表达式

C.一种函数调用 D. 一个不合法的表达式

8.能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是( C

A. (x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)

B. (x>=1)││(x<=10) ││(x.>=200) ││(x<=210)

C. (x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)

D. (x>=1)││(x<=10)&& (x.>=200) ││(x<=210)

解析:根据C语言运算符的优先级,&&要高于||,所以要先算“与”再算“或”,答案为:C

9. 设有说明: char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为( D)。

A.float B.char C.int D.double.

10. 请阅读以下程序:

#include <stdio.h>

main( )

{ int a=5 , b=0 , c=0;

if (a=b+c) printf(“* * *\n”);

else printf(“$ $ $\n”); }

以上程序 (D)

A. 有语法错误不能通过编译

B. 可以通过编译但不能直接通过连接

C. 输出* * *

D. 输出$ $ $

11. 以下说法正确的是( D).

A. 输入项可以为一个实型常量(变量),如scanf(“%f”,3.5);

B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);缺变量

C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);

D. 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);

12. C语言中while和do-while循环的主要区别是。( A)

A. do-while的循环体至少无条件执行一次

B. while 的循环控制条件比do-while的循环控制条件严格

C. do-while允许从外部转到循环体内

D. do-while允许从外部转到循环体内

13. 巳知字母A的ASCII码是65,以下程序的执行结果是( D)。

#include<stdio.h>

main()

{

char c1='A',C2='Y';

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

A.A,Y B.65,65 C.65,90 D.65,89

14.在c语言中,引用数组元素时,其数组下标的数据类型允许是。 ( C)

A. 整型常量

B. 整型表达式

C. 整型常量或整型表达式

D. 任何类型的表达式

15. 逻辑运算符两侧运算对象的数据类型( D).

A.能是0或1

B.只能是0或非0正数

C.只能是整型或字符型数据

D.可以是任何类型的数据

16. 以下正确的函数定义形式是。 (A)

A.double fun(int x,int y)

B. double fun(int x;int y)

C. double fun(int x,int y);

D. double fun(int x,y);

17. 以下不正确的if语句形式是( C ).

A.if(x>y&&x!=y);

B.if(x==y)x十=y;

C.if(x ! =y)scanf(“%d”,&x) e1se scanf(”%d,&y);

D.if(x<y){x十十;y十十;}

18.设有定义:int n=0,* p=&n, q;下列选项中,正确的赋值语句是(D)

A.p=1 B.*q=2 C.*q=p D.*p=5

19. 阅读以下程序

main()

{

int a=5,b=0,c=0;

if(a=b+c) printf(“***\n”);

else printf(“$$$\n”);

}

以上程序 ( A).

A.语法有错不能通过编译 B.可以通过编译但不能通过连接

C.输出*** D.输出$$$

20.系统的标准输入文件是指( A)

A.键盘

B.显示器

C.软盘

D.硬盘

二、填空题

在C语言中,单目运算符的结合方向(运算方向)是_____自右向左_______。表达式8/4*(int)2.5/(int)(1.25*3.7+2.3)值的数据类型为( int型(整型))。循环语句for(;;) printf("OK \n");和do { printf("OK\n");} while(0);执行完毕循环,循环次数分别是______无限___________________1_____4.若x为int型变量,则执行以下语句后x的值是( -14)

x=7;

x+=x-=x+x;

.结构化程序设计的三种基本结构是:选择结构、循环结构和____顺序结构____________。有int a=3,b=4,c=5;则表达式a||b+c&&b= =c的值为( 1)。设宏定义#define D (x) x/x, 则引用D(2+3)后的值是______6_________。在C语言中,二维数组元素在内存中的存放顺序是( 按行存放)。若有定义:double x[3][5];则x数组中行下标的下限为( 0),列下标的上限为(4)。C语言规定,可执行程序的开始执行点是( 主函数(main函数))。

三、读程序,写结果

1.#define PRICE 30

#include <stdio.h>

void main()

{

int num,total;

num=10;

total=num*PRICE;

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

}

以上程序的输出结果为total=300.

2.#include "stdio.h"

void main( )

{ int a,m=0,n=0,k=0;

scanf("%d",&a);

switch(a)

{ case 1: m++; break;

case 2:

case 3: n++; break;

case 4:

case 5: k++;

}

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

}

从键盘上输入1,写出程序运行的结果为m=1,n=0,k=0

3.以下程序的运行结果是:AB

#include <stdio.h>

void main()

{ char a;

a='B';

putchar('\101'); putchar(a);

}

4.下面程序运行时从键盘上输入15,20,运行结果为__a=15,b=20_____________

#include "stdio.h"

void main( )

{ int a,b,t;

t = 0;

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

if (a>b)

{ t = a ;a = b ;b = t ;}

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

}

5.#include "stdio.h"

void main( )

{ int i,m,p,a[10]={9,8,7,6,1,3,5,18,2,4};

m=a[0];

p=0;

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

if (a[i]<m)

{m=a[i]; p=i;}

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

}

以上程序的输出结果为m=1,p= 4

四、改错题

1.#include <stdio.h>

voidmain( )

{ int x , y ;

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

if (x>y;)

printf(“%d”,x);

else

printf(“%d”,y);

}

改为:#include <stdio.h>

voidmain( )

{ intx , y ;

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

if (x>y)

printf(“%d”,x);

else

printf(“%d”,y);

If后面分号去了

2 . #include <stdio.h>

void main()

{ char c;

c=gets( );

putchar(c);

}

改为:

#include <stdio.h>

void main()

{ char c;

c=getchar( );

putchar(c);

} gets改为getchar

解析:gets函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读到字符串中,而getchar函数是读取一个字符,包括回车键也会被读成一个字符

3.#include <stdio.h>

void main()

{ int max(int x,int y);

int a,b,c;

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

c=max(a,b);

printf("Max is %d",c);

}

max(int x, int y)

{ int z;

z=x>y?x:y;

return(x);

}

改为:

#include <stdio.h>

void main()

{ int max(int x,int y);

int a,b,c;

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

c=max(a,b);

printf("Max is %d",c);

}

max(int x, int y)

{ int z;

z=x>y?x:y;

return(z);

}

x改为z

五、编程题

1.有一函数

编一程序,输入一个x值,输出y值。(7分)

#include<stdio.h>int main(){int x,y;printf("请输入x:");scanf("%d",&x);if(x<0)y=-1;else if(x==0)y=0;elsey=1;printf("y=%d",y);}

2.求一维数组中下标为偶数的元素之和,补全程序

#include "stdio.h"

void main( )

{ int i,sum=0; /*请初始化sum为0 */

int a[]={2,3,4,5,6,7,8,9};

for(i=0; i<8;i=i+2) /* 请补充完整循环语句 */

sum+=a[i];/* 请用sum保存该数组中下标为偶数的元素之和 */

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

}

3.从键盘上输入20名学生的C语言成绩,计算出平均成绩,并输出。

#include<stdio.h>int main(){ int i; double a[20],sum=0.0,ave;printf("请输入20个学生成绩:\n");for(i=0;i<20;i++){ scanf("%lf",&a[i]);sum+=a[i];}ave=sum/20.0;printf("平均成绩为:%.2lf",ave);return 0;}

5.编程打印出所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。如153=13+33+53。

编程提示:定义一个变量作为循环变量,再定义3个变量分别存放三位数的每位数字,在循环体中将一个三位数拆分成个位、十位、百位后判断循环变量的值是否为水仙花数,如果是则输出,否则不输出。程序的基本结构为:

#include "stdio.h"

void main( )

{

inta,b,c,j;/*定义4个整型变量*/

for( j=100; j<=999; j++ )

{

a=j%10; /*分离出百位数*/

b=j/10%10; /*分离出十位数*/

c=___j/100________; /*分离出个位数*/

if(j==a*a*a+b*b*b+c*c*c)

printf(“j=%d”,j);

}

printf("\n");

}

6.求二维数组中元素的最大值与最小值

4 ,4,34

37,3,12,

5,6, 5

#include<stdio.h>int main(){int a[3][3]={{4,4,34},{37,3,12},{5,6,5}};int max=a[0][0],min=a[0][0],i,j,t;for(i=0;i<=2;i++)for(j=0;j<=2;j++){if(a[i][j]<min){t=a[i][j];a[i][j]=min;min=t;}if(a[i][j]>max){t=a[i][j];a[i][j]=max;max=t;}}printf("min=%d\nmax=%d",min,max);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。