2025年江苏省二级C语言上机考试模拟题_第1页
2025年江苏省二级C语言上机考试模拟题_第2页
2025年江苏省二级C语言上机考试模拟题_第3页
2025年江苏省二级C语言上机考试模拟题_第4页
2025年江苏省二级C语言上机考试模拟题_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江苏市二级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(wLj+U,wLjJ);

strcpy(w[j+1],b);

)

returnk;

)

voidmain()

(

charsent[80]="cisaprogramminglanguage.z,;

charword[20];

inti,n;

n=word_sort(sent,word);

for(i=0;i<n;i++)printf(飞s”,word[i]);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第2题:

【程序功能】

函数voidrin晨inta口,int皿口,intn,int*max)的功能是:将a指向数组中前n个正整

数看作一种圆环,在a数组中查找相邻四个元素之和最大的四个元素(用下标表达)及其和值,

将这四个元素的下标依次保留到m指向的数组中,最大值(和值)保留到川”指向的变量中。

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[l]=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=l;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,in[4],max,sum=0;

ring(a,m,20,&max);

printf(,zmax=%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.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

2.改正后的源程序(文献名myfl.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]!=’O';i++)

if(isxdigit(a[i]))

b[i++]=a[i];

b[j]='\0';

i=0;

do

if(isdigit(b[i]))

{k=k*16+b[i]-'O';i++;}

else

b[i]=isupper(b[i])?b[i]:b[i]-'a'+'A';

k=k*16+b[i]-'A';

i++;

)

)

while(b[i]!='O');

returnk;

)

voidmain()

{

charc[80]="xyz3F4tqk”;

longm;

m=change(c[80]);

printf("%1d”,m);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题Fl规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第4题:

【程序功能】

函数HolandFlag的功能是:己知在flag指向的有n个元素的字符数组中,每个元素的值是字

符R、w或B中的一种。函数按照R、w、B的次序重新排列flag数组

中所有元素的值。

算法提醒:

若flag数组初始值为RBWBMWRBTV

则在flag数组中出现数据互换的环节与效果为:

第1步:f1ag[1]与f1ag[8]互换后数据为RWWBRWRBB

第2步:flag|_3j与flag⑹互换后数据为RWWRRWBBB

第3步:flag[l]与flag[4]互换后数据为RRWRWWBBB

第4步:flag[2]与flag[3]互换后数据为RRR

【测试数据与运行成果】

测试数据:RBWBRWRBW

运行成果:RRR

【具有错误的源程序】

#include<stdio.h>

#include<conio.h>

#include<string.h>

^define10N

voidHolandFlag(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]="RB甲BRWRBW”;

inti,k,n=strlen(flag);

HolandFlag(flag[N],n);

for(i=0;i<n;i++)

printfflag[i]);

}

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第5题:

【程序功能】

分类汇总求平均值。函数sort_aver的形参a指向的二维数组(简称a数组)第一列元素的值代

表类别,a数组已按第一歹!元素的值从小到大有序排列。sorjaver函数对a数组的n行元素中

第•列元素值相似的所有行按列求平均值(第•列除外),并将类别值和除第•列外的各列平

均值依次保留到b指向的数组(简称b数组)中,函数返回b数组中数据的行数。

【测试数据与运行成果】

a数组:b数组:

133

113123

235235

354345

336

【具有错误的源程序】

#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=l;i<n;i++)

(

if(b[k][0]==a[i][0])

(

for(j=l;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=l;j<3;j++)

b[i][j]/=c[i];

returnk;

)

voidmeiinO

(

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++)printfC%3d,b[i][j]);

printf("\n");

)

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的•部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第6题,

【程序功能】

函数merge的功能是:合卢两个字符串集合为一种新集合,每个字符串在新集合中仅出现一

次,函数返回新集合中字符串的个数。

【测试数据与运行成果】

测试数据:

si集合:(“while","for","switch","if","break","continue”)

cZ4-人〃〃〃〃[〃〃〃•[1〃]

s2集合:{for,case,do,else,char,switch)

运行成果:

whileforswitchifbreakcontinuecasedoelsechar

【具有错误的源程序】

#include<stdio.h>

#include<conio.h>

#include<string.h>

intmerge(charsi[10],chars2[10],chars3[10],intm,intn)

(

inti,j,k=0;

for(i=0;i<m;i++)

s3[k++]=si[1];

for(i=0;i<n;i++)

(

for(j=0;j<m;j++)

if(strcmp(s2[i]»si[j]))

break;

if(j>m)

strepy(s3[k++],s2[i]);

)

returnk;

}

voidmain()

{

inti,j;

charsi[6][10]={"while","for","switch","if〃,"break","continue"},

s2[6][10]={"for","case","do","else","char","switch"},

s3[20][10];

j=merge(sl[10],s2[10],s3[10],6,6);

for(i=0;i<j;i++)

printf(*%s*,s3[i]);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第7题:

【程序功能】

已知x数组中存储的n阶矩阵有一种鞍点(鞍点是指该位置上的数是所在行的最大数,同步也

是所在列的最小数),程序实现将矩阵中鞍点所在列移动到最右侧。

【测试数据与运行成果】

测试数据:

1320

465-1

7980

-11032

运行成果:

Andian:a[0][l]

1203

45-16

7809

-13210

【具有错误的源程序】

#include<stdio.h>

#include<conio.h>

itdefineN=4

voidexchange(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;ii«)

(

for(j=0;j<N;j++)

printf("%3cT,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.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第8题:

【程序功能】

create函数的功能是:创立•种有N个元素的动态整型-维数组(N及N个整数由键盘输入),

对该数组N个元素从小到大排序,函数返回该动态数组的首地址。

insert函数的功能是:在口指向的有n个元素的有序数组中插入整数x,使得p数组的n+l个元

素仍按从小到大有序。

【测试数据与运行成果】

测试数据:N=10

3681201821057

运行成果: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*hcad,*p,i;

printf(*\nN=");

scanf("%d",&N);

head=int*malloc(N*sizeof(int));

printf(,zEnternumbers:");

p=head;

for(i=0;i<N;i++)

scanfp[i]);

for(i=l;i<N;i++)

insert(p,p[i],i);

returnhead;

)

voidmain()

(

int*hcad,*p,i,x;

head=create();

p=head;

for(i=0;i<N;i++)

printf(飞3d",*p++);

free(head);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题Fl规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第9题:

【程序功能】

replace_word函数的功能是对s指向的数组所存储的一种英文句子中的每个单词作如下处

理:在word_tab数组中查找该单词,若未找到则保持原单词不变;若找到则用word_tab数组

中该单词背面的第一种单词替代句子中的原单词(假如该单词是word_tab数组中的最终一种

单词则用第一种单词替代)。

【测试数据与运行成果】

测试数据:Iaccuseyourmistakes.

运行成果:Iforgiveyourmistakes.

【具有错误的源程序】

#include<stdio.h>

#include<conio.h>

voidreplaceword(chars)

{

charword_tab[4][ID]={"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,wordtab[(n+1)%4J);

strcpy(s,tmp);

i=i+strlen(word_tab[(n+1)%4]);

)

else

i=i+strlen(t);

)

}

)

main()

{

charline[80]="Iaccuseyourmistakes.*;

rep1ace_word(1ine);

putchar(line);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改.

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第10题:

【程序功能】

求三个都市中的每个都市某年前3个月旅游的平均人数,再按平均人数从高到低的次序输出

二个都市二个月的旅游人数和平均人数。

【测试数据与运行成果】

三个都市某年前3个月的旅游人数如下表所示(单位:万人):

测试数据citym⑵av^r

Nanjing36.743.640.9

Xian35.439.841.7

Guangzhou39.540.238.2

运行成果:

Nanjing:36.743.640.940.4

Guangzhou:39.540.238.239.3

Xian:35.439.841.739.0

【具有错误的源程序】

#include<stdio.h>

#include<conio.h>

#defineN10

structlist

(

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+l;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;}

)

}

voidmainO

(

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(w%6.If*,a[i].m[j]);

printf(*%6.lf\n*,a[i].aver);

)

}

【规定】

1.将上述程序录入到文献中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第11题:

【程序功能】

在被称为Scrabble的纵横猜字游戏中,字母表中的每一种字母均有一种分值,如下表所示:

分值字母

1AEI,L,N,O,R,S,T,U

2D.G

3B,C,M,P

4F,H.V,W,Y

5K

8J,X

10Q,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]=fAEILNORSTU",1,"DG〃,2,"BCMP〃,3,

“FIMVY",41"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.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第12题:

【程序功能】

函数intersec的功能是:找出所有在si和§2两个字符串集合中都出现的字符串,将这些字符

串放入一种新集合S3中,函数返回新集合中字符串的个数。

【测试数据与运行成果】

测试数据:si集合:{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(sl[i]==s2[j])

(

strcpy(s3[k++],si[i]);

break;

)

returnk;

}

voidmain()

(

inti,j;

charsi[6][10]={while,for,switch,if,break,continue},

s2[6][10]={for,case,do,else,char,switch},s3[20][10];

j=intersec(si,s2,s3,6,6);

for(i=0;i<j;i++)

prinlf("%c",s3[i]);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.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.\rT,s[i]);

)

)

voidpalin(char*s)

(

inti,j,k,ok;

char*sp,ch;

k=strlen(s);

sp=(cheir*)mallocCk+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=kl;i>j;iii,j)

if(sp[i]!=sp[j])

(

ok=0;

break;

}

free(sp);

returnok;

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第14题:

【程序功能】

对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序。

【测试数据与运行成果】

测试数据:

3421

8756

1210119

15141613

运行成果:

1234

8765

9101112

16151413

【具有错误的源程序】

#include<stdio.h>

i+include<conio.h>

^defineN4

voids*pl,int*p2)

(

intp;

P=pl;pl=p2;p2=p;

)

voidsort(inta[N][N])

(

inti,j,k;

for(i=0;i<N;i++)

for(j=0;j<N-l;j++)

for(k=j+l;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.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的•部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第15题:

【程序功能】

根据转换阐明字符的含义将以某一进制表达的数字字符串转换为•种整型数。转换阐明字符

与数字字符串中数字的进制表达规定如下:d表达十进制;。(小写字母)表达八进制;x(小写

字母)表达十六进制。

在函数voidconvert(chary[],chartype,int*x)被调用时,type中存储转换阐明字符,

y指向的数组中存储一种以某一进制表达的数字字符串,x指向的变量中存储转换后的整型

数。若y字符串中出现与type规定的进制不相符合的非法字符时,只取非法字符之前的字符

作转换。

主函数接受并保留键盘输入的一种转换阐明字符和一种以某种进制表达的数字字符串,调用

convert函数根据转换阐明字符将数字字符串转换为整型数,输出转换后的整型数。

【测试数据与运行成果】

输入d31时应输出31,输入d-31时应输出-31。

输入。37时应输出31,输入0-37时应输出-31,输入。378时应输出31。

输入xIf时应输出31,输入xTf时应输出-31,输入xIfg时应输出31。

【具有错误的源程序】

#include<stdio.h>

#include<conio.h>

#include<ctype.h>

voidconvert(chary,chartype,int*x)

(

inti=0,flag,base,xx,sign;

if(y[il==*-){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]-'O';

elseflag=0;

break;

case'o':if(y[i]>='O'&&y[i]<='7')

xx=xx*8+y[i]-'O';

elseflag=0;

break;

case'x':if(isdigit(y[i]))

xx=xx*16+y[i]-'O';

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(z,%c%sz,,&t,str);

number=convert(str,t);

printf(,,%d,/,number);

)

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.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,则插入日期”-5-20〃后s字符串为

“Todayis,Sunday./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(lO,3-i)+'O';

y/=(int)pow(lO,3-i);

)

t[i++]=y+'O';

t[i++]=’/';

if(m>9)t[i++]=m/10+'O';t[i++]=m%10+'O';

t[i++]=;

if(d>9)t[i++]=d/10+'O';t[i++]=d%10+'O';

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);)

}

mainO

(

inty,m,d,n;

charstr[80]="Todayis,Sunday.

printf(?,Inputyearmonthday:\n〃);

scanf(w%d-%d-%d*,也y,&m,&d);

printf(''Inputn:\n");

scanf(飞d",&n);

insert_date(y,m,d,str);

puts(str);

}

【规定】

1.将上述程序录入到文献myfl.c中,根据题目规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第17题:

【程序功能】

通信簿(构造数组list)中存有5个联络人的信息,每个联络人的信息由位置号、姓名和电话

号码构成。下列程序的功能是:输入姓名,若通信簿中存在该联络人信息则删除,显示通信

簿中剩余人员信息,若不存在则输出"Notfound"。

【测试数据与运行成果】

测试数据:liu

运行成果:Theinformationafterdeleting:

1zhang2301

2zhao2302

4li2304

5sun2305

测试数据:wang

运行成果:Notfound

【具有错误的源程序】

#include<conio.h>

#include<stdio.h>

#include<string.h>

^defineN5

structaddressfintno;charname110];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;

)

mainO

(

structaddresslisl[N]=

{{1,zhang,2301)

,(2,zhao.2302),

{3,liu,2303},{4,li,2304),{5,sun,2305)

);

inti=0,k;

chardelname[10];

printf(z,Pleaseinputthenameofdeleting:");

gets(delname);

k=deIphone(delname,list);

if(k<N)

(

printf("Theinformationcifterdeleting:\n〃);

for(i=0;i<k;i++)

printf(/,%5d%15s%15s\n//,no,name,phone);

)

elseprintf("Notfound'd');

}

【规定】

1.将上述程序录入到文献myfl.c中,根据题Fl规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第18题:

【程序功能】

构造数组排序。函数voidsortcount(PSp,introw,int*f,int*m)对p指向的构造数

组中前row个元素按gender(性别)排序,£(女性)在前,n(男性)在后;对于gender相似的那

些元素按name(姓名)的字典序排序。分别记录p指向的构造数组前row个元素中男性、女性的

人数,将男性人数保留到m指向的变量中,将女性人数保留到f指向的变量中。

【测试数据与运行成果】

运行成果:

bethf

julyf

maryf

jhonm

tomm

male:2female:3

【具有错误的源程序】

#include<stdio.h>

#include<oonio.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+l;j<row;j++)

if(p[j].gender<p[min].genderII

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”,5m,},{“july",'f,},{"jhon",'m'},

{“both",");

sort_count(array,5,&female,&male);

for(i=0;i<5;i++)

printf(,,\n%s\t%c”,array,name,array,gender);

printf("\nmale:%dfemale:%d”,male,female);

getch();

}

【规定】

1.将上述程序录入到文献myfl.c中,根据题Fl规定及程序中语句之间的逻辑关系对程序中的

错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增长少许的变量阐明或编译预处

理命令,但不能增长其他语句,也不能删去整条语句。

3.改正后的源程序(文献名myfl.c)保留在考生文献夹中供阅卷使用,否则不予评分。

第19题:

【程序功能】

为了测试学生对英文单词的掌握程度,如下程序在给出的五个单词中随机抽取•种单词,用

“犷替代该单词中的两个随机位置上的字母并显示管代后的单词,再将被测学生输入的单词

与对的单词比较,显示对错信息。

提醒:库函数randomize。初始化随机数生成器,库函数random(n)随机产生0~(nT)之间的

一种整数并返回,这两个函数的原型包括在stdlib.h中。

【测试数据与运行成果】

程序运行成果是随机的,却每次运行成果也许不一样。

一次运行成果如下:

显示:Thewordis:bea*tifu*,Pleaseinputcorrectword:

输入:beautiful

显示:Right!

另一次运行成果如下:

显示:Thewordis:s*udc*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=st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论