試題四 (試題四和試題五選做一題)
閱讀下列函數(shù)說(shuō)明和C函數(shù),將應(yīng)填入 n 處的字句寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
[函數(shù)說(shuō)明]
函數(shù)ReadDat()實(shí)現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串?dāng)?shù)組dat中(第行字符串長(zhǎng)度均小于80)。請(qǐng)編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對(duì)字符串按給定的條件進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組dat中,最后調(diào)用函數(shù)WriteDat()把結(jié)果dat輸出到文件out.dat中。
條件:從字符串中間一分為二,右邊部分按字符的ASCII值降序排序,排序后左邊部分與右邊部分進(jìn)行交換。如果原字符串長(zhǎng)度為奇數(shù),則最中間的字符不參加排序,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7
源字符串 h g f e a b c d
則處理后字符串 d c b a h g f e
部分源程序已給出。
請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
#include
#include
char dat[20][80];
void jsSort()
{ int i,j,k,strl;
char ch;
for(i=0;i<20;i++)
{ strl=strlen(dat[i]);
for(j= (1) ;j
for(k=j+1;k
if( (2) )
{
ch=dat[i][j];
dat[i][j]=dat[i][k];
dat[i][k]=ch;
}
for(j=0; (3) ;j++)
{
ch=dat[i][j];
dat[i][j]=dat[i][(strl+1)/2+j];
dat[i][(strl+1)/2+j]=ch;
}
}
}
readDat()
{ FILE *in;
int i=0;
char *p;
(4) ;
while(i<20&&fgets(dat[i],80,in)!=NULL)
{ p=strchr(dat[i],’\n’);
if(p)*p=0;
i++;
}
fclose(in);
}
writeDat()
{ FILE *out;
int i;
out=fopen(“out.dat”,”w”);
for(i=0;i<20;i++)
{ printf(“%s\n” ,dat[i]);
fprintf( (5) );
}
fclose(out);
}
void main()
{ readDat();
jsSort();
writeDat();
}
相關(guān)推薦:計(jì)算機(jī)軟考程序員備考:程序設(shè)計(jì)知識(shí)點(diǎn)匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |