问题描述
- 输入一个错位敲出的字符串,输出打字员本来想打出的句子
- #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]);
else putchar(c);
}
return 0;
}for循环里的s[i] && s[i] != c该如何理解呢?
解决方案
另外你的换行、缩进以及while循环中把判断和赋值写在一起,这些都要注意。
解决方案二:
输入一个字符串,打印出其中所有的数字
解决方案三:
s[i] && s[i] != c其实是s[i] != '' && s[i] != c这种程序写法不值得你学习模仿。
解决方案四:
在C里,''表示字符串结束
这里用while循环更好
推荐这么写
原写法
for(i = 1; s[i] && s[i] != c; i ++);
应该写
i = 1;while (s[i] != ''){ if (s[i] == c) break; i++;}
写程序绝对不是卖弄技巧和越短越好。
解决方案五:
for(i=1;s[i]!='';i++){ if(s[i]==c) break; }
这个程序就是每次输入一字符,然后在指定的字符串内找到这个字符的位置,然后输出这个这个字符的前面的 字符
所以相输出123456789 QWERTYUIOP[]ASDFGHJKL ZXCVBNM
可以在键盘先后输入:
234567890- 回车
WERTYUIOP[ -回车
SDFGHJKL;回车
XCVBNM回车
解决方案六:
for(i=1;s[i]!='';i++){ if(s[i]==c) break; }
这个程序就是每次输入一字符,然后在指定的字符串内找到这个字符的位置,然后输出这个这个字符的前面的 字符
所以相输出123456789 QWERTYUIOP[]ASDFGHJKL ZXCVBNM
可以在键盘先后输入:
234567890- 回车
WERTYUIOP[ -回车
SDFGHJKL;回车
XCVBNM回车
时间: 2024-12-01 23:03:44