2012-2013学年二学期C语言期末考试试卷(C卷)
班级:___________学号:___________姓名:___________得分:___________ 题号 得分 阅卷 一 二 三 四 五 六 七 八 九 十 成绩 复核 题目部分,(卷面共有21题,100分,各大题标有题量和总分) 一、填空题(21小题,共100分)
1.
下面程序的功能是:从键盘输入一个整数m(4≤m≤20),则输出如下的整数方阵(存入二维数组aa)。例如,若输入“4”和“5”,则分别输出
16 9 4 1 25 16 9 4 1
9 4 1 16 16 9 4 1 25 4 1 16 9 9 4 1 25 16 1 16 9 4 4 1 25 16 9 1 25 16 9 4
请改正程序中的错误语句,使它能得出正确的结果。改正后的语句是【1】和【2】。(注意:不得增行或删行,也不得更改程序的结构。) #include
void aMatrix(int n,int xx[][M]) { int i,j;
for(j=0;j for(j=0;j main() { int aa[M][M],i,j,m; printf(“\\nPlease enter an integer number between 4 and 20:”); scanf(“%d”,&m); aMatrix(m,aa); printf(“\\nThe %d*%d matrix generated:”,m,m); for(i=0;i printf(“\\n”); for(j=0;j printf(“O”,(*(aa+i))[j]); /* 错误语句【2】 */ } } 2. 下面函数func的功能是_______。 #include long k=1; num=labs(num); do{ k*=num; num/=10; }while(num); return(k); } main() { long n; printf(“\\nPlease enter a number:”); scanf(“%ld”,&n); printf(“\\nThe product of its digits is %ld.”,func(n)); } 3. 下面程序将十进制整数转换成n进制。请填空。 main() { int i,base,n,j,num[20]; printf(“Enter data that will be converted\\n”); scanf(“%d”,&n); printf(“Enter base\\n”); scanf(“%d”,&base); do{ i++; num[i]=n【1】base; n=n【2】base; }while(n!=0); printf(“The data %d has been converted into the %d--base data:\\n”,n,base); for(【3】) printf(“%d”,num[j]); } 4. 下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出-1。请填空。 #include char c=?a?,t[50]; int n,k,j; gets(t); n=【1】; for(k=0;k if(【2】) { j=k; break; } else j=-1; printf(“%d”,j); } 5. 下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main() { int a[N],i; for(i=0;i if(【2】) 【3】 printf(“=”,a[i]); } printf(“\\n”); } 6. 表达式pow(2.8,sqrt(double(x))) 值的数据类型为 。 7. C语言中的标识符只能由三种字符组成,它们是_________、_________和_________。 8. 若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为 ,n的值为 。 x+=n++ 9. 若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为________,b值为_______,c值为_______。 10. 建立并输出100个同学的通讯录,每个通讯录包括同学的姓名、地址、邮政编码。 #include struct communication {char name[20]; char address[80]; long int post_code; }commun[N]; main() {int i; for(i=0; i<100; i++) {set_record(commun+i); print_record(commun+i); } } set_record(struct communication *p) {printf(“Set a communication record\\n”); scanf(“%s %s %ld”, ________, p->address, ___________); } print_record ( __________ p) {printf(“Print a communication record\\n”); printf(“Name: %s\\n”, p->name); printf(“Address: %s\\n”, p->address); printf(“Post_code: %ld\\n”,______________); } 11. 下面的程序通过函数average计算数组中各元素的平均值,请填空。 float average(int *pa,int n) {int i; float avg=0.0; for(i=0;i avg=avg+__________; avg=____________; return avg; } main() {int i,a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf(“mean=%f\\n”,mean); } 12. 以下语句的输出结果是_____________。 char s[80],*sp=“HELLO!”; sp=strcpy (s, sp); s[0]=?h?; puts(s); 13. 在scanf函数调用语句中,可以在格式字符和%号之间加一星号,它的作用是__________;当输入以下数据:10 20 30 40<回车>(此处每个数据之间有两个空格),下面语句的执行结果是__________。 int a1,a2,a3; scanf(“%d%*d%d%d”,&a1,&a2,&a3); 14. 下列程序段的输出结果是______ ,出现这样结果的原因在于______。 int n='c'; switch(n++) { default: printf(\ case 'a': case 'A': case 'b': case 'B': printf(\case 'c': case 'C': printf(\case 'd': case 'D': printf(\} 15. 在C语言中,输入操作是由库函数 完成的,输出操作是由库函数 完成的。 16. C源程序的基本单位是 。 17. 预处理命令#include的作用是_______。 18. 根据下式填空,将程序补充完整。 y=-1.0(x<0.0) 2.0/(x-1.0)(0.0 scanf(\if(【 】) y=-1.0; else if((【 】)&&(x!=1)) y=2.0/(x-1.0); else if(【 】) y=3.0/x; else y=4.0; printf(\19. 下面程序的功能是:输入一行字符,统计其中有多少个单词,单词之间 用空格分开。请填空完成。 # include {char str[81]; int I,( 【1】 ); char c; gats(str); for(I=0;( 【2】 )!=?\\0?;I++) if(c==? ?)word=0; else if( 【3】 )