问题:输入一个错位后的字符串,输出打字员本来想打出的句子。(将输入的字母在键盘上左移一位)
问题描述:
#include
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]);
}
}
return 0;
}
问题是
如果我输入一个Q,这里的if循环中的i为什么从1直接跳到12的位置
为什么不是i=1,s[1]=2,输出s[0]=1,然后再i+1么。。不懂了
答
#include <stdio.h>
#include <stdlib.h>
char *s = "1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
int main()
{
int i, c;
while ((c = getchar()) != EOF)
{
fflush(stdin);//清除缓冲区
for (i = 1; s[i] && s[i] != c; i++)//删掉分号
{
if (s[i])
putchar(s[i - 1]);
}
}
return 0;
}
答
for (i = 1; s[i] && s[i] != c; i++)//删掉分号
答
结合你的题修改:
#include <stdio.h>
#include <stdlib.h>
char *s = "1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";//修改用转义字符
int main()
{
int i, c;
while ((c = getchar()) != EOF)//ctrl+z退出
{
fflush(stdin);//清除缓冲区
for (i = 0; s[i] && s[i] != c; i++);
putchar(s[i-1]);
putchar('\n');
}
return 0;
}
答
完善:
#include <stdio.h>
#include <stdlib.h>
char *s = "1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";//修改用转义字符
int main()
{
int i, c;
while ((c = getchar()) != EOF)//ctrl+z退出
{
for (i = 0; s[i] && s[i] != c; i++);
if(s[i] && i>0) putchar(s[i-1]);
else putchar('\n');
}
return 0;
}
答
for 循环语法:
for(表达式1;表达式2;表达式3)
语句
执行过程:
1、执行表达式1
2、判断表达式2的结果,如果为假退出循环体,如果为真执行循环体
3、循环体可以是一条语句或复合语句,或空语句
4、执行表达式3
5、返回到第2步执行。