2017年上半年全国高等学校(安徽考区)计算机水平考试试卷(二级 C语言程序设计)一、程序填空题(每题 12 分,共 36 分,将答案填写在相应的下划线处) 1.以下程序从键盘输入一个整数,输出其对应的英文星期单词。若输入的的整数在 1 到 7之间外,则输出“Error!”,请填空。 #include stdio.h void main() { int n; printf(Input n:); scanf(%d,________); switch(n) { case 1:printf(Monday\n);break; case 2:printf(Tuesday\n);break; case 3:printf(Wednessday\n);break; case 4:printf(Thursday\n);break; case 5:printf(Friday\n);break; case 6:printf(Sturday\n);break; case 7:printf(Sunday\n);_______________; _________________:printf(Error!\n); } } 2.以下程序输出一维数组中的最大元素及其下标值,请填空。 #include stdio.h int search(int a[],int n)/*求最大元素的下表*/ { int i,max; max=________________; for(i=1;in;i++){ if(a[i]a[max]) max=____________; } return max; } void main() { int a[10]={13,1,5,4,9,100,8,7,6,2}; int max; ______________=search(a,10);printf(最大值:%d,下标:%d\n,a[max],max); } 3、以下程序定义求 n!的递归函数 f(),并调用函数 f()求 2!+3!+4!+5!+6!的值,请填空。(说明:n!=1*2*3*…*n) #include stdio.h int f(int n) { if(n==1 || n==0) return ________; else return n*f(n1); } void main() { int i,s; s=___________________; for(i=2;i=6;i++) s+=f(i); printf(2!+3!+4!+5!+6!=%d\n,_________________); } 二、阅读程序题(每题 8 分,共 32 分。将答案填写在相应的空白处) 1、以下程序的运行结果是___________________。 #include stdio.h void main() { int a=3,b=3,c; if(ab+3) c=0; else c=1; printf(c=%d\n,c); c=3; if(ab){ if(3==c) a=a+b; else a=ab; } printf(a=%d,b=%d,c=%d\n,a,b,c); } 2、以下程序的运行结果是_______________。 #include stdio.h void main() {int i,j; int s=0; for(i=1;i5;i++) { j=i*10+6; printf(%d,j); if(0==j%4) s=s+j; } printf(\ns=%d\n,s); } 3、以下程序的运行结果是_______________。 #include stdio.h void main() { int sum1=0,sum2=0; int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j; for(i=0;i3;i++) for(j=0;j3;j++) sum1+=a[i][j]; printf(sum1=%d\n,sum1); for(i=0;i3;i++) for(j=0;j3;j++) if(i==j || i+j==2) sum2+=a[i][j]; printf(sum2=%d\n,sum2); } 4、以下程序的运行结果是__________________。 #include stdio.h void swap(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } void main() { int a=15,b=25; printf(a=%d,b=%d\n,a,b); swap(&a,&b); printf(a=%d,b=%d\n,a,b); }三、程序设计题(每题 16 分,共 32 分) 1、输入两个整数 m和 n(mn),计算 m和 n之间所有的整数之和(包括 m和 n). 2、编程实现以下功能:(1)输入一个字符串; (2) 在其中所有的数字字符前机上$字符; (3) 输出变换后的字符串. 举例说明:若输入字符串为:A1B23C456,则输出为:A$1B$2$3C$4$5$6 2017年上半年全国高等学校(安徽考区)计算机水平考试试卷参考答案一、程序填空题 1、 &n Break defaut 2、 0 i max 3、 1 0 s 二、阅读理解题 1、 c=1 a=3,b=3,c=3 2、 16263646 s=52 3、 sum1=45 sum2=25 4、 a=15,b=25 a=25,b=15 三、程序设计题 1、 #include stdio.h void main() { int m,n,i; int s=0;printf(please input m n:); scanf(%d%d,&m,&n); for(i=m;i=n;i++) s+=i; printf(s=%d\n,s); } 2、解法 1: #include stdio.h void main() { char str[100]=; char str1[100]=A1B23C456; int i=0,j=0; gets(str1); while(str1[i]!='\0') { if(str1[i]='0' && str1[i]='9') { str[j++]='$'; str[j++]=str1[i]; } else str[j++]=str1[i]; i++; } printf(%s\n,str); } 解法 2: #include stdio.h void main() { char str[100]=A1B23C456; int i=0,j=0,len=0; //gets(str); while(str[len])len++; j=len1; while(j=0) { if(str[j]='0' && str[j]='9') {i=len; while(ji){ str[i]=str[i1]; i; } str[i]='$'; len++; } j; } printf(%s\n,str); }