2006年9月全國等級考試三級c語言上機題庫(十六)
★題目16(無憂id 23 字符替換題) 函數(shù)readdat()實現(xiàn)從文件in.dat中讀取一篇英文文章存入到字符串數(shù)組中,請編制函數(shù)strcharjr(),其函數(shù)的功能是:以行為單位把字符串中所有字符的ascii值右移4位,然后把右移后的字符ascii值再加上原字符的ascii值,得到新的字符仍存入原字符串對應的位置上。最后把已處理的字符串仍按行重新存入字符串數(shù)組中,最后調(diào)用函數(shù)writedat()把結(jié)果輸出到文件out8.dat中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。部分源程序存在文件prog1.c中。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)readdat()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。#include <stdio.h>#include <string.h>#include <conio.h> char [50][80];int maxline=0;/*文章的總行數(shù)*/ int readdat(void);void writedat(void); void strcharjr(){int i,j;for(i=0;i<maxline;i++)for(j=0;j<strlen([i]);j++)[i][j]+=([i][j]>>4);} void main(){clrscr();if(readdat()){printf("數(shù)據(jù)文件in.dat不能打開!\n\007");return;}strcharjr();writedat();} int readdat(void){file *fp;int i=0;char *p; if((fp=fopen("in.dat","r"))==null) return 1;while(fgets([i],80,fp)!=null){p=strchr([i],'\n');if(p)*p=0;i++;}maxline=i;fclose(fp);return 0;} void writedat(void){file *fp;int i;clrscr();fp=fopen("out8.dat","w");for(i=0;i<maxline;i++){printf("%s\n",[i]);fprintf(fp,"%s\n",[i]);}fclose(fp);}