2006年9月全国等级考试三级c语言上机题库(十七)
文章作者 100test 发表时间 2007:03:10 19:13:00
来源 100Test.Com百考试题网
☆题目17 (亲朋字符替换题)
函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中.请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT9.DAT中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
#include
#include
#include
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
{ ch=xx[i][0].
for(j=0.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) .
}