读书人

WERTYU有关问题

发布时间: 2012-08-30 09:55:54 作者: rapoo

WERTYU问题
问题:输入一个错位后的字符串,输出打字员本来想打出的句子。(将输入的字母在键盘上左移一位)
如输入 o s, gomr ypfsu 输出i am fine today
#include<stdio.h>
char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";
int main()
{
int i,c;
while((c=getchar())!=EOF)
{
for(i=1;s[i]&&s[i]!=c;i++);
if(s[i])putchar(s[i-1]);
else putchar(c);
}
return 0;
}
这是书上给的一段代码,我不明白这一句for(i=1;s[i]&&s[i]!=c;i++);里面判断s[i]干什么?
奇怪的是我改成for(i=1;s[i]!=c;i++);后,输入的空格便不输出了;


[解决办法]
for(i=1;s[i]&&s[i]!=c;i++);
//意思是s[i] != 0 也就是字符串木结束
[解决办法]
我这边不会,可能是你使用的字符集导致在char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";找不到空格所对应的字符了,所以死循环了。
这个只接受你s中有的可见字符输入后改写成它的前一个字符。
N久前曾用这个简单加密,那一串东西就是所谓的密匙啦
[解决办法]
判断s[i] 是因为如果 s[i]==0,及遇到 '\0' 也就是0的时候终止循环

读书人网 >C++

热点推荐