c语言密码翻译‘要详细’

题目如下:绿皮书P153输入一行电文,翻译规律如下:A--Z a--zB--Y b--y非字母字符不变。下面是我写的代码,感觉写的复杂了。现在在学校了不能自己编译,麻烦有空的时候看一下,不对的地方注释下。程序如下:#include<stdio.h>#include<string.h>void main(){int c,i,c=getchar();char ch[];printf("请输入电文:");scanf("%s",ch);S=strlen(ch); //计算输入的字符数For (i=1;i<s;i++) { C=(c>='A'&&c<='Z')||(c>='a'&&c<='z')?(26-i+1):c; Printf("%c",c); } }

#include<stdio.h>
#include<string.h>
void main()
{
int c,i,S,C,char ch[];
c=getchar(); //获得输入的字符赋值给c变量
printf("请输入电文:");
scanf("%s",ch); //键盘输入字符串保存到ch中
S=strlen(ch); //计算ch的长度保存到s中
For (i=1;i<s;i++) //循环s次

{
C=(c>='A'&&c<='Z')||(c>='a'&&c<='z')?(26-i+1):c;
//首先,(c>='A'&&c<='Z')||(c>='a'&&c<='z')为判断条件,
判断当输入的字符为a-z和A-Z之间的字母时,整个
(c>='A'&&c<='Z')||(c>='a'&&c<='z')算式值为1,输入非字母值为0.
为1,则将(26-i+1)的值赋给C,否则将c直接赋给C
Printf("%c",C); 然后以字符形式输出c 。
}
}

我没有看到你写的代码哪里有把A-Z 翻译成a-z哦 ,
是我理解题目错误?说实话,我现在还是看不明白题目所谓的翻译规律是什么规律。。
是A翻译为Z 还是说就是大写转小写。
看你的代码应该是想实现大转小,还少加一条判断,
判断如果是大写,就要减32然后输出(ascii 码)

还有好多未定义的变量,大小写也不区分,不知是输入错误,还是初学不去注意那些细节。
反正c语言必须要区分大小写的,否则你上面那段代码有严重问题。
代码至少先得自己看懂,何况写了。没必要非用那些++,--,?:那些表达式,
华而不实。是可以提高一点可怜的执行效率,但可以后续优化,首先必须得保证思路清晰。
很喜欢编程或打算走这条路的话,就不能局限于书本了~要多找代码去阅读
先在这里祝君好运
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-15
#include<stdio.h>
#include<string.h>
void main(){
int c,i; //int c,i<,>c=getchar(); 不是逗号,是分号

getchar(); //直接getchar();就可以,不需要c=getchar()

char ch[100]; //没有定义数组长度

printf("请输入电文:");
scanf("%s",ch);
int s=strlen(ch); //计算输入的字符数
for (i=0;i<s;i++) { //i从0开始循环

c=ch[i]; //从ch中取出c

if(c>='A'&&c<='Z') c='A'+(26-(c-'A')+1);
else if(c>='a'&&c<='z') c='a'+(26-(c-'a')+1);

printf("%c",c);
}
}
//注意C语言是区分大小写的,并且数组下标从0开始本回答被网友采纳
第2个回答  2012-08-13
#include<stdio.h>
#include<string.h>
void main()
{
int c,i,
c=getchar();
char ch[]; //queding ch[]dechangdu
printf("请输入电文:");
scanf("%s",ch);
S=strlen(ch); //计算输入的字符数
For (i=1;i<s;i++)
{ C=(c>='A'&&c<='Z')||(c>='a'&&c<='z')?(26-i+1):c;
Printf("%c",c);
}
}
第3个回答  2012-08-13
路过,现在没空。。,这种问题不自己跑,是没有意思的。。
第4个回答  2012-08-13
这种问题自己稍微修改一下,注意一点细节就没问题了。
相似回答