注:在ReadDat()函數(shù)中由于fgets()函數(shù)讀入數(shù)據(jù)時沒有讀入字符串結(jié)束符'\0',因
而用while()循環(huán)在xx數(shù)組每一行未尾將換行符'\n'替換成結(jié)束符'\0'。
編寫的函數(shù)如下:該函數(shù)的基本算法是——讓字符指針pf指向每一行的開頭然后逐一往
后移動,在移動過程中按要求進行轉(zhuǎn)換。*pf%2==0用于判斷是否為偶數(shù)。if()條件語
句用于控制不替代字符。
解法1:
void encryptChar()
{
int i;
char *pf;
for(i=0;i
{pf=xx; /*每行字符個數(shù)*/
while(*pf!=0)
{if(*pf%2==0||*pf*11%256<32)
{pf++;continue;}
*pf=*pf*11%256;
pf++;
}
}
}
解法2:
void encryptChar()
{
int i,j,t;
for(i=0;i
{
for(j=0;j
{
t=xx[j]*11%256;
if(t<=32 || xx[j]%2==0) continue;
xx[j]=t;
}
}
}
二、字符串左右排序和比較
函數(shù)ReadDat()實現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串?dāng)?shù)組xx中(第行字符串長度均小于80)。請編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對字符串按給定的條件進行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件out.dat中。
條件:從字符串中間一分為二,左邊部分按字符的ASCII值升序排序,排序后左邊部分與右邊部分進行交換。如果原字符串長度為奇數(shù),則最中間的字符不參加處理,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8
源字符串 d c b a h g f e
4 3 2 1 9 8 7 6 5
則處理后字符串 h g f e a b c d
8 7 6 5 9 1 2 3 4
部分源程序已給出。
請勿改動主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。
#include
#include
#include
char xx[20][80];
void jsSort()
{
}
void main()
{
readDat();
jsSort();
writeDat();
}
readDat()
{
FILE *in;
int i=0;
char *p;
in=fopen("in.dat","r");
while(i<20&&fgets(xx,80,in)!=NULL){
p=strchr(xx,'\n');
if(p)*p=0;
i++;
}
fclose(in);
}
writeDat()
{
FILE *out();
int i;
clrscr();
out=fopen("out.dat","w");
for(i=0;i<20;i++){
printf(\"%s\n",xx);
fprintf(out,"%s\n",xx);
}
fclose(out);
}
相關(guān)推薦:2011年計算機等考三級網(wǎng)絡(luò)技術(shù)復(fù)習(xí)筆記匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |