c语言综合练习题及答案 下载本文

上述程序有一条语句出现在程序的位置不正确。这条语句是 。 A)sum=0.0; B)sum+=score;

C)ave=sum/4.0; D)printf(\

14.设有如下函数定义:

int f(char * s) { char *p=s;

while(*p!= ?\\0? ) p++;

return(p-s); }

如果在主函数中用下面语句调用该函数,则输出结果应为: 。 printf(“%d\\n”, f(“goodbye!”) );

A)3 B)6 C)8 D)0 15.下面程序的输出结果是: 。

int m=13;

int fun( int x, int y) { int m=3;

return( x*y-m); } main( )

{ int a=7,b=5;

printf(“%d\\n”, fun(a,b)/m); }

A)1 B)2 C)7 D)10

二、判断题(本大题10分,每小题1分)

1.C程序是按书写的顺序执行的。( )

2.在C语言中,int、char和short三种类型数据在内存中所占用的字节数都是一样的。( ) 3. 在C程序中语句是以分号结束的。( )

4.在C语言的if语句中,else可以单独出现。( )

5.在C语言中break和continue都是循环中途退出语句,其中break语句用来跳出一次循环结构;continue语句用来结束一层循环。( )

6.C语言中while和do-while循环的主要区别是do-while语句的循环体至少会被执行一次,而while语句的循环体则可能一次也不执行。( )

7.数组首地址不仅能通过数组中第一个元素的地址表示,也可以通过数组名来表示。( ) 8.在C语言中,函数strcpy是用来连接字符串的。( )

9.函数的返回值类型是由函数的类型和return语句中表达式的类型共同决定的,当这两类型不一致时最终起决定作用的是return中表达式的类型。( ) 10.由于指针变量存储的是地址,指针变量被定义之后可以指向任一类型的变量。( ) 三、程序填空题(本大题12分,每小题2分)

1. 以下程序可求出所有水仙花数(指3位正整数中各位数字立方和等于该数本身,如

153=13+53+33),请填空。 main( )

{ int x, y ,z, a[10], m, i=0;

printf(“shui xian huan shu :\\n”); for(____(1)____;m<1000;m++) { x=m/100; y=____(2)____; z=m;

if(m==x*x*x+y*y*y*y+z*z*z) {____(3)____; i ++; } } for( x=0;x

printf(“m”,a[x] ) ; }

2. 以下程序可计算10名学生1门功课成绩的平均分,请填空。

float average( float array[10] ) { int i; float aver, sum=array[0]; for ( i=1; ____(4)____;i++) sum+=____(5)____; aver=sum/10; return(aver); } main( )

{ float score[10], aver ; int i ; printf(“\\ninput 10 scores:”);

for(i=0; i<10;i++) scanf(“%f”,&score[i] ); aver =____(6)____; printf(“\\naverage score is %5.2f\\n”, aver); }

四、写出下面程序的执行结果(本大题24分,每小题4分) 1.main( )

{ int i=2,p; p=f( i++, ++i ); printf(“%d”, p); } int f( int a, int b ) { int c;

if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 2.# include

main( )

{ int i, j ;

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

{ for ( j = 0; j<=5 ; j++ )

{ if ( i==0|| j==0|| i==3|| j==5) printf(“*”); else printf( “ ” ) ;} printf(“\\n”); } } 3. main()

{int n=0; while(n++<=1); printf(\printf(\}

4.int a=5; int b=7;

main( ) { int a=4, b=5,c;

c=plus (a,b); printf(“A+B=%d\\n”,c) ; } plus (int x, int y) { int z; z=x+y; return (z); } 5. #include

main()

{char b[]=\char *chp=&b[7]; while(--chp>&b[0]) putchar(*chp); putchar('\\n'); }

6.struct n {int x; char c; };

main( )

{ struct n a={10, ?x?}; func(a); printf ( “%d,%c”, a.x, a.c); } func(struct n b)

{b.x=20; b.c=?y?; }

五、编程题(本大题24分,第一题7分,第二题8分,第三题9分)

1. 试编程完成如下功能:输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。

2. 若有一4*4二维数组,试编程完成如下功能:

(1)求4*4列数组的对角线元素值和。

(2)将二维数组元素行列互换后存入另一数组,并将此数组输出。 3. 有两个字符串,各有10个字符,是编程完成如下功能:

(1)分别找出两个字符串中最大的字符元素;

(2)将两字符串对应位置元素逐个比较,并统计输出两个字符串对应元素大于、小于

和等于的次数。

(所有功能都通过函数调用实现) 模拟试题一答案

模拟试题一答案

一、

选择题(本大题30分,每小题2分)

1~5 D A A A A 6~10 B C D D D 11~15 C B C D A 二、 判断题(本大题10分,每小题1分) 1.× 2.√ 3.× 4.× 5.√ 6.× 7.√ 8.× 9.√ 10.×

三、程序填空题(本大题12分,每小题2分)

评分标准:全对的满分,半对半错的给一半分,全错的不得分。

1.(1)s=0 (2)m%n= =0 (3)s==m 2.(4)i<=10-j (5)a[i]>a[i+1]

(6)a[i+1]=t

四、写出下面程序的执行结果(本大题24分,每小题4分)

评分标准:全对的满分,半对半错的给一半分,全错的不得分。 1.c=F 2.over 3. ##### * #### ** ### *** ## **** #

*****

4. i=7;j=6;x=7 i=2;j=7;x=5; 5. i=10,j=2 6. 10,x

五、编程题(本大题24分,第一题7分,第二题8分,第三题9分) 1.这是一种答案,可以不使用循环,使用SWITCH语句来做。

#include

main( )

{int n=1,m=0,k,mod_mn=1; printf(“Please Input m value:\\n”); scanf(“%d”,&m); n=1;

for(k=0;;k++) {mod_mn=m/(n*10);

printf(“%d”,(m-mod_mn*n*10)/n); if(mod_mn= =0) break; n*=10; }

}

2.main( )

{int i,array[10];

int min,k=0;

printf(“\\nPlease input array 10 elements\\n”); for(i=0;i<10;i++)

scanf(“%d”,&array [i]);

printf(“Before exchange:\\n”); for(i=0;i<10;i++) printf(“]”,array[i]); min=array[0]; for(i=1;i<10;i++) if(min>array[i])

{min= array[i]; k=i; } array[k]=array[0]; array[0]=min;