2006年9月全國等級考試三級c語言上機題庫(十七)
☆題目17 (親朋字元替換題) 函式readdat()實現從檔案in.dat中讀取一篇英文文章存入到字元串數組xx中;請編制函式cha(),其函式功能是:以行為單位把字元串中的第一個字元的ascii值加第二個字元的ascii值,得到第一個親朋字元,第二個字元的ascii值加第三個字元的ascii值,得到第二個新字元,依此類推一直處理到最後第二個字元,最後一個字元的ascii值加原第一個字元的ascii值,得到最後一個新的字元,得到的新字元分別存放在原字元串對應的位置上。最後把已處理的字元串逆轉後按行重新存入字元串數組xx中,最後調用函式writedat()把結果xx輸出到檔案out9.dat中.原始數據檔案存放的格式是:每行的寬度均小於80個字元,含標點符號和空格.注意:部分源程式已給出。請勿改動主函式main()、讀數據函式readdat()和輸出數據函式writedat()的內容。 #include <stdio.h>#include <string.h>#include <conio.h> char xx[50][80] ;int maxline = 0 ; /* 文章的總行數 */ int readdat(void) ;void writedat(void) ; void cha(void){ int i,j;char ch;for(i=0;i<maxline;i++){ ch=xx[i][0];for(j=0;j<strlen(xx[i])-1;j++)xx[i][j]+=xx[i][j+1];xx[i][strlen(xx[i])-1]+=ch;strrev(xx[i]); }}void main(){clrscr() ;if(readdat()) {printf("數據檔案in.dat不能打開!\n\007") ;return ;}cha() ;writedat() ;} int readdat(void){file *fp ;int i = 0 ;char *p ; if((fp = fopen("in.dat", "r")) == null) return 1 ;while(fgets(xx[i], 80, fp) != null) {p = strchr(xx[i], '\n') ;if(p) *p = 0 ;i++ ;}maxline = i ;fclose(fp) ;return 0 ;} void writedat(void){file *fp ;int i ; clrscr() ;fp = fopen("out9.dat", "w") ;for(i = 0 ; i < maxline ; i++) {printf("%s\n", xx[i]) ;fprintf(fp, "%s\n", xx[i]) ;}fclose(fp) ;}