printf(“%u\\n”,x); }
程序运行后的输出结果是?
(2)有以下程序:
#include
int k=5,n=0; switch(k){ case 1:
case 3: n+=1; break; default: n=0; k--; case 2:
case 4: n+=2; k--; break; }
printf(\}
程序运行后的输出结果是?
(3)有以下程序:
#include
int i,j;
for(i=1;i<4;i++){
for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j); printf(“\\n”); } }
程序运行后的输出结果是?
(4) 有以下程序
#include
void f(char p[][10], int n ) {
char t[10]; int i,j; for(i=0; i if(strcmp(p[i],p[j])>0){ strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); } } void main(void) { char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”}; f(p,5); printf(“%d\\n”, strlen(p[0])); } 程序运行后的输出结果是? (5) 有以下程序 #include char p[20]=”abcde”,q[]=”xyz”, r[]=”lmnopq”; strcpy(p+1,r); strcat(p,q); printf(“%d,%d\\n”,sizeof(p),strlen(p)); } 程序运行后的输出结果是? 三、编程题(65 分) (1)(13分)编写程序,计算数列1,1,2,3,5,8,13,21,??,的前20项之和。 (2)(12分)随机输入10个正整数,统计其中素数的个数。所谓素数,指该数只能被1和它本身整除。 (3)(12分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 (4)(15分)完成递归函数void Output(int a[],int n){ ? }的定义,实现将数组a中的n个元素逆向输出。即输出a[n-1],a[n-2],a[n-3],...,a[1],a[0]。 (5)(13分)完成函数int fun(char *s){ ? },函数返回字符串s中所含空格的个数。 08-09学年第2学期《高级语言程序设计》重修试卷 参考答案 一、简答题(10分,每小题2分) (1)5 (2)double (3)scanf(“%lf”,&x);或scanf(“%le”,&x); printf(“%f”,x);或printf(“%lf”,x);或printf(“%e”,x);或printf(“%E”,x);或printf(“%g”,x);或printf(“%G”,x); (4)顺序、分支和循环 (5)可用于switch语句中的case子句中,也可以用于循环体中。 二、阅读下列程序,写出运行结果(25分,每小题5分) (1)结果:65535 (2)结果:n=2,k=3 (3)结果: 1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 (4) 结果:6 (5) 结果:20,10 三、编程题(65分) (1)(13分)编写程序,计算数列1,1,2,3,5,8,13,21,??,的前20项之和。 #include int a=1,b=1,c,i; long s=2; for(i=3;i<=20;i++){ c=a+b; s+=c; a=b;b=c; } printf(“s=%ld\\n”,s); } (2)(12分)随机输入10个正整数,统计其中素数的个数。所谓素数,指该数只能被1和它本身整除。 #include int a[10],i,k,num=0; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++){ if(a[i]==1) { num++; continue;} for(k=2;k (3)(12分)用二维数组data存储随机输入的(4×5)20个不重复整数,输出其中的最大整数及其输入的序号(序号可能值为1,2,3,... ,20)。 #include int a[4][5],i,j,max,row,col; for(i=0;i<4;i++) for(j=0;j<5;j++) scanf(“%d”,&a[i][j]); max=a[0][0];row=0;col=0; for(i=0;i<4;i++) for(j=0;j<5;j++) if{a[i][j]>max}{max=a[i][j];row=i;col=j;} printf(“max=%d,order=%d\\n”,max,row*5+col+1); } (4)(15分)完成递归函数void Output(int a[],int n){ ? }的定义,实现将数组a中的n个元素逆向输出。即输出a[n-1],a[n-2],a[n-3],...,a[1],a[0]。 void Output(int a[],int n) { if(n==1) printf(“%d “,a[0]); else{ printf(“%d “,a[n-1]); Output(a,n-1); } } (5)(13分)完成函数int fun(char *s){ ? },函数返回字符串s中所含空格的个数。 int fun(char *s) { int num=0; wile(*s!=’\\0’) { if(*s==’ ’) num++; s++; } return num; } 华侨大学2009-2010第2学期《C语言程序设计》 补考试卷 学号________________ 姓名___________ 班级___________ 成绩______ 注意:请将所有答案写在答卷上! 一、单项选择题(50分,每小题2分) 1.在一个可运行的C源程序中,( )。 A.可以有一个或多个主函数 C.可以没有主函数 2.以下定义语句中正确的是( )。 A.char a='A' b='B'; B.float a=b=10.0; C.int a=10, *b=&a; D.float *a, b=&a; B.必须有且仅有一个主函数 D.必须有主函数和其他函数 3.以下选项中合法的字符常量是( )。 A.\ B.'\\101' C.65 D.W 4.若有定义:int m=4,n=5; float k; 则以下符合C语言语法的表达式是( )。 A m=(n==5) B k=float(n)/m C n%2.5 D (m+n)*=k 5.若有定义: int x,y,z; 语句x=(y=z=3,++y,z+=y); 运行后,x的值为( )。 A. 7 B. 6 C. 3 D. 8 6.以下程序段运行后x的值为( )。 int a=3,b=6,x; x=(a==b)?a++:--b; B. 3 C. 6 D. 5 A. 4 7.若有定义:int a=3,b=4,c=5; 则表达式 !(a-b)||(c-b) 的值为( )。 A. 3 B. 2 C. 0 D. 1 8.若有定义:int a=3,b=5; 要实现输出形式为:3*5=15 正确的printf( )函数调用语句为( )。 A. printf(\C. printf(\9.以下程序段的运行结果是( )。 int s=10; switch(s/4){ } B. C C. B D. BCD case 2: case 3: printf(\printf(\ case 1: printf(\ B. printf(\D. printf(\ default: printf(\A. BC 10.在下列数组定义、初始化或赋值语句中,正确的是( )。 A.int x[]={1,2,3,4,5,6}; C.int a[8]; a[8]=10; 11.以下程序段运行后,s的值是( )。 int a[3][3]={1,2,3,1,2,3,1,2,3}; int i,j,s=0; for(i=0;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; B. 6 C. 10 D. 14 B.int x[5]={1,2,3,4,5,6}; D.int n=8; int score[n]; printf(\ A. 4 12.若已有定义:int i; char c[8]=\则下列语句中,不正确的是( )。 A.puts(c); C.printf(\ B.for(i=0;c[i]!='\\0';i++) printf(\D.for(i=0;c[i]!='\\0';i++) putchar(c); 13.设已定义:char str1[20]=\ \ str2[20]=\若要形成字符串\ World!\正确语句是( )。 A strcpy (str2,str1) B strcat(str1,str2) C strcpy (str1,str2) D strcat(str2,str1) 14.以下程序的运行结果是( )。 #include