第三部分:笔试、机试答案笔试真题答案▶▶真题一第十九次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:AAABA、BBAAB二、单项选择题:(每小题1分,共5分)1~5 :CBDDA第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、B2、A3、D4、D5、A6、C7、D8、B9、A 10、B二、读程序题(每个选择3分,共45分)1、(1)D (2)B2、(1)C (2)D3、(1)A(2)D4、(1)C (2)C5、 B6、(1)C (2)D7、(1)B (2)C 8、B 9、D三、程序填空题(每空2分,共30分)1、①TotalSum(a,5) ②Total ③sum+=array[i]2、①ch=='1' ②power(2,i) ③val=val*x3、①s+n-1 ②*p1!= '\0' ③p2--4、①&num[i][j] ②num[i][j]!=num[j][i] ③flag==15、①while(!feof(fp) ) ②if(strcmp(str,string)==0) ③fopen(argv[1],"r")▶▶真题二第二十次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:ABABB ABABB二、单项选择题:(每小题1分,共5分)1~5 :DACDC第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、A2、B3、C4、C5、A6、D7、A8、C9、C 10、D二、读程序题(每个选择3分,共45分)1、(1)B (2)D2、(1)A(2)C3、(1)C (2)A(3)D4、(1)A(2)D5、 D6、(1)C (2)B7、(1)A(2)B 8、 B三、程序填空题(每空2分,共30分)1、①num=0 ②i < len-1 ③str++2、①symm(m)&&symm(m*m)&&symm(m*m*m)②i!=0 ③m=m*10+i%103、①head ②p->data ③p->next4、①(fp=fopen("data.txt", "r"))==NULL②ch=fgetc(fp) ③ch-'A'5、①while(*s++=*t++ ) ②*t='\0' ③else p=NULL▶▶真题三第二十一次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:BBABB ABBAB二、单项选择题:(每小题1分,共5分)1~5 :CCDDB第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、C2、B3、B4、B5、C6、A7、A8、C9、D 10、D二、读程序题(每个选择3分,共45分)1、D2、A3、A4、B5、B6、C7 、(1)C (2)B 8、(1)A(2)B 9、(1)C (2)D10、(1)D (2)A(3)D三、程序填空题(每空2分,共30分)1、①struct student *next ②p2->next=p1 ③p=p->next2、①q=p ②p>str ③*p=max3、①aver+=score[i] ②below[k]=score[i] ③fun(score,9,below)4、①i==j ②j=2 ③j>=05、①"wb" ②&em ③ 1▶▶真题四第二十二次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:AABBA BBBAA二、单项选择题:(每小题1分,共5分)1~5 :DCDCA第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、B2、A3、B4、A5、D6、C7、D8、C9、D 10、C二、读程序题(每个选择3分,共45分)1、D2、(1)A(2)C3、(1)A(2)D4、C5、A6、B7、B 8、(1)D (2)A9、(1)C (2)B10、(1)B (2)D三、程序填空题(每空2分,共30分)1、①p[i]>p[j] ②fscanf(fp,"%d",&a[i] ) ③sort(a,10)2、①func(n) ②long m ③func(m/10)3、①(bott+top)/2 ②top=mid-1 ③bott>top4、①str1[i]!= '\0'&&str2[i]!= '\0'②strlen(str1)>strlen(str2) ③strcat(str3,p2+i )5、①k>0 ②k/10 ③continue▶▶真题五第二十三次等级考试第一部分软件技术基础一、是非判断题(每小题1分,共10分)1~10:AABAB ABBBB二、选择题(每小题1分,共5分)1~5 :CDADA第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、B2、A3、A4、D5、B6、A7、C8、A/B9、D 10、C二、读程序回答问题(每个选择3分,共45分)1、B2、A3、D4、B B5、D A6、B A7、D8、C C9、A C 10、C三、程序填空( 每空2分,共30分)1、①n%base ②c[i] ③b[d]2、①j/10 ②ch[0]==ch[4] && ch[1]==ch[3] ③i3、①i%3==0&&i%7!=0 ②p[num++]=i ③fun ( M,a,&n )4、①s,t ②*(p1+i)==*p2 ③p1+i ,p1+i+15、①fopen ("stu.txt","r+" ) ②fp,"%f",&y ③fprintf ( fp,"%f",x )▶▶真题六第二十四次等级考试第一部分软件技术基础一、是非判断题(每小题1分,共10分)1~10:BABAB BABAB二、选择题(每小题1分,共5分)1~5 :BDBDB第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、C2、B3、A4、A5、D6、C7、C8、B9、D 10、B二、读程序回答问题(每个选择3分,共45分)1、D2、B D3、A4、A B5、A6、C7、C D8、D B9、C 10、C B三、程序填空( 每空2分,共30分)1、①int *p 或int p[] ②p[j+1]=p[j] ③insert(a,wz,x)2、①int i ②i<=y ③return z3、①x>=0 ②x<min ③&x4、①i-1 ②a[j+1]=a[j] ③a[j+1]=t5、①FILE *f ②sizeof(stract rec) ③r.num, r.total▶▶真题七第二十五次等级考试第一部分软件技术基础一、是非判断题(每小题1分,共10分)1~10:BAAAB ABAAB二、选择题(每小题1分,共5分)1~5 :ADDAC第二部分 C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、A2、D3、B4、C5、B6、A7、D8、B9、D 10、A二、读程序回答问题(每个选择3分,共45分)1、C2、A3、B C4、A C5、D D6、A C7、A D8、B D9、B三、程序填空( 每空2分,共30分 )1、① a=a*x ② b=b*i ③ s=sum(x,n)2、① s<t ② s++ ③ t--3、① filename ② c-…a‟③ ch+i4、① *max=i ② *min=i ③ fun(a,10,&max,&min)5、① c[k]=a[i++] ② c[k]=b[j++] ③ *(b+j)!=‟\0‟▶▶真题八第二十六次等级考试第一部分软件技术基础一、是非判断题(每小题1分,共10分)1~10:BABAB BBABB二、选择题(每小题1分,共5分)1~5 :BCCCA第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、A2、B3、C4、B5、D6、C7、A8、D9、C 10、B二、读程序回答问题(每个选择3分,共45分)1、A C2、D3、B4、A B5、A6、B C7、D C8、D9、A D 10、B三、程序填空( 每空2分,共30分)1、①char ch ②“r” ③ch2、①p=i ②i>=p ③a[p]=x3、①word++ ②max<word ③word=04、①a[k][i] ②*sum ③x,&s5、①a[k] ②a[k] ③“%4\n”▶▶真题九第二十七次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:AAAAA ABBBA二、单项选择题:(每小题1分,共5分)1~5 :ADBCA第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、A2、B3、D4、D5、C6、C7、B8、D9、A 10、D二、读程序题(每个选择3分,共45分)1、 B2、 A3、 A4、C5、 C6、 B7、 D8、 D A B9、B D 10、C A11、C三、程序填空题(每空2分,共30分)1、①char m ②i<=j ③str[j-1]2、①argv[1] ②ch=fgetc(fp2) ③fputc(ch,fp1)3、①i+2 ②a[j]!=0&&a[i]!=0&&a[j]%a[i]==0 ③count%10==04、①-sign ②num* ③%ld5、①i=0 ②s[i]!=‟\0‟③i%2==0▶▶真题十第二十八次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:AABAB AABBB二、单项选择题:(每小题1分,共5分)1~5 :DBAAC第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、D2、B3、A4、C5、B6、D7、C8、A9、B 10、D二、读程序题(每个选择3分,共45分)1、B2、A C3、D4、A5、 B6、A7、A C8、D9、B 10、B C11、C 12、D三、程序填空题(每空2分,共30分)1、①*(s+i)或*(s+i)!='\0' ②return cnt; ③fun(str,ch)2、①-1 ②(2*i+1) ③*s=t;3、①b[i]=0 ②b[i]+ ③x[i][j]4、①i++ ②line=j ③fclose(fp)5、①k++ ② 2 ③k-1▶▶真题十一第二十九次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:BAAAB ABABA二、单项选择题:(每小题1分,共5分)1~5 :AABDC第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、C2、B3、A4、D5、B6、C7、B8、D9、A 10、D二、读程序题(每个选择3分,共45分)1、(1)D (2)C2、(1)B (2)A3、(1)C (2)D4、A5、 B6、(1)D (2)C7、C 8、(1)B (2)C 9、B 10、A三、程序填空题(每空2分,共30分)1、①a[r][c] ②*row=r ③return a[r][c]2、①s+x/y ②x ③x+y3、①“score.dat” ②scanf(“%f”,&score) ③fclose(fp)4、①char *sp ②strlen(sp) < strlen(sq[i]) ③fun(str)5、①n=0 ②a[j]=0 ③count<25▶▶真题十二第三十次等级考试第一部分软件技术基础一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)1~10:二、单项选择题:(每小题1分,共5分)1~5 :第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1、D2、C3、B4、B5、A6、D7、B8、A9、D 10、C二、读程序题(每个选择3分,共45分)1、A C2、C A3、B B4、D B5、D B6、B7、A A8、C C三、程序填空题(每空2分,共30分)1、①n%base ②i>=0 ③a[d]2、①*d ②word ③result3、①3 ②"r" ③fgetc(fp1)4、①struct p t[100] ②&t[i].code ③t[i].code5、①n%i ②return 1 ③fun ( a[i] )▶▶真题十三第三十一次等级考试第一部分软件技术基础一、是非判断题(每小题1分,共10分)1~10:ABABB ABBAA二、选择题(每小题1分,共5分)1~5 :CABDA第二部分 C与C++语言程序设计一、单项选择题 (每小题1分,共10分)1、A2、D3、B4、B5、D6、D7、D8、C9、B 10、B二、读程序题(每个选择3分,共45分)1、D C2、D3、D4、B5、D6、C A7、C B8、D A9、D C 10、C三、程序填空题(每空2分,共30分)1、① i ② w ③"\n"2、① 5 ② m=m*10+t%10 ③ t=t/103、① i+=3 ② j+=3 ③ a[i]>a[j]4、① int a[] ② a[i]%j ③ a[k]5、① i ② t*k ③ -k机试真题答案▶▶真题一一、程序调试题(文件名为test1-1.c)( 40 分)#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 80void main(){ char str1[N],str2[N];int i,j,locat[10];int fun(char *,char *,int *);FILE *fp;if((fp=fopen("test1-1.dat","r"))=NULL) /* 改为:== */{ printf("Cannot open the file.\n");exit(0);}fgets(str1,fp); /* 改为:str1,N-1,fp */fgets(str2,N-1,fp);printf("str1:%s\nstr2:%s\n",str1,str2);fclose(fp);fun(str1,str2,locat);/* 改为:i=fun(str1,str2,locat); */ printf("arisen times: %d\n,start place:",i);for(j=0;j<i;j++)printf("%d, ",locat[j]);printf("\n");}int fun(char *p,char *q,int locat[]){ int len,i=0,posit=0;char *str;str=q;len=strlen(q);do{ if(*p=*q) /* 改为:*p != *q */{ p++;posit++;}else{while((*q!='\0')||(*q==*p)) /* 改为:&& */{ q++;p++;posit++;}if(*q=='\0'){locat[i]=posit-len;i++;}}q=str;}while(*p!='\0');return i;}评分标准:每改对一处得8分二、编程题(程序文件取名为test1-2.c)(60分)评分标准:1.fun函数编写40分:2. main函数编写20分:1)函数定义、形参书写正确(10分) 1)正确定义变量,并能正确的输出(10分) 2)算法正确(20分) 2)能正确调用fun函数(10分)3)返回值正确(10分)参考程序:# include <stdio.h>int fun(int *a){int i,j=0,qw,bw,sw,gw,s,t;for(i=1000;i<=9999;i++){qw=i/1000;bw=i/100%10;sw=i/10%10;gw=i%10;s=qw*10+sw;t=bw*10+gw;if( (s==5*t) &&(bw!=0) ){a[j]=i;j++;}}return j;}void main(){int a[100],i,j;j=fun(a);for(i=0;i<j;i++){printf("%6d",a[i]);if((i+1)%5==0)printf("\n");}}▶▶真题二一、程序调试题(文件名为test2-1.c)( 40 分)#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 5int fun(char s) /* 改为:*s */{ int i,j;j=strlen(s);for(i=0,j--;i<j;i++,j++) /* 改为:j--*/if(s[i]=s[j]) return 0; /* 改为:!= */return 1;}void main( ){ char s[20];FILE *fp;int i=0,j=0;if((*fp=fopen("test2-1.dat","r"))==NULL) /* 改为:fp */{ printf("Cannot open the file.\n");exit(0);}for(i=0;i<N;i++){ if(fun()) /* 改为:fun(s) */{printf("%s\n",s);j++;}}printf("\nnumber=%d\n",j);fclose(fp);}评分标准:每改对一处得8分二、编程题(程序文件取名为test2-2.c)(60分)评分标准:1.fun函数编写30分:2. main函数编写30分:1)函数定义、形参书写正确(10分) 1)数组定义及初始化正确(10分) 2)算法正确(20分) 2)能正确调用fun函数(5分)3)能正确输出(15分) 参考程序:# include <stdio.h># define N 4void fun(int a[][N]){int i,j;for(i=0;i<N;i++)for(j=0;j<i;j++)if(a[i][j]>a[j][i])a[j][i]=a[i][j];}void main(){int d[N][N]={{0,1,2,3},{7,6,4,5},{11,16,9,10},{15,22,33,8}};int i,j;for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%6d",d[i][j]);printf("\n");}fun(d);for(i=0;i<N;i++){ printf("\n");for(j=0;j<N;j++)if(j>=i)printf("%6d",d[i][j]);elseprintf("%6c",' ');}}▶▶真题三一、程序调试题(文件名为test3-1.c)( 40 分)#define N 20#include <stdlib.h>#include <stdio.h>void fun(int *a) /* 改为:int */{ int i,cnt=0;for(i=0;i<N;i++)if(a[i]>0) cnt++; /* 改为:<*/return cnt;}void main( ){ FILE *fp;int a[],i,cnt; /* 改为:a[N] */if((fp=fopen("test3-1.dat","r"))==NULL){ printf("Cannot open the file.\n");exit(0);}for(i=0;i<N;i++)fscanf(fp,"%d",a[i]); /* 改为:a+i */fclose(fp);fun(a); /* 改为:cnt=fun(a) */printf("positive = %d\n",N-cnt);printf("negative = %d\n",cnt);}评分标准:每改对一处得8分二、编程题(程序文件取名为test3-2.c)(60分)评分标准:1.fun函数编写40分:2.main函数编写20分:1) 函数定义、形参书写正确10分1) 变量定义及输入正确10分2) 算法正确30分2) 能正确调用fun函数5分3) 输出结果正确5分参考程序:# define N 10# include <stdio.h>void fun(int a[],int where,int amount){int *p1,*p2,temp;p1=&a[where-1];p2=&a[where-2+amount];while( p1 < &a[where-1]+amount/2 ){temp=*p1;*p1=*p2;*p2=temp;p1++;p2--;}}void main(){int num[N],where,amount,i;printf("Input 10 number:\n");for(i=0;i<N;i++)scanf("%d",&num[i]);printf("\n");printf("How many numbers do you want to sort:");scanf("%d",&amount);printf("\nWhere do you want to start:");scanf("%d",&where);printf("\n");fun(num,where,amount);printf("\nresorted array as follow:\n");for(i=0;i<N;i++)printf("%d,",num[i]);printf("\n");}▶▶真题四一、程序调试题(文件名为test4-1.c)( 40 分)#define N 20#include <stdlib.h>#include <stdio.h>int fun(int *a,int *even,int *odd) /* 改为:void*/{int i,cnt=0;for(i=0;i<N;i++)if(a[j]%2==0) /* 改为:a[i]*/*even++; /* 改为:(*even)*/else(*odd)++;}void main( ){FILE *fp;int a[N],i,cnt,even=0,odd=0;if((fp=fopen("test4-1.dat","r"))==NULL){printf("Cannot open the file.\n");exit(0);}for(i=0;i<N;i++)fscanf("%d",a+i); /* 改为:fp,"%d",a+i */fclose(fp);fun(a,&even,odd); /* 改为:&odd */printf("even = %d\n",even);printf("odd = %d\n",odd);}评分标准:每改对一处得8分二、编程题(程序文件取名为test4-2.c)(60分)评分标准:1.fun函数编写40分:2.main函数编写20分:1) 函数定义、形参书写正确10分1) 变量定义及输入正确10分2) 算法正确30分2) 能正确调用fun函数5分3) 输出结果正确5分参考程序:# include <stdio.h># define N 5void main(){int i,a[N],b[N],cnt=0;int fun(int a[],int b[]);printf("Enter %d number: ",N);for(i=0;i<N;i++)scanf("%d",&a[i]);cnt=fun(a,b);printf("cnt=%d\n",cnt);for(i=0;i<cnt;i++)printf("%6d",b[i]);}int fun(int a[],int b[]){int bb[4],cnt=0,i,j,k,flag;for(i=0;i<N;i++){bb[0]=a[i]/1000;bb[1]=a[i]/100%10;bb[2]=a[i]/10%10;bb[3]=a[i]%10;for(j=0;j<4;j++){if(bb[j]%2==0)flag=1;else{flag=0;break;}}if(flag==1)b[cnt++]=a[i];}return cnt;}▶▶真题五一、程序调试题(文件名为test5-1.c)( 40 分)#define N 80#include <stdlib.h>#include <stdio.h>#include <string.h>void fun(char str[],char *cap,char *lower){ int i=0,j=0,k=0;while(str[j]!='\0') /* 改为:str[i] */{ if(str[i]>='a'&str[i]<='z') /* 改为:&& */lower[j]=str[i]; /* 改为:j++ */else if(str[i]>='A'&&str[i]<='Z')cap[k++]=str[i];i++;}lower[j]='\0';cap[k]='\0';}void main( ){ FILE *fp;int str[N],cap[N],lower[N];if((fp=fopen("test5-1.dat","r"))==NULL){ printf("Cannot open the file.\n");exit(0);}fgets(str,0,fp); /* 改为:N */fclose(fp);fun(str,cap); /* 改为:str,cap,lower */printf(" %d capitalization : %s\n",strlen(cap),cap);printf(" %d lowercase : %s\n",strlen(lower),lower);}评分标准:每改对一处得8分二、编程题(程序文件取名为test5-2.c)(60分)评分标准:1.fun函数编写40分:2.main函数编写20分:1) 函数定义、形参书写正确10分1) 变量定义及输入正确10分2) 算法正确20分2) 能正确调用fun函数5分3) 返回正确10分3)输出结果正确5分参考程序:# include <stdio.h># define M 3# define N 4void main(){int matrix[3][4];int i,j,n;int fun(int a[M][N]);printf("Please input the elements of the matrix(3*4) row by row :\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&matrix[i][j]);n=fun(matrix);printf("result=%d\n", n);}int fun(int a[][N]){int i,j,max[M],min;for(i=0;i<M;i++){max[i]=a[i][0];for(j=1;j<N;j++)if(max[i]<a[i][j])max[i]=a[i][j];}min=max[0];for(i=1;i<M;i++)if(min>max[i])min=max[i];return(min);}▶▶真题六一、程序调试题(文件名为test6-1.c)( 40 分)#define N 10void printf(int n,int fac[],int x) /* 改为:myprintf */ {int j;printf("%3d its factors: ", x);for(j=0;j<n;j++)printf("%d ", fac[j]);printf("\n");}void find( int a[] , int fac[] ){int i, count,s,j;for(i=0;i<N;i++){count=0;for(j=0;j<a[i];j++) /* 改为:j=1 */if(a[i]%j==0)fac[count++]=j;s=0;for(j=0;j<count;j++)s=fac[j]; /* 改为:+= */if(s==a[i])myprintf(count,fac,s);}}void main( ){int i,a[N],fac[N];FILE *fp;fp=fopen("test6-1.dat","r");if(fp=NULL) /* 改为:== */{printf("Can not open file!\n");exit(0);}for(i=0;i<N;i++)fscanf(fp,"%d",&a[i]);fclose(fp);find(a);}评分标准:每改对一处得8分二、编程题(程序文件取名为test6-2.c)(60分)评分标准:1.fun函数编写40分:2.main函数编写20分:1) 函数定义、形参书写正确10分1) 变量定义及输入输出正确15分2) 算法正确20分2) 能正确调用fun函数5分3) 返回正确10分参考程序:# include <stdio.h># define N 10void main(){int x[N],i,n;int fun(int *);for(i=0;i<N;i++)scanf("%d",x+i);n=fun(x);printf("index=%d,max=%d\n",n,x[n]);}int fun(int x[]) {int i,max,k=0; max=x[0];for(i=1;i<N;i++)if(x[i]>max){max=x[i];k=i;}return k;}。