题目是:用条件编译方法,输入一行电报文字,可以任选两种输出:一为原文输出;一为将字母变成其下一字母,其他非字母字符不变。用#define命令来控制是否要译成密码。
我编好程序之后输入the输出的结果仍是the,求高手帮忙找下错误,谢谢
#include "stdio.h"
#define MAX 80
#define CHANGE1
main()
{
char str[MAX];
int i;
gets(str);
#if(CHANGE)
{for(i=0;i<MAX;i++)
{
if(str[i]!='\0')
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
str[i]=str[i]+1;
}
}
#endif
printf("\n%s\n",str);
printf("\n");
getch();
}
#define CHANGE1这个错误,应该加个空格:#define CHANGE 1;这样就ok了
重写了一个:你关键是没有写成下一个字母如何实现!
#define CHANGE 1
main()
{char str[80],*c;int i=0;
gets(str);c=str;
while(*c!=’\0’)
{
#if CHANGE
if(*c==90||*c==122) *c=*c-25;
else if(*c>=65&&*c<90||*c>=97&&*c<122) *c=*c+1;
#endif
c++;
}
puts(str);
}
#include "stdio.h"
#define MAX 80
#define CHANGE 1//CHANGE和1之间加空格
main()
{
char str[MAX];
int i;
gets(str);
#if(CHANGE)
{for(i=0;i<MAX;i++)
{
if(str[i]!='\0')
if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')
str[i]=str[i]+1;
}
}
#endif
printf("\n%s\n",str);
printf("\n");
getch();
}