C语言问题 wertyu
解决时间 2021-02-03 04:35
- 提问者网友:温旧梦泪无声
- 2021-02-02 19:15
问题:输入一个错位后的字符串,输出打字员本来想打出的句子。(将输入的字母在键盘上左移一位)
如输入 o s, gomr ypfsu 输出i am fine today
#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;
}
第二行定义的是什么?还有下面是什么意思?解释。
最佳答案
- 五星知识达人网友:鸽屿
- 2021-02-02 19:31
char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";
//定义的一个字符型指针,只想一对字符,当然现在还看不懂,因为要将输入的字母在键盘上左移一位才能看到正确结果
#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++);//判断s[i]&&s[i]!=c是否相等,如果相等结束,不然i就一直自加
if(s[i])putchar(s[i-1]);//如果if(s[i])为真就输出s[i-1]
else putchar(c);//否则就打印接收的c字符
}
return 0;//返回给系统一个参数
}
-物联网校企联盟技术部
全部回答
- 1楼网友:从此江山别
- 2021-02-02 21:52
第二行定义了一个字符数组指针
下面的意思无法就是数组向右偏移一个元素而已
- 2楼网友:往事隔山水
- 2021-02-02 21:33
for(i=1;s[i]&&s[i]!=c;i++);
这个for循环是在s中查找给定字符c的位置i。
s[i]!=c是判断给定字符c是否存在,s[i]是判断字符串s是否结束,相当于s[i]!='\0',当s[i]为字符串结束标志时,s[i]即为false。
if(s[i])putchar(s[i-1]);
else putchar(c);
当s[i]不为字符串结束标志时(即c在s中)输出s[i-1],否则(即c不在s中)输出c。
说明:c在s中的说法不太严格,如“1”在s中,但是循环是从s[1]开始检测,所以“1”也相当于不在s中。
- 3楼网友:洒脱疯子
- 2021-02-02 20:53
char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";
这行定义的就是键盘上从数字键1开始的符号,看看你的键盘与这个字符串是对应的;
循环从第2个字符开始找,看是否与你输入的字符相等,一直找到上面定义的字符串结束或字符相等,这个条件就可以写成(s[i]!=0)&&(s[i]!=c)也可以写成(s[i]&&s[i]!=c);
下面判断当前找到的若不是字符串结尾则输出左边字符,否则(上边字符串中不包含的字符)输出字符c。
我要举报
大家都在看
推荐资讯