76.函數(shù)RData()實現(xiàn)從文件IN.dat中讀取20行數(shù)據(jù)存放到字符串數(shù)組str中(每行字符串長度均小于80)。請編寫函數(shù)stringSort(),其功能是:以行為單位對字符串按給定的條件進行排序,排序后的結果仍按行重新存入字符串數(shù)組str中。最后調用函數(shù)WData(),把結果str輸出到OUT.dat文件中。
條件:從字符串中間一分為二,左邊部分按字符的ASCII值降序排序,排序后左邊部分與右邊部分進行交換。如果原字符串長度為奇數(shù),則最中間的字符不參加處理,字符仍放在原位置上。
例如,位置 0 1 2 3 4 5 6 7 8
原字符串 a b c d h g f e
1 2 3 4 9 8 7 6 5
處理后字符串 h g f e d c b a
位置 8 7 6 5 9 4 3 2 1
【答案】
void stringSort()
{ int i, j, k, strl, half;
char ch;
for (i=0; i<20; i++)
{ strl = strlen(str[i]);
half = strl/2;
for (j=0; j for (k=j+1; k if (str[i][j] < str[i][k]) { ch = str[i][j]; str[i][j] = str[i][k]; str[i][k] = ch; } for (j=half-1, k=strl-1; j>=0; j--, k--) { ch = str[i][j]; str[i][j] = str[i][k]; str[i][k] = ch; } } } 77.函數(shù)RData()的功能是實現(xiàn)從文件IN.dat中讀取一篇英文文章存入到字符串數(shù)組original中。請編寫函數(shù)CharAdd(),其功能是:以行為單位把字符串中的第1個字符的ASCII值加第2個字符的ASCII值,得到第1個新字符,第2個字符的ASCII值加第3個字符的ASCII值,得到第2個新字符,以此類推,一直處理到倒數(shù)第2個字符,最后1個字符的ASCII值加原第1個字符的ASCII值,得到最后1個新的字符。得到的新字符分別存放在原字符串對應的位置上,最后把已處理的字符串逆轉后按行重新存入字符串數(shù)組original中。最后調用函數(shù)WData(),把結果original輸出到OUT.dat文件中。 原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于 80個字符(含標點符號和空格)。 【答案】 void CharAdd(void) { int i, j, k, str; char ch; for (i=0; i { str = strlen(original[i]); ch = original[i][0]; for (j=0; j original[i][j] += original[i][j+1]; original[i][str-1] += ch; for (j=0, k=str-1; j { ch = original[i][j]; original[i][j] = original[i][k]; original[i][k] = ch; } } } 78.編寫函數(shù)FibValue(),其功能是:求Fibonacci數(shù)列中大于t的最小的一個數(shù),結果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為: F(0)=0,F(xiàn)(1)=1 F(n)=F(n-1)+F(n-2) 最后調用函數(shù)WData()從IN.dat中讀取50個數(shù)據(jù)t,分別得出結果,且把結果輸出到OUT.dat文件中。 例如,當t=1000時,函數(shù)值為1597。 【答案】 int FibValue(int t) { int f1 = 0, f2 = 1, fn; fn = f1+f2; while (fn <= t) { f1 = f2; f2 = fn; fn = f1+f2; } return fn; }
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |