2023年江蘇省二級C語言上機考試模擬題_第1頁
2023年江蘇省二級C語言上機考試模擬題_第2頁
2023年江蘇省二級C語言上機考試模擬題_第3頁
2023年江蘇省二級C語言上機考試模擬題_第4頁
2023年江蘇省二級C語言上機考試模擬題_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

江蘇市二級C語言上機考成模擬題

改錯題

第1題:

【程序功能】

函數(shù)intword_sort(chars[],charw[10][20])的功能是:將s指向的字符串(英文句子)

中所有單詞取出保存到W指向的數(shù)組中,再對W數(shù)組中的單詞按字典序排序。函數(shù)返回W數(shù)組

中存儲的單詞個數(shù)。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):cisaprogramminglanguage.

運營結(jié)果: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-l;i++)

for(j=O;j<k-l-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./z;

charword[20];

inti,n;

n=word_sort(sent,word);

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

)

【規(guī)定】

1.將上述程序錄入到文獻myfLc中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第2題:

【程序功能】

函數(shù)voidring(inta[],intm[],intn,int*max)的功能是:將a指向數(shù)組中前n個正整

數(shù)看作一個圓環(huán),在a數(shù)組中查找相鄰四個元素之和最大的四個元素(用下標表達)及其和值,

將這四個元素的下標依次保存到m指向的數(shù)組中,最大值(和值)保存到max指向的變量中。

main函數(shù)調(diào)用ring函數(shù),在a數(shù)組的20個元素中找出四個元素,并按"運營結(jié)果''的格式輸出

這四個元素的標記及和值。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):inta[20]={13,18,4,1,6,10,15,2,17,3,5,7,16,8,11,14,9,

12,19,20};

運營結(jié)果: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=1;i<4;i++)

m[i]=m[i-1]+1;

)

voidmainO

(

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(/za[%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);

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

2.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第3題:

【程序功能】

函數(shù)change從a數(shù)組存儲的字符串中取出所有十六進制數(shù)字字符依次存入字符數(shù)組b中,然后

再將b數(shù)組中的數(shù)字字符串轉(zhuǎn)換成一個整數(shù)并返回。

提醒:庫函數(shù)isxdigit(ch)的功能是檢查ch是否是十六進制數(shù)字字符,若是則返回1,否則

返回0。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):輸入"xyz3F4tqk”

運營結(jié)果:輸出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]=M;

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]1='O');

returnk;

)

voidmain0

(

charc[80]="xyz3F4tqk”;

longm;

in=change(c[80]);

printf(/z%ld,z,m);

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第4題:

【程序功能】

函數(shù)HolandFlag的功能是:已知在flag指向的有n個元素的字符數(shù)組中,每個元素的值是字

符R、w或B中的一個。函數(shù)按照R、w、B的順序重新排列flag數(shù)組

中所有元素的值。

算法提醒:

若flag數(shù)組初始值為RBWBRWRBW

則在flag數(shù)組中出現(xiàn)數(shù)據(jù)互換的環(huán)節(jié)與效果為:

第1步:與flag[8]互換后數(shù)據(jù)為RWWBRWRBB

第2步:flag[3]與flag[6]互換后數(shù)據(jù)為RWWRRWBBB

第3步:與flag[4]互換后數(shù)據(jù)為RRWRWWBBB

第4步:£匕8[2]與門28[3]互換后數(shù)據(jù)為口!《神\^88

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):RBWBRWRBW

運營結(jié)果:RRRWWWBBB

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#include<string.h>

#define10N

voidHolandFlag(charflag,intnum)

(

inti,j,k,m;

charc,color[3]={B,W,R};

mnum;

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

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

if(flag[i]==color[k])

(

for(j=m-l;j>i;j-)

if(flag[j]==color[k])

(

c=flag[i];flagEi]=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(z/%cz/,flag[i]);

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第5題:

【程序功能】

分類匯總求平均值。函數(shù)sort_aver的形參a指向的二維數(shù)組(簡稱a數(shù)組)第一列元素的值代

表類別,a數(shù)組己按第一列元素的值從小到大有序排列。sortaver函數(shù)對a數(shù)組的n行元素中

第一列元素值相同的所有行按列求平均值(第一列除外),并將類別值和除第一列外的各列平

均值依次保存到b指向的數(shù)組(簡稱b數(shù)組)中,函數(shù)返回b數(shù)組中數(shù)據(jù)的行數(shù)。

【測試數(shù)據(jù)與運營結(jié)果】

a數(shù)組:b數(shù)組:

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

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

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

}

voidmain0

(

intx[10][3]={{1,3,3},{1,1,3},{2,3,5},{3,5,4},{3,3,6}},i,j,

n;

n=sortaver(x,5,b);

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

for(j=0;j<n;j++)printf(編3d”,b[i][j]);

printf('\n");

}

}

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第6題:

【程序功能】

函數(shù)merge的功能是:合并兩個字符串集合為一個新集合,每個字符串在新集合中僅出現(xiàn)一

次,函數(shù)返回新集合中字符串的個數(shù)。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):

si集合:twhile,tor,switch,if,break,continue)

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

運營結(jié)果:

whi1eforswitchifbreakcontinuecasedoelsechar

【具有錯誤的源程序】

#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[i];

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

(

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

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

break;

if(j>m)

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

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(si[10],s2[10],s3[10],6,6);

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

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

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第7題:

【程序功能】

已知x數(shù)組中存儲的n階矩陣有一個鞍點(鞍點是指該位置上的數(shù)是所在行的最大數(shù),同時也

是所在列的最小數(shù)),程序?qū)崿F(xiàn)將矩陣中鞍點所在列移動到最右側(cè)。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):

1320

465-1

7980

-11032

運營結(jié)果:

Andian:a[0][1]

1203

45-16

7809

-13210

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#defineN=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(,zAndian:a[%d][%d]\n/z,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");

}

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第8題:

【程序功能】

create函數(shù)的功能是:創(chuàng)建一個有N個元素的動態(tài)整型一維數(shù)組(N及N個整數(shù)由鍵盤輸入),

對該數(shù)組N個元素從小到大排序,函數(shù)返回該動態(tài)數(shù)組的首地址。

insert函數(shù)的功能是:在p指向的有n個元素的有序數(shù)組中插入整數(shù)x,使得p數(shù)組的n+1個元

素仍按從小到大有序。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):N=10

3681201821057

運營結(jié)果: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&N);

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

printfCenternumbers:〃);

p=head;

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

scanfp[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++)

printfr%3dz,,*p++);

free(head);

)

【規(guī)定】

1.將上述程序錄入到文獻myfLc中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第9題:

【程序功能】

replace_word函數(shù)的功能是對s指向的數(shù)組所存儲的一個英文句子中的每個單詞作如下解

決:在wordtab數(shù)組中查找該單詞,若未找到則保持原單詞不變;若找到則用wordtab數(shù)組

中該單詞后面的第一個單詞替換句子中的原單詞(假如該單詞是word_tab數(shù)組中的最后一個

單詞則用第一個單詞替換)。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):Iaccuseyourmistakes.

運營結(jié)果: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,wordtab[(n+1)%4]);

strcpy(s,tmp);

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

)

else

i=i+strlen(t);

)

)

}

main()

(

charline[80]="Iaccuseyourmistakes.";

replace_word(line);

putchar(line);

}

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第10題:

【程序功能】

求三個城市中的每個城市某年前3個月旅游的平均人數(shù),再按平均人數(shù)從高到低的順序輸出

三個城市三個月的旅游人數(shù)和平均人數(shù)。

【測試數(shù)據(jù)與運營結(jié)果】

三個城市某年前3個月的旅游人數(shù)如下表所示(單位:萬人):

測試數(shù)據(jù)citym[0]m[l]m|2|aver

Nanjing36.743.640.9

Xian35.439.841.7

Guangzhou39.540.238.2

運營結(jié)果:

Nanjing:36.743.640.940.4

Guangzhou:39.5

Xian:35.439.841.739.0

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#defineN10

structlist

(

charcity[10];

floatm[3],aver;

};

voidaversort(structlista,intn)

I

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

}

)

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;

aversort(a,3);

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

printf(zz%10s:”,a[i].city);

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

printf("%6.If",a[i].m[j]);

printfC%6.lf\n",a[i].aver);

}

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第11題:

【程序功能】

在被稱為Scrabble的縱橫猜字游戲中,字母表中的每一個字母都有一個分值,如下表所示:

分值字母

1A,E,I,L,NQ,R,S,T,U

2D,G

3B,C,M,P

4F,H,V,W,Y

5K

8J,X

10Q,Z

依據(jù)上表,每個單詞都有一個Scrabble分值。例如,單詞"FARM"的Scrabble分值為9分(F為4

分,A和R各1分,M為3分)。

以下程序中,函數(shù)count的功能是計算word指向的數(shù)組中所存儲單詞的Scrabble分值,并返

回該分值。在計算分值時,除大寫字母外的任何字符的分值均按0分計算。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):FARM

運營結(jié)果:scoreforFARMis9

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#include<string.h>

typedefstruct

I

char*alpha;

intscore;

)

Letter;

voidmain()

I

intscore;

charword[20]="FARM";

score=intcount(charword);

printf("scorefor'%s'is%d\n,z,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;

}

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第12題:

【程序功能】

函數(shù)intersec的功能是:找出所有在si和s2兩個字符串集合中都出現(xiàn)的字符串,將這些字符

串放入一個新集合S3中,函數(shù)返回新集合中字符串的個數(shù)。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):si集合:{while,for,switch,if,break,continue)

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

運營結(jié)果:forswitch

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#include<string.h>

intintersec(charsi[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])

I

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

break;

)

returnk;

)

voidmain()

I

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

printf(,/%c/z,s3[i]);

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第13?:

【程序功能】

判斷一個英文句子是否是回文?;匚脑敢粋€正讀和反讀都完全同樣的單詞,例如level是

一個回文。若忽略標點符號、空格及字母大小寫的差異,回文的概念可以擴展到一個英文句

子,例如,"Madam,I'mAdam"就是一個回文句子。

下列程序中,函數(shù)palin的功能是判斷一個英文句子是否是回文,假如是返回1,否則返回0。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):"MadamI'mAdam.","Notapalindrome.”

運營結(jié)果:MadamI'mAdam.:Yes.

Notapalindrome.:No.

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

voidmainO

chars[80]={"MadamI'mAdam.〃,“Notapalindrome.,z};

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)

I

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-l;i>j;i++,j—)

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

(

ok=0;

break;

)

free(sp);

returnok;

)

【規(guī)定】

1.將上述程序錄入到文獻myf1.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myf1.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第14題:

【程序功能】

對N行N列二維數(shù)組的每一行排序,偶數(shù)行(0當作偶數(shù))由小到大排序,奇數(shù)行由大到小排序。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):

3421

8756

1210119

15141613

運營結(jié)果:

1234

8765

9101112

16151413

【具有錯誤的源程序】

#include<stdio.h>

#include<conio.h>

#defineN4

voidswap(int*pl,int*p2)

intp;

P=pl;plp2;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+l;k<N-l;k++)

if(i%2==0?a[i][j]<a[i][k]:a[i][j]>a[i][k])

swap(a[i]+j,a[i]+k);

)

voidmainO

(

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

printfa[i][j]);

printf("\n");

}

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時一,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第15題:

【程序功能】

根據(jù)轉(zhuǎn)換說明字符的含義將以某--進制表達的數(shù)字字符串轉(zhuǎn)換為一個整型數(shù)。轉(zhuǎn)換說明字符

與數(shù)字字符串中數(shù)字的進制表達規(guī)定如下:d表達十進制;0(小寫字母)表達八進制;x(小寫

字母)表達十六進制。

在函數(shù)voidconvert(chary[],chartype,int*x)被調(diào)用時,type中存儲轉(zhuǎn)換說明字符,

y指向的數(shù)組中存儲一個以某一進制表達的數(shù)字字符串,x指向的變量中存儲轉(zhuǎn)換后的整型

數(shù)。若y字符串中出現(xiàn)與type規(guī)定的進制不相符合的非法字符時,只取非法字符之前的字符

作轉(zhuǎn)換。

主函數(shù)接受并保存鍵盤輸入的一個轉(zhuǎn)換說明字符和一個以某種進制表達的數(shù)字字符串,調(diào)用

convert函數(shù)根據(jù)轉(zhuǎn)換說明字符將數(shù)字字符串轉(zhuǎn)換為整型數(shù),輸出轉(zhuǎn)換后的整型數(shù)。

【測試數(shù)據(jù)與運營結(jié)果】

輸入d31時應(yīng)輸出31,輸入d-31時應(yīng)輸出-31。

輸入。37時應(yīng)輸出31,輸入。-37時應(yīng)輸出-31,輸入o378時應(yīng)輸出31。

輸入xIf時應(yīng)輸出31,輸入x-lf時應(yīng)輸出-31,輸入xIfg時應(yīng)輸出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=T;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(,zinputconversiontypeandnumberstring:〃);

scanf("%c%s〃,&t,str);

number=convert(str,t);

printfnumber);

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第16題:

【程序功能】

函數(shù)voidinsertdate(inty,intm,intd,chars[],intn)的功能是:將參數(shù)y(年)、

m(月)、d(日)代表的日期按照“年/月/日”格式轉(zhuǎn)換為子串后插入至IJs字符串中第n個字符

(下標為n-1)之前。當n大于s字符串的長度時,將子串追加到s字符串之后。

【測試數(shù)據(jù)與運營結(jié)果】

若插入日期前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[ll],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++]=V\

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

t[i++]=;

if(d>9)t[i++]=d/10+,0,;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);)

)

main()

{

inty,m,d,n;

charstr[80]="Todayis,Sunday.〃;

printf(z,Inputyear-month-day:\n〃);

scanf(,,%d-%d-%d//,&y,&m,&d);

printf(zzInputn:\n〃);

scanf("%d",&n);

insertdate(y,m,d,str);

puts(str);

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第17題:

【程序功能】

通信簿(結(jié)構(gòu)數(shù)組list)中存有5個聯(lián)系人的信息,每個聯(lián)系人的信息由位置號、姓名和電話

號碼組成。下列程序的功能是:輸入姓名,若通信簿中存在該聯(lián)系人信息則刪除,顯示通信

簿中剩余人員信息,若不存在則輸出"Notfound"。

【測試數(shù)據(jù)與運營結(jié)果】

測試數(shù)據(jù):liu

運營結(jié)果:Theinformationafterdeleting:

1zhang2301

2zhao2302

4li2304

5sun2305

測試數(shù)據(jù):wang

運營結(jié)果: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++)

ifname二二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:\rT);

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

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

)

elseprintf(?,Notfound\n");

}

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第18題:

【程序功能】

結(jié)構(gòu)數(shù)組排序。函數(shù)voidsort_count(PSp,introw,int*f,int*m)對p指向的結(jié)構(gòu)數(shù)

組中前row個元素按gender(性別)排序,f(女性)在前,m(男性)在后;對于gender相同的那

些元素按name(姓名)的字典序排序。分別記錄p指向的結(jié)構(gòu)數(shù)組前row個元素中男性、女性的

人數(shù),將男性人數(shù)保存到m指向的變量中,將女性人數(shù)保存到f指向的變量中。

【測試數(shù)據(jù)與運營結(jié)果】

運營結(jié)果:

bethf

Julyf

maryf

jhonm

tomm

male:2female:3

【具有錯誤的源程序】

#include<stdio.h>

#include<eonio.h>

#include<string.h>

typedefstruct

(

charname[20];

chargender;

}

PS;

voidsort_count(PSp,introw,int*f,int*m)

I

PStemp;inti,j,min;

*f==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].genderp[min],gender&&strcmp(p[j].name,

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〃JF}};

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

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

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

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

getchO;

)

【規(guī)定】

1.將上述程序錄入到文獻myfl.c中,根據(jù)題目規(guī)定及程序中語句之間的邏輯關(guān)系對程序中的

錯誤進行修改。

2.改錯時,可以修改語句中的一部分內(nèi)容,調(diào)整語句順序,增長少量的變量說明或編譯預(yù)解

決命令,但不能增長其他語句,也不能刪去整條語句。

3.改正后的源程序(文獻名myfl.c)保存在考生文獻夾中供閱卷使用,否則不予評分。

第19題:

【程序功能】

為了測試學生對英文單詞的掌握限度,以下程序在給出的五個單詞中隨機抽取一個單詞,用

〃*〃替換該單詞中的兩個隨機位置上的字母并顯示替換后的單詞,再將被測學生輸入的單詞

與對的單詞比較,顯示對錯信息。

提醒:庫函數(shù)randomize。初始化隨機數(shù)生成器,庫函數(shù)random(n)隨機產(chǎn)生0~(n-1)之間的

一個整數(shù)并返回,這兩個函數(shù)的原型包含在stdlib.h中。

【測試數(shù)據(jù)與運營結(jié)果】

程序運營結(jié)果是隨機的,即每次運營結(jié)果也許不同。

一次運營結(jié)果如下:

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

輸入:beautiful

顯示:Right!

另一次運營結(jié)果如下:

顯示: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(,zPleaseinputcorrectword:");

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論