上述程序有一条语句出现在程序的位置不正确。这条语句是 。 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
五、编程题(本大题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;