读取英文文章问题
?题目8(字符替换题)
函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS1.DAT中。
替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。(注意中间变量用无符号整型),部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include
#include
#include
#include
unsigned char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void encryptChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i试题程序:
#include
#include
#include
#include
unsigned char xx[50][80] ; int maxline = 0 ;/* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void encryptChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i130)
continue; /*如果计算后的值小于等于32或大于130,则该字符不变*/
else
xx[i][j]=ch; /*否则将所对应的字符进行替代*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件ENG4.IN不能打开~\n\007") ;
return ;
}
encryptChar() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp;
int i = 0 ;
unsigned char *p ;
if((fp = fopen("ENG4.IN", "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 ;
fp = fopen("PS4.DAT", "w") ;
for(i = 0 ; i < maxline ; i++)
{
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
***********************************************************************
??题目5.(替换字符题)
函数ReadDat()实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT5.DAT中。
例::Adb.Bcdza
abck.LLhj
结果:Aec.Bdeab
bcdl.LLik
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include
#include
#include
char xx[50][80] ;
int maxline = 0 ;/* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void ConvertCharA(void)
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
for(i=0;i='a' && xx[i][j]<='z') /*如果是小写字母*/
if(xx[i][j]=='z')
xx[i][j]='a'; /*如果是小写字母z,则改写成字母a*/
else
xx[i][j]+=1; /*其他的小写字母则改写为该字母的下一个字母*/
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件IN5.DAT不能打开!\n\007") ;
return ;
}
ConvertCharA() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i =0 ;
char *p ;
if((fp = fopen("IN5.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 ;
system("CLS");
fp = fopen("OUT5.DAT", "w") ;
for(i = 0 ; i < maxline ; i++)
{
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
**********************************************************************
?7.函数ReadDat( )的功能是实现从文件IN7.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SortCharD( ),该函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT7.DAT中。
例如,原文:dAe,BfC
CCbbAA
结果:fedCBA,
bbCCAA
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序已给出。
请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。 试题程序:
#include
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void SortCharD()
{
int i,j,k; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char temp; /*定义数据交换时的暂存变量*/
for (i=0;i
#include
#include
#include
unsigned char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void encryptChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i='0' && ch<='9') )
continue; /*如果计算后的值小于等于32或f(p)对应的字符是数字0至9,则该字符不变*/
else
xx[i][j]=ch; /*否则按给定的替代关系进行替代*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{ printf("数据文件ENG51.IN不能打开~\n\007") ;
return ;
}
encryptChar() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp;
int i=0 ;
unsigned char *p ;
if((fp = fopen("ENG51.IN", "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 ;
fp = fopen("PS51.DAT", "w") ;
for(i = 0 ; i < maxline ; i++)
{
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
**********************************************************************
?52读函数ReadDat()实现从文件ENG52.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用写函数WriteDat()把结果xx输出到文件PS52.DAT中。
替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符
的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是小写字母,则该字符不
变,否则将f(p)所对应的字符进行替代。
注意:部分源程序已给出。
原始数据文件存放的格式是:每行的宽度均小于80个字符。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序:
#include
#include
#include
#include
unsigned char xx[50][80] ; int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void encryptChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i='a' && ch<='z') || ch<=32)
/*如果计算后的值小于等于32或对应的字符是小写字母*/
continue;
else
xx[i][j]=ch; /*否则用新字符来替代这个字符*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件ENG52.IN不能打开~\n\007") ;
return ;
}
encryptChar() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp;
int i = 0 ;
unsigned char *p ;
if((fp = fopen("ENG52.IN", "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 ;
fp = fopen("PS52.DAT", "w") ;
for (i = 0 ; i < maxline ; i++)
{
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
**********************************************************************
?53函数ReadDat( )的功能是实现从文件ENG53.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar( ),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat( )把结果xx输出到文件PS53.DAT中。
替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)的值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
注意:部分源程序已给出。
原始数据文件的存放格式是:每行的宽度均小于80个字符。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序:
#include
#include
#include
#include
unsigned char xx[50][80]; int maxline=0;
int ReadDat(void);
void WriteDat(void);
void encryChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i= 'A'&& xx[i][j]<='Z')|| ch<=32)
/*如果原字符是大写字母或计算后的值小于等于32*/
continue; /*则此字符不变,取下一个字符*/
else
xx[i][j]=ch; /*如果不满足条件,则用新字符替代原字符*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件ENG53.IN不能打开!\n\007");
return;
}
encryChar();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen("ENG53.IN","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()
{
FILE *fp;
int i;
fp= fopen("ps53.dat","w");
for(i=0;i
#include
#include
#include
unsigned char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void encryChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i
#include
#include
#include
unsigned char xx[50][80]; int maxline=0;
int ReadDat(void);
void WriteDat(void);
void encryChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i='A' && ch<='Z'))
/*如果计算的值小于等于32或对应的字符是大写字母*/
continue; /*则不作改变*/
else
xx[i][j]=ch; /*否则用新字符取代原有字符*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件ENG55.IN不能打开!\n\007");
return;
}
encryChar();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen("ENG55.IN","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()
{
FILE *fp;
int i;
fp= fopen("ps55.dat","w");
for(i=0;i
#include
#include
#include
unsigned char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void encryChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i='a' && xx[i][j]<='z') || ch<=32)
/*如果原字符是小写字母或计算后的值小于等于32*/
continue; /*则不做改变,指向下一个字符*/
else
xx[i][j]=ch; /*否则用新字符取代原有字符*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件ENG56.IN不能打开!\n\007");
return;
}
encryChar();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen("ENG56.IN","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()
{
FILE *fp;
int i;
fp= fopen("ps56.dat","w");
for(i=0;i
#include
#include
#include
unsigned char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void encryChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i=0 && xx[i][j]<=9) || ch<=32)
/*如果原字符是数字字符0至9或计算后的值小于等于32*/
continue; /*则不做改变,指向下一个字符*/
else
xx[i][j]=ch; /*否则用新字符取代原有字符*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件ENG57.IN不能打开!\n\007");
return;
}
encryChar();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen("ENG57.IN","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()
{
FILE *fp;
int i;
fp= fopen("ps57.dat","w");
for(i=0;i
#include
#include
#include
unsigned char xx[50][80]; int maxline=0;
int ReadDat(void);
void WriteDat(void);
void encryChar()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch; /*存储当前取得的字符*/
for(i=0;i
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void CovertCharD()
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
for(i=0;i='a'&& xx[i][j]<='z') /*如果是小写字符,只对小写字符进行处理*/
{
if(xx[i][j]=='a')
xx[i][j]='z'; /*如果是小写字母a,就改成字母z*/
else
xx[i][j]-=1; /*其余的改成该字母的上一个字母*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件IN59.DAT不能打开\n\007");
return;
}
CovertCharD();
WriteDat();
}
int ReadDat()
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN59.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;
system("CLS");
fp=fopen("OUT59.DAT","w");
for(i=0;i
#include
#include
char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrCharJR(void)
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
for(i=0;i>4; /*字符的ASCII值右移4位再加上原字符的ASCII值,得
到新字符*/
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件IN62.DAT不能打开!\n\007") ;
return ;
}
StrCharJR() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp;
int i= 0;
char *p ;
if ((fp = fopen("IN62.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 ;
system("CLS");
fp = fopen("OUT62.DAT", "w") ;
for(i = 0 ; i < maxline ; i++)
{
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
**********************************************************************
?63函数ReadDat( )的功能是实现从文件IN63.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrCharJL( ),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到的新字符仍存入到原字符串对应的位置。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT63.DAT中。
注意:部分源程序已给出。
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。 试题程序:
#include
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void StrCharJL(void)
{
int i,j; /*定义循环控制变量*/
int str;
char ch;
for(i=0;i100)
continue; /*如果左移4位后字符的ASCII值小于等于32或大于100,则
原字符保持不变*/
else
xx[i][j]+=ch<<4; /*否则就把左移后的字符ASCII值加上原字符的ASCII*/
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件IN63.DAT不能打开\n\007");
return;
}
StrCharJL();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN63.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;
system("CLS");
fp=fopen("OUT63.DAT","w");
for(i=0;i
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat();
void WriteDat();
void CharConvA(void)
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串长度*/
char ch; /*暂存最后一个字符*/
for(i=0;i0;j--) /*从最后一个字符开始,直到第二个字符*/
xx[i][j]=(xx[i][j]>>4)+xx[i][j-1];
/*当前字符ASCII值右移4位加前一个字符的ASCII值,得到
新的当前字符*/
xx[i][0]+=ch; /*第一个字符的ASCII值加最后一个字符的ASCII值,得到第一
个新的字符*/
}
}
void main()
{
system("CLS");
if (ReadDat())
{
printf("数据文件IN64.DAT不能打开!\n\007");
return;
}
CharConvA( );
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN64.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()
{
FILE *fp;
int i;
system("CLS");
fp=fopen("OUT64.DAT","w");
for(i=0;i
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat();
void WriteDat();
void ChA(void)
{
int i,j,k; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char ch,temp; /*定义字符暂存变量*/
for(i=0;i
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void StrOR(void)
{
int i,j,k; /*定义循环控制变量*/
int index,str; /*定义变量*/
char temp; /*暂存变量*/
for(i=0;i记录 下最后一个o所在的位置*/
}
for(j=str-1;j>=index;j--) /*最后一个o右侧的所有字符都移到已处理字符串的左边
*/
{
temp=xx[i][str-1];
for(k=str-1;k>0;k--)
xx[i][k]=xx[i][k-1];
xx[i][0]=temp;
}
}
}
void main()
{
system("CLS");
if(ReadDat())
{
printf("数据文件IN66.DAT不能打开!\n\007");
return;
}
StrOR();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN66.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;
system("CLS");
fp=fopen("OUT66.DAT","w");
for (i=0;i
#include
#include
#include
#include
char xx[50][80] ;
int maxline = 0 ;/* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void StrOL(void)
{
int i,j,k; /*定义数组下标变量*/
char t[80],t1[80]; /*定义数组暂存取得的单词*/
for(i=0;i=0) /*若以j为下标的字符不是字母并且还在数组xx之内*/
k=--j;
while(isalpha(xx[i][j])&&j>=0) /*若以j为下标的字符是字母并且还在数组xx之内*/
j--; /*当退出这个循环时,xx[i][j+1]和xx[i][k]分别是同一个单词的第一个和最后一个字母*/
memcpy(t1,&xx[i][j+1],k-j); /*将该单词保存到字符数组t1*/
t1[k-j]='\0'; /*为t1中的单词添加字符串结束标志*/
strcat(t,t1); /*将单词保存到数组t中*/
strcat(t," "); /*单词之间用空格分隔*/
if(j<0) /*如果以j为下标的字符不在数组xx中*/
break; /*则退出外层while循环*/
}
strcpy(xx[i],t); /*按行将处理完了字符串重新保存到数组xx中*/
}
}
void main()
{
system("CLS");
if (ReadDat ())
{
printf("数据文件 IN67.DAT不能打开~\n\007") ;
return ;
}
StrOL() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p;
if((fp = fopen("IN67.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 ;
system("CLS");
fp = fopen("OUT67.DAT", "w") ;
for(i = 0 ; i < maxline ; i++)
{
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
**************************************************************
?73.函数ReadDat( )的功能是实现从文件IN73.DAT中读取一篇英文文章存入到字符串数组
xx中。请编制函数SortCharA( ),该函数的功能是:以行为单位对字符按从小到大的顺序进
行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数WriteDat( )把结果
xx输出到文件OUT73.DAT中。
例如,原文:dAe,BfC
CCbbAA
结果:ABCdef
AACCbb
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序已给出。
请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。 试题程序:
#include
#include
#include
char xx[50][80];
int maxline=0;
int ReadDat(void);
void WriteDat(void);
void SortCharA()
{
int i,j,k; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
char temp; /*数据交换时的暂存变量*/
for (i=0;ixx[i][k])
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
void main()
{
system("CLS");
if (ReadDat())
{
printf("数据文件IN73.DAT不能打开!\n\007");
return;
}
SortCharA();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN73.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()
{
FILE *fp;
int i;
system("CLS");
fp=fopen("OUT73.DAT","w");
for(i=0;i10