急求一道c语言编程题!!!

用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如’a’变成’b’……….’z’变成’a’。其他字符不变)。用#define命令来控制是否要译成密码。例如:#define change 1 ,则输出密码。若#define change 0,则不译成密码,按原码输出。
各位给的答案编译后有错误呀,哪位好心人帮帮忙呀,谢谢

实在不好意思,写的太匆忙,考虑不仔细,刚修改了,程序中对大写小写字母都可以按你给的要求进行转换了:)
#include<stdio.h>
#include<stdlib.h>
#define change 0
#define N 50
void main(){
char s[N];
int i=0;
printf("输入电报文\n");
scanf("%s",&s);
if(change)
printf("输出原码:%s\n",s);
else{
printf("输出密码:");
while(s[i]!='\0'){
if(s[i]>='a'&&s[i]<'z'||s[i]>='A'&&s[i]<'Z')
printf("%c",s[i]+1);
else if(s[i]=='z')
printf("%c",'a');
else if(s[i]=='Z')
printf("%c",'A');
else printf("%c",s[i]);
i++;
}
printf("\n");
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-21
注意: 楼上的程序遇到字符 z 会出错哟

准确的说是除了a-x这几个字符能蒙对外,其他
的字符都会错,本人程序不但ansi 字符可以正
确显示,而且还能完美支持中文字符,实乃一个
钟头才出一份的稀有精品

#define change 1

mm(char* s){

if (change){
register char c;

puts(" 密码密文:\n" );
for (;c=*s ;s++ )
{
if (
((c<'z')&&(c>='a'))
||
((c<'Z')&&(c>='A'))
)

{
putchar(c+1);

}else{

if(c=='z'){
putchar('a');

}else{

if(c=='Z'){
putchar('A');

}else{
putchar(c);
}
}
}

}

return change;
}else{

printf(" 密码原文\n%s\n",s );

return change;

}

}

int main (int an,char** as )
{

if (an>1)
{
mm(as[1]);

}

}

使用方法:

程序名 密码

按回车

得结果
第2个回答  2008-06-21
#include<stdio.h>
main()
{
char a[100];
int i,n;
gets(a);
n=strlen(a)-1;
for(i=0;i<n;i++)
if(a[i]>='a'&&a[i]<='z')
{a[i]+=1;
printf("%c",a[i]);}
else
printf("%c",a[i]);
getch();
}
第3个回答  2008-06-21
上面的回答好贱!

那是广告! 真贱
相似回答