问答题
下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()从in.dat文件中读取50组数据,分别得出结果,且把结果输出到out.dat文件中。
例如,S字符串中原有的内容为Mn.123Zxy,调用该函数后,结果为No.123Ayz。
注意:部分程序已经给出。
请勿改动主函数main()和输出数据函数readwriteDAT()的内容。
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<ctype.h>
#define N 81
void readwriteDAT();
void chg(char *s)
main()
char a[N];
printf("Enter a String:");
gets(a);
printf("The original string is:");
puts(a);
chg(a);
printf("The string after modified:");
puts(a);
readwriteDAT();
void readwriteDAT()
int i;
char a[N];
FILE *rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0; i<50;i++)
fscanf(rf,"%s",a);
chg(a);
fprintf(wf,"%s/n",a);
)
fclose(rf);
fclose(wf);
【正确答案】void chg(char*s)
while(*s) /*若s所指字符不为0(即字符串结束标志)则循环*/
/*若s所指字符是字母'z'或'z',则让它A减25(即改为'a'或'A')*/
if(*s=='z'||*s=='Z')
*s=25;
/*否则如果s所指字符是其他字母,则让它自增1(即改为其下一个字符)*/
else if(isalpha(*s))
*s+=1;
s++; /*让指针指向下一个字符*/
}
}
【答案解析】