c语言中解决一行电文中将第一个字母变成第26个字母,第i个字母变成第26-i+1个字母,非字母不变。

#include<stdio.h>voidmain(){charc;inti;printf("请输入密码:\n");while((c=getchar())!='\n'){... #include <stdio.h>
void main ()
{
char c;
int i;
printf("请输入密码:\n");
while((c=getchar())!='\n')
{
for(i=1;i<=7;i++)
if(c>='a'&&c<='z')
{
c=122-i+1;
if(c>='A'&&c<='Z')
c=90-i+1;
if(c>'Z'&&c<='Z'+4||c>'z')
c=c;
}
printf("%c",c);
}
printf("\n");
}
这个我编写的程序,但是不对,请问哪里错了?
展开
 我来答
xoaxa
推荐于2016-01-12 · TA获得超过8609个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3466万
展开全部
#include <stdio.h>
#include <conio.h>

void main () {
char c;
printf("请输入密码:");
while((c = _getch()) != '\r') {
if(c >= 'a' && c <=' z')
c = (c - 'a' + 25) % 26 + 'a';
else if( c >= 'A' && c <= 'Z')
c = (c - 'A' + 25) % 26 + 'A';
printf("%c",c);
}
printf("\n");
}
追问
while((c = _getch()) != '\r')
这个可以用中文解释一下吗?
追答
#include <stdio.h>
#include <conio.h> // 包含_getch()函数
 
void main () {
    char c;
    printf("请输入密码:");
    while((c = _getch()) != '\r') { // 读入一个字符,但不回显,直到键入<Enter>结束
        if(c >= 'a' && c <=' z') // 如果是小写字母
            // c - 'a'求得顺序值,+25实施变换,但顺序值不能超过26
            c = (c - 'a' + 25) % 26 + 'a';
        else if( c >= 'A' && c <= 'Z') // 如果是大写字符
            c = (c - 'A' + 25) % 26 + 'A'; // 方法同小写字符
        printf("%c",c); // 其他字符如实显示
    }
    printf("\n");
}
蓉雪球
2014-02-20 · TA获得超过8998个赞
知道大有可为答主
回答量:2846
采纳率:79%
帮助的人:709万
展开全部
if(c >= 'a' && c <=' z')
c = (c - 'a' + 25) % 26 + 'a';
else if( c >= 'A' && c <= 'Z')
c = (c - 'A' + 25) % 26 + 'A';//你原来写的算出来都是26,所以肯定会出错。
用求余的方法保证加(减)数在1到25之间
追答
然后,while函数是判断括号内的条件,直到不符合就会跳出。这样也就实现了一次次循环的过程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式