原程序如下: #include
int maxline = 0 ; /* 文章的总行数 */ int ReadDat(void) ; void WriteDat(void) ; void SortCharD(void) {int I,j,k,strl; char ch;
for(I=0;I {ch=xx[I][j]; xx[I][j]=xx[I][k]; xx[I][k]=ch;} } } void main() { clrscr() ; if(ReadDat()) { printf(\数据文件IN.DAT不能打开!\\n\\007\ return ; } SortCharD() ; WriteDat() ; system(\ } int ReadDat(void) { FILE *fp ; int i = 0 ; char *p ; if((fp = fopen(\ 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(\ for(i = 0 ; i < maxline ; i++) { printf(\ fprintf(fp, \ } fclose(fp) ; } 10:请编制函数ConvertCharA(), 其函数的功能是: 以行为单位把字符串中的所有小写字母 改写成该字母的下一个字母, 如果是字母z, 则改写成字母a,大写字母和其它字符保持不变。 把已处理的字符串仍按行重新存入字符串数组xx中。。最后main()函数调用函数WriteDat() 把结果xx输出到文件OUT3.DAT中。 例: 原文: Adb.Bcdza abck.LLhj 结果: Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格。 注意: 部分源程序存放在PROG1.C中。 请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 ------------类型:字符串(单词)的倒置和删除。 void ConvertCharA(void) /*标准答案*/ {int I,j,str; for(I=0;I if(xx[I][j]=='z')xx[I][j]='a'; else if(xx[I][j]>='a'&&xx[I][j]<='y') xx[I][j]+=1; } } 原程序如下: #include int maxline = 0 ; /* 文章的总行数 */ int ReadDat(void) ; void WriteDat(void) ; void ConvertCharA(void) { } void main() { clrscr() ; if(ReadDat()) { printf(\数据文件IN.DAT不能打开!\\n\\007\ return ; } ConvertCharA(); WriteDat() ; system(\ } int ReadDat(void) { FILE *fp ; int i = 0 ; char *p ; if((fp = fopen(\ 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(\ for(i = 0 ; i < maxline ; i++) { printf(\ fprintf(fp, \ } fclose(fp) ; } 11:下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数 chg(char *s)实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为No.123Ayz。 注意:部分源程序已给出。 请勿改动主函数main()和输出数据函数readwriteDat()的内容。 void chg(char*s) /*标准答案*/ {while(*s) if(*s=='z'||*s=='Z') {*s-=25;s++;} else if(*s>='a'&&*s<='y') {*s+=1;s++;} else if(*s>='A'&&*s<='Y') {*s+=1;s++;} else s++; } 或者: void chg(char *s) { int i,k; k=strlen(s); for(i=0;i { if(s[i]=='z'||s[i]=='Z') s[i]-=25; else if(isalpha(s[i])) s[i]++; } } 原程序如下: #include void readwriteDAT(); void chg(char*s) { } main( ) { char a[N]; clrscr(); printf(\ printf(\ chg(a); printf(\ puts (a); readwriteDAT() ; system(\ } void readwriteDAT() { int i ; char a[N] ; FILE *rf, *wf ; rf = fopen(\ wf = fopen(\ for(i = 0 ; i < 10 ; i++) { fscanf(rf, \ chg(a) ; fprintf(wf, \ } fclose(rf) ; fclose(wf) ; } 12:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其 中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell 中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列, 若产