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");
}
这个我编写的程序,但是不对,请问哪里错了? 展开
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");
}
这个我编写的程序,但是不对,请问哪里错了? 展开
2个回答
展开全部
#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");
}
展开全部
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之间
c = (c - 'a' + 25) % 26 + 'a';
else if( c >= 'A' && c <= 'Z')
c = (c - 'A' + 25) % 26 + 'A';//你原来写的算出来都是26,所以肯定会出错。
用求余的方法保证加(减)数在1到25之间
追答
然后,while函数是判断括号内的条件,直到不符合就会跳出。这样也就实现了一次次循环的过程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询