版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江苏省二级C语言上机考试模拟题改错题第1题:【程序功能】函数intword_sort(chars[],charw[10][20])的功能是:将s指向的字符串(英文句子)中所有单词取出保存到w指向的数组中,再对w数组中的单词按字典序排序。函数返回w数组中存储的单词个数。【测试数据与运营结果】测试数据:cisaprogramminglanguage.运营结果:acislanguageprogramming.【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>#include<ctype.h>intword_sort(chars,charw[10][20]){ inti=0,j=0,k=0;charb[20]; while(s[i]) { if(isalpha(s[i])) w[k][j]=s[i]; else { w[k][j]="\0"; k++;j=0; } i++; } for(i=0;i<k-1;i++) for(j=0;j<k-1-i;j++) if(strcmp(w[j],w[j+1])>0) { strcpy(b,w[j]); strcpy(w[j+1],w[j]); strcpy(w[j+1],b); } returnk;}voidmain(){ charsent[80]="cisaprogramminglanguage."; charword[20]; inti,n; n=word_sort(sent,word); for(i=0;i<n;i++)printf("%s",word[i]);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第2题:【程序功能】函数voidring(inta[],intm[],intn,int*max)的功能是:将a指向数组中前n个正整数看作一个圆环,在a数组中查找相邻四个元素之和最大的四个元素(用下标表达)及其和值,将这四个元素的下标依次保存到m指向的数组中,最大值(和值)保存到max指向的变量中。main函数调用ring函数,在a数组的20个元素中找出四个元素,并按"运营结果"的格式输出这四个元素的标记及和值。【测试数据与运营结果】测试数据:inta[20]={13,18,4,1,6,10,15,2,17,3,5,7,16,8,11,14,9,12,19,20};运营结果:max=70,a[18]+a[19]+a[0]+a[1]=19+20+13+18=70【具有错误的源程序】#include<stdio.h>#include<conio.h>voidring(inta,intm,intn,int*max){ inti,j,ni,t; *max=0; for(i=0;i<n;i++) { t=0; for(j=0;j<4;j++)t=t+a[(i+j)%n]; if(t>*max) {max=t;ni=i;} } m[0]=ni; for(i=1;i<4;i++) m[i]=m[i-1]+1;}voidmain(){ inta[20]={13,18,4,1,6,10,15,2,17,3,5,7,16,8,11,14,9,12,19,20}; inti,n,m[4],max,sum=0; ring(a,m,20,&max); printf("max=%d,",max); for(i=0;i<3;i++)printf("a[%d]+",m[i]); printf("a[%d]=",m[i]); for(i=0;i<3;i++) { sum=sum+a[m[i]]; if(i==3)printf("%d=",a[m[i]]); elseprintf("%d+",a[m[i]]); } printf("%d\n",sum);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。2.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第3题:【程序功能】函数change从a数组存储的字符串中取出所有十六进制数字字符依次存入字符数组b中,然后再将b数组中的数字字符串转换成一个整数并返回。提醒:库函数isxdigit(ch)的功能是检查ch是否是十六进制数字字符,若是则返回1,否则返回0。【测试数据与运营结果】测试数据:输入"xyz3F4tqk"运营结果:输出1012【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>longchange(chara){ inti,j=0;longintk=0; charb[10]={0}; for(i=0;a[i]!='0';i++) if(isxdigit(a[i])) b[i++]=a[i]; b[j]='\0'; i=0; do { if(isdigit(b[i])) {k=k*16+b[i]-'0';i++;} else { b[i]=isupper(b[i])?b[i]:b[i]-'a'+'A'; k=k*16+b[i]-'A'; i++; } } while(b[i]!='0'); returnk;}voidmain(){ charc[80]="xyz3F4tqk"; longm; m=change(c[80]); printf("%ld",m);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第4题:【程序功能】函数HolandFlag的功能是:已知在flag指向的有n个元素的字符数组中,每个元素的值是字符R、w或B中的一个。函数按照R、w、B的顺序重新排列flag数组中所有元素的值。算法提醒:若flag数组初始值为RBWBRWRBW则在flag数组中出现数据互换的环节与效果为:第1步:flag[1]与flag[8]互换后数据为RWWBRWRBB第2步:flag[3]与flag[6]互换后数据为RWWRRWBBB第3步:flag[1]与flag[4]互换后数据为RRWRWWBBB第4步:flag[2]与flag[3]互换后数据为RRRWWWBBB【测试数据与运营结果】测试数据:RBWBRWRBW运营结果:RRRWWWBBB【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>#define10NvoidHolandFlag(charflag,intnum){ inti,j,k,m; charc,color[3]={B,W,R}; m=num; for(k=0;k<2;k++) for(i=0;i<m;i++) if(flag[i]==color[k]) { for(j=m-1;j>i;j--) if(flag[j]==color[k]) { c=flag[i];flag[i]=flag[j];flag[j]=c; m--; break; } if(i==j)m=i; }}voidmain(){ charflag[N]="RBWBRWRBW"; inti,k,n=strlen(flag); HolandFlag(flag[N],n); for(i=0;i<n;i++) printf("%c",flag[i]);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第5题:【程序功能】分类汇总求平均值。函数sort_aver的形参a指向的二维数组(简称a数组)第一列元素的值代表类别,a数组已按第一列元素的值从小到大有序排列。sort_aver函数对a数组的n行元素中第一列元素值相同的所有行按列求平均值(第一列除外),并将类别值和除第一列外的各列平均值依次保存到b指向的数组(简称b数组)中,函数返回b数组中数据的行数。【测试数据与运营结果】a数组:b数组:133113123235235354345336【具有错误的源程序】#include<stdio.h>#include<conio.h>intsort_aver(inta[3],n,b[3]){ inti,j,k=0,c[10]; for(i=0;i<3;i++)b[0][i]=a[0][i]; c[0]=1; for(i=1;i<n;i++) { if(b[k][0]==a[i][0]) { for(j=1;j<3;j++) b[k][j]+=a[i][j]; c[k]++; } else { c[++k]=0; for(j=0;j<3;j++) b[k][j]=a[i][j]; } } for(i=0;i<=k;i++) for(j=1;j<3;j++) b[i][j]/=c[i]; returnk;}voidmain(){ intx[10][3]={{1,3,3},{1,1,3},{2,3,5},{3,5,4},{3,3,6}},i,j,n; n=sort_aver(x,5,b); for(i=0;i<n;i++) { for(j=0;j<n;j++)printf("%3d",b[i][j]); printf("\n"); }}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第6题:【程序功能】函数merge的功能是:合并两个字符串集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串的个数。【测试数据与运营结果】测试数据:s1集合:{"while","for","switch","if","break","continue"}s2集合:{"for","case","do","else","char","switch"}运营结果:whileforswitchifbreakcontinuecasedoelsechar【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>intmerge(chars1[10],chars2[10],chars3[10],intm,intn){ inti,j,k=0; for(i=0;i<m;i++) s3[k++]=s1[i]; for(i=0;i<n;i++) { for(j=0;j<m;j++) if(strcmp(s2[i],s1[j])) break; if(j>m) strcpy(s3[k++],s2[i]); } returnk;}voidmain(){ inti,j; chars1[6][10]={"while","for","switch","if","break","continue"}, s2[6][10]={"for","case","do","else","char","switch"},s3[20][10]; j=merge(s1[10],s2[10],s3[10],6,6); for(i=0;i<j;i++) printf("%s",s3[i]);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第7题:【程序功能】已知x数组中存储的n阶矩阵有一个鞍点(鞍点是指该位置上的数是所在行的最大数,同时也是所在列的最小数),程序实现将矩阵中鞍点所在列移动到最右侧。【测试数据与运营结果】测试数据:1320465-17980-11032运营结果:Andian:a[0][1]120345-167809-13210【具有错误的源程序】#include<stdio.h>#include<conio.h>#defineN=4voidexchange(inta[N]){ inti,j,k,f,t,m,mj; for(i=0;i<N;i++) { m=a[i][0];mj=0;f=1; for(j=0;j<N;j++) if(a[i][j]>m) {m=a[i][j];mj=j;} for(k=0;k<N&&f;k++) if(a[k][mj]>m) f=0; if(k>=N)break; } if(f) { printf("Andian:a[%d][%d]\n",i,mj); for(i=0;i<N;i++) { t=a[i][mj]; for(j=mj;j<N-1;j++) a[i][mj]=a[i][mj+1]; a[i][N-1]=t; } }}voidmain(){ intx[N][N]={{1,3,2,0},{4,6,5,-1},{7,9,8,0},{-1,10,3,2}},i,j; for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%3d",x[i][j]); printf("\n"); } printf("\n"); exchange(intx[N][N]); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%3d",x[i][j]); printf("\n"); }}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第8题:【程序功能】create函数的功能是:创建一个有N个元素的动态整型一维数组(N及N个整数由键盘输入),对该数组N个元素从小到大排序,函数返回该动态数组的首地址。insert函数的功能是:在p指向的有n个元素的有序数组中插入整数x,使得p数组的n+1个元素仍按从小到大有序。【测试数据与运营结果】测试数据:N=103681201821057运营结果:1235678101820【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<stdlib.h>intN;voidinsert(int*p,intx,intn){ inti=0,j; while(x>*p[i]&&i<n) i++; for(j=n;j>i;j--) p[j]=p[j-1]; p[j+1]=x;}int*create(){ int*head,*p,i; printf("\nN="); scanf("%d",&N); head=int*malloc(N*sizeof(int)); printf("Enternumbers:"); p=head; for(i=0;i<N;i++) scanf("%d",p[i]); for(i=1;i<N;i++) insert(p,p[i],i); returnhead;}voidmain(){ int*head,*p,i,x; head=create(); p=head; for(i=0;i<N;i++) printf("%3d",*p++); free(head);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第9题:【程序功能】replace_word函数的功能是对s指向的数组所存储的一个英文句子中的每个单词作如下解决:在word_tab数组中查找该单词,若未找到则保持原单词不变;若找到则用word_tab数组中该单词后面的第一个单词替换句子中的原单词(假如该单词是word_tab数组中的最后一个单词则用第一个单词替换)。【测试数据与运营结果】测试数据:Iaccuseyourmistakes.运营结果:Iforgiveyourmistakes.【具有错误的源程序】#include<stdio.h>#include<conio.h>voidreplace_word(chars){ charword_tab[4][10]={"sad","happy","accuse","forgive"}; chart,tmp[80]; inti,j,k,n; for(i=0;s[i];i++) { for(j=i,k=0;isalpha(s[j]);k++,j++) t[k]=s[j]; t[k]=0; if(k>0) { for(n=0;n<4;n++) if(strcmp(t,word_tab[n])==0)break; if(n<4) { strcpy(tmp,s+i+strlen(t)); strcpy(s+i,word_tab[(n+1)%4]); strcpy(s,tmp); i=i+strlen(word_tab[(n+1)%4]); } else i=i+strlen(t); } }}main(){ charline[80]="Iaccuseyourmistakes."; replace_word(line); putchar(line);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第10题:【程序功能】求三个城市中的每个城市某年前3个月旅游的平均人数,再按平均人数从高到低的顺序输出三个城市三个月的旅游人数和平均人数。【测试数据与运营结果】三个城市某年前3个月的旅游人数如下表所示(单位:万人):测试数据citym[0]m[1]m[2]averNanjing36.743.640.9Xian35.439.841.7Guangzhou39.540.238.2运营结果:Nanjing:36.743.640.940.4Guangzhou:39.5Xian:35.439.841.739.0【具有错误的源程序】#include<stdio.h>#include<conio.h>#defineN10structlist{ charcity[10]; floatm[3],aver;};voidaver_sort(structlista,intn){ inti,j,k; inttemp; for(i=0;i<n;i++) { for(j=0;j<3;j++) a[i].aver+=a[j].m[i]; a[i].aver/=3; } for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(a[j].aver>a[k].aver)k=j; if(k!=i) {temp=a[j];a[j]=a[k];a[k]=temp;} }}voidmain(){ structlista[N]= {{Nanjing,36.7,43.6,40.9,0} ,{Xian,35.4,39.8,41.7,0}, {Guangzhou,39.5,40.2,38.2,0} }; inti,j; aver_sort(a,3); for(i=0;i<3;i++) { printf("%10s:",a[i].city); for(j=0;j<3;j++) printf("%6.1f",a[i].m[j]); printf("%6.1f\n",a[i].aver); }}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第11题:【程序功能】在被称为Scrabble的纵横猜字游戏中,字母表中的每一个字母都有一个分值,如下表所示:分值字母1A,E,I,L,N,O,R,S,T,U2D,G3B,C,M,P4F,H,V,W,Y5K8J,X10Q,Z依据上表,每个单词都有一个Scrabble分值。例如,单词"FARM"的Scrabble分值为9分(F为4分,A和R各1分,M为3分)。以下程序中,函数count的功能是计算word指向的数组中所存储单词的Scrabble分值,并返回该分值。在计算分值时,除大写字母外的任何字符的分值均按0分计算。【测试数据与运营结果】测试数据:FARM运营结果:scoreforFARMis9【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>typedefstruct{ char*alpha; intscore;}Letter;voidmain(){ intscore; charword[20]="FARM"; score=intcount(charword); printf("scorefor'%s'is%d\n",word,score);}intcount(char*word){ Lettera[6]={"AEILNORSTU",1,"DG",2,"BCMP",3, "FHVWY",4,"K",5,"JX",8,"QZ",10}; intscore=0,i; while(*word) { for(i=0;i<7;i++) { intk; while(a[i].alpha[k]) { if(*word==a[i].alpha[k]) score=a[i].score; k++; } } word++; } returnscore;}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第12题:【程序功能】函数intersec的功能是:找出所有在s1和s2两个字符串集合中都出现的字符串,将这些字符串放入一个新集合s3中,函数返回新集合中字符串的个数。【测试数据与运营结果】测试数据:s1集合:{while,for,switch,if,break,continue}s2集合:{for,case,do,else,char,switch}运营结果:forswitch【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>intintersec(chars1[10],chars2[10],chars3[10],intm,intn){ inti,j,k=0; for(i=0;i<m;i++) for(j=i;j<n;j++) if(s1[i]==s2[j]) { strcpy(s3[k++],s1[i]); break; } returnk;}voidmain(){ inti,j; chars1[6][10]={while,for,switch,if,break,continue}, s2[6][10]={for,case,do,else,char,switch},s3[20][10]; j=intersec(s1,s2,s3,6,6); for(i=0;i<j;i++) printf("%c",s3[i]);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第13题:【程序功能】判断一个英文句子是否是回文。回文原指一个正读和反读都完全同样的单词,例如level是一个回文。若忽略标点符号、空格及字母大小写的差异,回文的概念可以扩展到一个英文句子,例如,"Madam,I'mAdam"就是一个回文句子。下列程序中,函数palin的功能是判断一个英文句子是否是回文,假如是返回1,否则返回0。【测试数据与运营结果】测试数据:"MadamI'mAdam.","Notapalindrome."运营结果:MadamI'mAdam.:Yes.Notapalindrome.:No.【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>voidmain(){ chars[80]={"MadamI'mAdam.","Notapalindrome."}; inti,ok; for(i=0;i<2;i++) { ok=palin(s[i]); printf(ok?"%s:Yes.\n":"%s:No.\n",s[i]); }}voidpalin(char*s){ inti,j,k,ok; char*sp,ch; k=strlen(s); sp=(char*)malloc(k+1); if(sp==NULL) { printf("error!\n"); exit(0); } k=0; while(*s) { ch=*s; if(!('A'<=ch&&ch<='Z')) sp[k++]=ch-'A'+'a'; elseif('a'<=ch&&ch<='z') sp[k++]=ch; s++; } sp[k]='\0'; ok=1; for(i=0,j=k-1;i>j;i++,j--) if(sp[i]!=sp[j]) { ok=0; break; } free(sp); returnok;}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第14题:【程序功能】对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序。【测试数据与运营结果】测试数据:34218756121011915141613运营结果:12348765910111216151413【具有错误的源程序】#include<stdio.h>#include<conio.h>#defineN4voidswap(int*p1,int*p2){ intp; p=p1;p1=p2;p2=p;}voidsort(inta[N][N]){ inti,j,k; for(i=0;i<N;i++) for(j=0;j<N-1;j++) for(k=j+1;k<N-1;k++) if(i%2==0?a[i][j]<a[i][k]:a[i][j]>a[i][k]) swap(a[i]+j,a[i]+k);}voidmain(){ inta[N][N]={{3,4,2,1},{8,7,5,6},{12,10,11,9},{15,14,16,13}}; inti,j; sort(a[N][N]); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%3d",a[i][j]); printf("\n"); }}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第15题:【程序功能】根据转换说明字符的含义将以某一进制表达的数字字符串转换为一个整型数。转换说明字符与数字字符串中数字的进制表达规定如下:d表达十进制;o(小写字母)表达八进制;x(小写字母)表达十六进制。在函数voidconvert(chary[],chartype,int*x)被调用时,type中存储转换说明字符,y指向的数组中存储一个以某一进制表达的数字字符串,x指向的变量中存储转换后的整型数。若y字符串中出现与type规定的进制不相符合的非法字符时,只取非法字符之前的字符作转换。主函数接受并保存键盘输入的一个转换说明字符和一个以某种进制表达的数字字符串,调用convert函数根据转换说明字符将数字字符串转换为整型数,输出转换后的整型数。【测试数据与运营结果】输入d31时应输出31,输入d-31时应输出-31。输入o37时应输出31,输入o-37时应输出-31,输入o378时应输出31。输入x1f时应输出31,输入x-1f时应输出-31,输入x1fg时应输出31。【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<ctype.h>voidconvert(chary,chartype,int*x){ inti=0,flag,base,xx,sign; if(y[i]=='-'){sign=-1;i++;} elsesign=1; xx=0;flag=1; for(;y[i]!='\0'&&flag;i++) switch() { case'd':if(isdigit(y[i])) xx=xx*10+y[i]-'0'; elseflag=0; break; case'o':if(y[i]>='0'&&y[i]<='7') xx=xx*8+y[i]-'0'; elseflag=0; break; case'x':if(isdigit(y[i])) xx=xx*16+y[i]-'0'; else if(y[i]>='a'&&y[i]<='f') xx=xx*16+y[i]+'a'-10; elseflag=0; } x=sign*xx;}main(){ intnumber; chart,str[7]={0}; puts("inputconversiontypeandnumberstring:"); scanf("%c%s",&t,str); number=convert(str,t); printf("%d",number);}【规定】1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第16题:【程序功能】函数voidinsert_date(inty,intm,intd,chars[],intn)的功能是:将参数y(年)、m(月)、d(日)代表的日期按照"年/月/日"格式转换为子串后插入到s字符串中第n个字符(下标为n-1)之前。当n大于s字符串的长度时,将子串追加到s字符串之后。【测试数据与运营结果】若插入日期前s字符串为"Todayis,Sunday."且n=10,则插入日期"1997-5-20"后s字符串为"Todayis1997/5/20,Sunday."若插入日期前s字符串为"Todayis,Sunday."且n=20,则插入日期"2023-5-20"后s字符串为"Todayis,Sunday.2023/5/20"【具有错误的源程序】#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>voidinsert_date(inty,intm,intd,chars,intn){ intleap,i; chart[11],w[80]; for(i=0;i<3;i++) { t[i]=y/(int)pow(10,3-i)+'0'; y/=(int)pow(10,3-i); } t[i++]=y+'0'; t[i++]='/'; if(m>9)t[i++]=m/10+'0';t[i++]=m%10+'0'; t[i++]='/'; if(d>9)t[i++]=d/10+'0';t[i++]=d%10+'0'; t[i]=0; if((int)strlen(s)<n-1) strcpy(s,t); else {strcpy(w,s+n-1);strcpy(s+n-1,t);strcat(s,w);}}main(){ inty,m,d,n; charstr[80]="Todayis,Sunday."; printf("Inputyear-month-day:\n"); scanf("%d-%d-%d",&y,&m,&d); printf("Inputn:\n"); scanf("%d",&n); insert_date(y,m,d,str); puts(str);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第17题:【程序功能】通信簿(结构数组list)中存有5个联系人的信息,每个联系人的信息由位置号、姓名和电话号码组成。下列程序的功能是:输入姓名,若通信簿中存在该联系人信息则删除,显示通信簿中剩余人员信息,若不存在则输出"Notfound"。【测试数据与运营结果】测试数据:liu运营结果:Theinformationafterdeleting:1zhang23012zhao23024li23045sun2305测试数据:wang运营结果:Notfound【具有错误的源程序】#include<conio.h>#include<stdio.h>#include<string.h>#defineN5 structaddress{intno;charname[10];charphone[15];};intdelphone(chardelname,structaddresslist){ inti=0,j=0; for(i=0;i<N;i++) if(list[i].name==delname) break; if(i<N) { for(j=0;j<N;j++) list[j]=list[j+1]; returnN-1; } returnN;}main(){ structaddresslist[N]= {{1,zhang,2301} ,{2,zhao,2302}, {3,liu,2303},{4,li,2304},{5,sun,2305} }; inti=0,k; chardelname[10]; printf("Pleaseinputthenameofdeleting:"); gets(delname); k=delphone(delname,list); if(k<N) { printf("Theinformationafterdeleting:\n"); for(i=0;i<k;i++) printf("%5d%15s%15s\n",no,name,phone); } elseprintf("Notfound\n");}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第18题:【程序功能】结构数组排序。函数voidsort_count(PSp,introw,int*f,int*m)对p指向的结构数组中前row个元素按gender(性别)排序,f(女性)在前,m(男性)在后;对于gender相同的那些元素按name(姓名)的字典序排序。分别记录p指向的结构数组前row个元素中男性、女性的人数,将男性人数保存到m指向的变量中,将女性人数保存到f指向的变量中。【测试数据与运营结果】运营结果:bethfjulyfmaryfjhonmtommmale:2female:3【具有错误的源程序】#include<stdio.h>#include<eonio.h>#include<string.h>typedefstruct{ charname[20]; chargender;}PS;voidsort_count(PSp,introw,int*f,int*m){ PStemp;inti,j,min; *f=*m=0; for(i=0;i<row-1;i++) { min=i; for(j=i+1;j<row;j++) if(p[j].gender<p[min].gender‖ p[j].gender==p[min].gender&&strcmp(p[j].name,P[min].name)>0) min=j; if(i!=min) {temp=p[i];p[i]=p[min];p[min]=temp;} } for(i=0;i<row;i++) if(p[i].gender=='m') *m++; *f=row-*m;}main(){ inti,female,male; PSarray[5]={{"mary",'f'},{"tom",'m'},{"july",'f'},{"jhon",'m'},{"beth",'f'}}; sort_count(array,5,&female,&male); for(i=0;i<5;i++) printf("\n%s\t%c",,array.gender); printf("\nmale:%dfemale:%d",male,female); getch();}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第19题:【程序功能】为了测试学生对英文单词的掌握限度,以下程序在给出的五个单词中随机抽取一个单词,用"*"替换该单词中的两个随机位置上的字母并显示替换后的单词,再将被测学生输入的单词与对的单词比较,显示对错信息。提醒:库函数randomize()初始化随机数生成器,库函数random(n)随机产生0~(n-1)之间的一个整数并返回,这两个函数的原型包含在stdlib.h中。【测试数据与运营结果】程序运营结果是随机的,即每次运营结果也许不同。一次运营结果如下:显示:Thewordis:bea*tifu*,Pleaseinputcorrectword:输入:beautiful显示:Right!另一次运营结果如下:显示:Thewordis:s*ude*t,Pleaseinputcorrectword:输入:studemt显示:Wrong!Thewordis:student【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>#include<time.h>intfuntest(char*cp,inti){ intix=0,iy=0,ik=0; charca[20]={0},cb[20]={0}; strcpy(ca,cp[i]); randomize(); ik=strlen(ca); ix=random(ik); iy=random(ik); while(iy==ix)iy=random(ik); ca[ix]='*';ca[iy]='*'; printf("Thewordis:%s,",ca); printf("Pleaseinputcorrectword:"); gets(cb); if(cb==cp[i]) return1; elsereturn0;}main(){ charcs[5][20]="beautiful","student","China","function","include"; inti,ik=0; randomize(); i=random(5); ik=funtest(cs,i); if(ik) printf("Right!\n"); else printf("Wrong!Thewordis:%s\n",cs);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第20题:【程序功能】计算两个按升序排列的数组之间的最小距离。两个数组之间的最小距离是指一个数组中每个元素分别与另一个数组中每个元素的数据差的绝对值中的最小值。函数min_dist计算包含m个元素的a数组与包含n个元素的b数组之间的最小距离。提醒:INT_MAX是在limits.h中定义的符号常量,用于代表所用编译系统中int类型数据的最大值。【测试数据与运营结果】测试数据:a数组中的数据:1,3,7,11,18b数组中的数据:4,5,8,13,22运营结果:mindistance=1【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<limits.h>#definemin(intx,inty)((x)<(y)?(X):(y))intmin_dist(inta,intb,intm,intn){ intmin=INT_MAX; intia=0,ib=0; while(ia<m‖ib<n) if(a[ia]>=b[ib]) { min=min(min,a[ia]-b[ib]); ib++: } else { min=min(min,b[ib]-a[ia]); ia++; } returnmin;}main(){ inta={1,3,7,11,18},b={4,5,8,13,22}; inti,m,n; m=sizeof(a)/sizeof(int); n=sizeof(b)/sizeof(int); printf("\n"); for(i=0;i<m;i++)printf("%5d",a[i]); printf("\n"); for(i=0;i<n;i++)printf("%5d",b[i]); printf("nmindistance=%f",min_dist(a,b,m,n));}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第21题:【程序功能】函数voidyanghui(inty[][N],intx[][N],intn)生成n行杨辉三角形数据构成的矩阵,并将其存放到y指向的二维数组中,再将y数组中的矩阵顺时针旋转90度后存储到x指向的二维数组中。主函数中分别输出n行杨辉三角形及顺时针旋转90度后的n行杨辉三角形。【测试数据与运营结果】n=4时应输出:11112113311111321311【具有错误的源程序】#include<stdio.h>#include<conio.h>#defineN=10voidyanghui(inty[N],intx[N],intn);main(){ staticinti,j,n,a[N][N],b[N][N]; printf("inputn(n<%d):",N); scanf("%d",&n); yanghui(a,b,n); for(i=0;i<n;i++) { for(j=0;j<=i;j++) printf("%3d",a[i][j]); printf("\n"); } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<n-i;j++) printf("%3d",b[i][j]); printf("\n"); }}voidyanghui(inty[N],x[N],n){ inti,j; y[0][0]=1; for(i=1;i<n;i++) { y[i][0]=y[i][i]=1; for(j=1;j<i;j++) y[i][j]=y[i-1][j+1]+y[i-1][j]; } for(i=0;i<n;i++) for(j=0;j<i;j++) x[i][j]=y[n-1-j][i];}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考生文献夹中供阅卷使用,否则不予评分。第22题:【程序功能】根据转换说明字符的含义将一个整型数转换为以某一进制表达的数字字符串。转换说明字符与转换后的数字字符串中数字的进制表达规定如下:d代表十进制,o(小写字母)代表八进制;x(小写字母)代表十六进制。在函数char*convert(intx,chartype,chary[])被调用时,type中存储转换说明字符,x中存储待转换的整型数,y指向的数组中存储转换后的数字字符串,函数返回y指向数组首地址。主函数接受并保存键盘输入的一个转换说明字符和一个十进制表达的整数,调用convert函数根据转换说明字符将整数转换为数字字符串,输出转换后的数字字符串。【测试数据与运营结果】输入d31时应输出31,输入d-31时应输出-31。输入o31时应输出37,输入o-31时应输出-37。输入x31时应输出1f,输入x-31时应输出-1f。【具有错误的源程序】#include<stdio.h>#include<conio.h>char*convert(intx,chartype,chary){ inti=0,j,base,xx;chark; switch(type) { case'd':base=10;break; case'o':base=8;break; case'x':base=16; } if(x<0)xx=-x; elsexx=x; while(xx>0) { intm=xx%base; if(base<=10&&m<10) y[i]=m+'0'; else y[i]=m-10+'a'; xx=xx/base; i++; } if(x<0)y[i++]='-'; for(j=0;j<i;j++) {k=y[j];y[j]=y[i-j-1];y[i-j-1]=k;} y[i]='\0'; returny[0];}main(){ intnumber; chart,str[7]={0}; puts("inputconversiontypeandnumber:"); scanf("%c%d",&t,&number); puts(char*convert(number,t,str));}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。第23题:【程序功能】记录并输出子串substr在母串string中出现的次数,输出该子串每次出现在母串中的起始位置序号(序号从1开始)。【测试数据与运营结果】显示母串:"Thisisabook.Thatisabook."输入子串:"is"运营结果:k=33621【具有错误的源程序】#include<stdio.h>#include<conio.h>#defineN20intstr_count(char*string,char*substr,intioc){ inti,j,k,t,m=0; for(i=0;string[i]!='\0';i++) { t=0; for(j=i,k=0;substr[k]==string[k];k++,j++) if(substr[k+1]=='\0') { t=1; break; } if(t) ioc[++m]=i+1; } returnm;}main(){ inti,k,ioc[N]; charstr[80]=Thisisabook.Thatisabook.,substr[N]; printf("string:%s\n",str); printf("substring:"); gets(substr); k=str_count(str,substr,ioc); printf("\nk=%d\n",k); for(i=1;i<=k;i++) printf("%4d",ioc[i-1]);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。第24题:【程序功能】函数intfind(structmya[],intn,charx[])在a指向的保存城际旅游信息的结构数组的前n个元素中查找某一城市的信息。a指向的结构数组中可以保存N个城市旅游信息记录,x指向的数组中保存了需要查询的城市名(字符串)。若结构数组a中存在所要查找的城市记录,则返回该记录在结构数组中存储位置的下标值;若不存在则返回-1。已知结构数组中的数据按城市名以字典序排列。保存城际旅游信息的结构类型定义如下:structmy{intnum;/*城市序号*/charname[20];/*城市名*/intkm;/*距离本市公里数*/};【测试数据与运营结果】输入Chengdu时应输出:2Chengdu500km输入Shanghai时应输出:Notfound【具有错误的源程序】#include<stdio.h>#include<conio.h>#include<string.h>#defineN100structmy{ intnum; charname[20]; intkm;};intfind(structa,intn,charx){ intmid,top,bot; top=0;bot=n-1; do { mid=(top+bot)/2; if(strcmp(x,a[mid].name)==0) returnmid; if(strcmp(x,a[mid].name)>0) bot=mid-1; else top=mid+1: } while(top>=bot); return1;}main(){ intk,j,len=0; charname1[20]; structmya[N]= {{1,"Beijing",1200} ,{2,"Chengdu",500},{3,"Hangzhou",400}, {4,"Nanjing",0},{5,"Qingdao",610},{-1,"",0} }; for(j=0;j<N;j++) if(a[j].num==-1)break; elselen=len+1; printf("inputname:"); scanf("%s",name1); k=find(a,len,name1); if(k==-1) printf("Notfound!\n"); else printf("%d%s%dkm\n",*a[k].num,*a[k].name,*a[k].km);}【规定】1.将上述程序录入到文献myf1.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的错误进行修改。2.改错时,可以修改语句中的一部分内容,调整语句顺序,增长少量的变量说明或编译预解决命令,但不能增长其他语句,也不能删去整条语句。3.改正后的源程序(文献名myf1.c)保存在考试软盘的根目录中供阅卷使用,否则不予评分。第25题:【程序功能】查找并输出同时出现在两个一维数组中的整数,每个一维数组中的元素均已按值升序排列,并且每个数组中的元素没有相同的值。函数intcoincidence_count(inta[],intb[],intm,intn,intc[])按上述规定在a指向的数组前m个元素和b指向的数组前n个元素中查找,将找到的整数保存到c指向的数组中。【测试数据与运营结果】测试数据:a数组中数据:1,2,4,8,10,12,13,14,16,18b数组中数据:3,4,7,8,9,10,12,13,16,19运营结果:No.Array1Array201312424738841095121061312714138161691819Thereare6equalnumbers:4810121316【具有错误的源程序】#include<conio.h>#include<stdio.h>intcoincidence_count(inta,intb,intm,intn,intc){ intcount,ia,ib; count=ia=ib=0; while(ia<m‖ib<n) if(a[ia]<b[ib]) ia++; else(a[ia]>b[ib]) ib++; else { c[count]=a[ia]; ia++;ib++; } returncount;}main(){ inta={1,2,4,8,10,12,13,14,16,18},b={3,4,7,8,9,10,12,13,16,19}; intc[10],i,na,nb,n; na=sizeof(a)/sizeof(int); nb=sizeof(b)/sizeof(int); printf("nCoincidenceCountoftwoIncreasingArrays\n"); printf("\nNo.Array1Array2"); for(i=0;i<na;i++) printf("\n%3f%10f%10f",i,a[i],b[i]); printf("\nThereare%dequalnumbers:",n=coincidence_count(a,b,na,nb,c)); for(i=0;i<n;i++) pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婴儿食物主题试题及答案分享
- 物业法规培训测试题及答案解析
- 土壤酸碱性考试试题及答案详解
- 江城子考查试题及完整答案
- 出生缺陷防治考试题目及答案
- 2026年给排水工程施工考核考试试卷试题及答案
- 2026年电力设备缺陷处置考试试卷试题及答案
- 2026年初级经济师经济基础考试试卷试题及答案
- 2026年统计专业技术中级资格考试(统计工作实务)强化复习试题及答案
- 2026年卫生高级职称考试(慢性非传染性疾病控制)历年参考题库含答案详解
- 2025年黑龙江省综合评标专家库考试题库及答案
- 《宠物鉴赏》课件-猫的起源与历史
- 市场培训之地推基础培训
- 课堂管理的方法和技巧
- 出版从业考试财务知识点及答案解析
- 食品生产车间三级安全培训课件
- 教研组长专业能力提升培训
- 2025-2026学年中图版高中地理必修第一册教学计划及教学进度表
- 二手手机回收协议合同
- 危大工程安全监理管理制度
- 机械工程导论课件教学
评论
0/150
提交评论