2007年第1次重庆计算机二级C语言上机考试试题及答案(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2007年第一次全国高等学校(重庆考区)
非计算机专业计算机等级考试
C语言上机考试题
(第一套)
(共100分)
1.(35分)求出100-999之间能够被3整除,且至少有一位数字是5的所有整数。源程序存入test11.c 2.(35分)下列函数功能是求n个学生成绩的平均分和最高分,并将这些数据从该函数返回到调用函数。请输入程序并填空,源程序存入test12.c。
#include
float average(float array[],int n, float *max①)
{ int i;
float sum=array[0];
*max=array[0];②;
for(i=1;i { if(array[i]>*max) *max=array[i]; sum=sum+array[i]; } return sum/n ③; } void main() { float a[]={13,21,35,47,52,67,74,86,99,10},max,aver; aver=average(a,10,&max); printf("%f,%f\n",max,aver); } 3.(30分)以下程序是求a数组中偶数的个数和偶数的平均值。请输入程序并改正程序中带"*"的行中的错误,使它能够正确地输出结果。源程序存入test13.c。 #include void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},k,i; float s=0,ave; for(k=i=0;i<10;i++) { if (a[i]%2!=0) * break; (continue;//错误:break;) s+=a[i],k++; } * if(k=0) (if(k!=0)//错误:if(k=0)) { ave=s/k; * printf("%f,%d\n",k,ave); printf("%d,%f\n",k,ave);// 错误 } } (第一套答案) 1.参考程序及评分标准 #include void main() { int a,b,c,k; //5分 for(a=1;a<10;a++) //5分 for(b=0;b<10;b++) //5分 for(c=0;c<10;c++) //5分 { k=a*100+b*10+c; //5分 if((a==5||b==5||c==5)&&(k%3==0)) //10分 printf("%4d",k); } printf("\n"); } 2007年第一次全国高等学校(重庆考区) 非计算机专业计算机等级考试 C语言上机考试题(第二套) (共100分) 1.(35分)编写一个程序计算下式之和。 1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+4+5+6+7+8+9+10)。源程序存入test21.c 2.(35分)下面的程序通过average计算数组中各元素的平均值。请输入程序并填空,源程序存入test22.c。 #include float average( int *pa ① ,int n) { int x; ①float avg =0.0 ② ; avg=avg+ *(pa+x) ③ ; avg=avg/n; return avg; } void main() { int a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf("mean=%f\n",mean); } 3.(30分)以下程序是求取矩阵A的两条对角线上元素之和。请输入程序并改正程序中带"*"的行中的错误,使它能够正确地输出结果;源程序存入test23.c。 #include void main ( ) { int a[3][3]={1,2,3,4,5,6,7,8,9},i,j; * int sum1=0; int sum1=0,sum2=0;//错误:int sum1=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum1=sum1+a[i][j]; for(i=0;i<3;i++) * for(j=2;j>=0;j++) for(j=2;j>=0;j--) //错误:for(j=2;j>=0;j++) * if(i==j) if(i+j==2) //错误:if(i==j) sum2=sum2+a[i][j]; printf("sum1=%d,sum2=%d\n",sum1,sum2); } (第二套参考答案) 1.参考程序及评分标准 #include void main() { int i,k=0,s=0; //10分 for (i=1;i<=10;i++) //10分 { k=k+i; //5分 s=s+k; //5分 } printf("s=%d\n",s); //5分 } 2007年第一次全国高等学校(重庆考区)非计算机专业计算机等级考C语言上机考试题(第三套)(共100分) 1.(35分)Fibonacci数列是这样一个数列,最前面的两个数分别是1和1,从第3个数开始,数列中每个数是其前面的两个数之和。请编写程序求该数列中前20个数且要求每一行输出10个数。源程序存入test31.c。2.(35分)下面程序的功能是将字符串中的数字字符删除后输出。请输入程序并填空,源程序存入test32.c。 #include ①void delnum(char *s①) { int i,j ; for(i=0,j=0;s[i]!='\0';i++) ②if( s[i]< '0'||s[i]>'9'②) { j++; } ③s[j]='\0'③; } void main() { char s[80]; gets(s); delnum(s); printf("\n%s\n",s); }