鱼C论坛

 找回密码
 立即注册
查看: 1621|回复: 6

[已解决]求助各位大神们课后作业s1e13while语句中遇到的问题

[复制链接]
发表于 2018-8-11 23:45:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
要求将一段句子中大小写转换,小弟写的代码如下,编译器没有报错,可是运行无论输入什么都输出“请输入正确的英文字母!!!”,找了很久都不知道错在哪,求解。。
#include <stdio.h>
int main()
{
        int a;
        printf("请输入需要转换的句子(EN):");
        while((a=getchar())!='\n');
        {
                if(a>=65&&a<=90)
                {
                        a=a+32;
                }
                else if(a>=97&&a<=122)
                {
                        a=a-32;
                }
                else
                {
                        printf("请输入正确的英文字母!!!");
                }
                putchar(a);
        }
        putchar('\n');
        return 0;
}
最佳答案
2018-8-12 08:30:22
while语句本身使用复合语句作为循环体,但是自身同时也是一条语句。语句从while语句开始执行,直到遇到第一个分号结束,如果存在复合语句那么以复合语句右括号结束。你的代码第6句的while循环是以分号结束的,那么此时,while在循环读取输入字符时都会自动读取到最后一位,然后结束循环,你后面花括号里的代码就相当于是顺序结构的一部分,不属于while循环了。
putchar('\n');的作用是输出一个换行符,相当于printf('\n');
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-11 23:51:19 | 显示全部楼层
对了 还有就是有大神知道倒数第二行的putchar('\n');起什么作用吗,才学习putchar函数,不是很懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 00:05:46 | 显示全部楼层
1.第六行多了分号
2.就是输出回车。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 08:30:22 | 显示全部楼层    本楼为最佳答案   
while语句本身使用复合语句作为循环体,但是自身同时也是一条语句。语句从while语句开始执行,直到遇到第一个分号结束,如果存在复合语句那么以复合语句右括号结束。你的代码第6句的while循环是以分号结束的,那么此时,while在循环读取输入字符时都会自动读取到最后一位,然后结束循环,你后面花括号里的代码就相当于是顺序结构的一部分,不属于while循环了。
putchar('\n');的作用是输出一个换行符,相当于printf('\n');
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-12 12:48:13 | 显示全部楼层
无符号整形 发表于 2018-8-12 00:05
1.第六行多了分号
2.就是输出回车。

感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-12 12:49:17 | 显示全部楼层
会上树的猪 发表于 2018-8-12 08:30
while语句本身使用复合语句作为循环体,但是自身同时也是一条语句。语句从while语句开始执行,直到遇到第一 ...

感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-13 11:43:53 | 显示全部楼层
447908543 发表于 2018-8-11 23:51
对了 还有就是有大神知道倒数第二行的putchar('\n');起什么作用吗,才学习p ...

'\n'是换行,就是回车,当你输入完字符串的时候,不是要按一下回车嘛!回车后while循环结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 04:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表