30题 下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char *s)实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。
例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为No.123Ayz。
部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。 #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];
clrscr();
printf(" Enter a string:" );gets(a);
printf(" The original string is;");puts(a);
chg(a);
printf)(" The string after modified:" );
puts(a);
readwriteDAT();
}

viod readwriteDAT()
{
int i;
char a[N];
FILE *rf,*wf;


rf=fopen(" in.dat" ,"r" );
wf=fopen(" out.dat" ," w" );
for(i=0;i<10;i++){
fscanf(rf," %s" ,a);
chg(a);
fprintf(wf," %s\n" ,a);
}
fclose(rf);
fclose(wf);
}


注:该题的思路比较明显,先判断是否是'z'或'Z',若是则转成相应的'a'或'A
',否则再判断是不是字母(已除'z'或'Z')。
void chg(char *s)
{
int i,j,k;
k=strlen(s);
for(i=0;i<k;i++)
{if(s[i]=='z'||s[i]=='Z' )
      s[i]-=25;
  else  if(isalpha(s[i]))
        s[i]+=1;
}
}

返回南开百题目录

www.163164.cn 联系QQ:3149886