黑马程序员技术交流社区
标题: iOS C语言基础第5天的作业问题(循环) [打印本页]
作者: Chen_Mx 时间: 2016-1-8 16:21
标题: iOS C语言基础第5天的作业问题(循环)
14. 老师问学生,这道题你会做了吗?
如果学生答"会了(y)",则可以放学.
如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......直到学生会为止,才可以放学.
直到学生会或老师给他讲了10遍还不会,都要放学
我也的代码是这样的:
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- char ch;
- for (int i=1; i<=10; i++) {
- printf("今天讲的会了吗?(会了输入y,不会输入n)\n");
- scanf("%c",&ch);
- if (ch=='y') {
- printf("可以放学了\n");
- break;
- }else printf("再讲一遍,这是第%d遍\n",i);
- }
- return 0;
- }
复制代码
但是输入n 的时候(先不考虑输入的不是Y 和N)
下边输入的运行结果 是这样的。
今天讲的会了吗?(会了输入y,不会输入n)
n
再讲一遍,这是第1遍
今天讲的会了吗?(会了输入y,不会输入n)
再讲一遍,这是第2遍
今天讲的会了吗?(会了输入y,不会输入n)
我只输入了1次N,为什么第2遍没有让输入,直接就路过了。
(我以前看C语言书的时候记得有个清理输入缓冲区,不知道是不是还得加一句清理)
高手指点,小弟感激不尽
作者: 学以致用表初衷 时间: 2016-1-8 19:57
这是我自己又写了一遍。你格式写的有点乱、
你没感觉你的括号十分的不舒服吗。
#include<stdio.h>
int main(int argc, const char * argv[])
{
char ch;
ch='a';
for(int i=0;i<9;i++)
{
printf("你会吗?\n");
rewind(stdin);(清空缓冲区)
scanf("%c",&ch);
if(ch=='y')
{
printf("你太对了,下课吧");
break;
}
else
{
print("你太笨了,这都是第%d次说了",i);
}
}
printf("下课");
}
作者: Chen_Mx 时间: 2016-1-8 20:34
清除缓冲区这句,太好了, 我记得有, 就是想不起来是怎么写的了。非常感谢。
大括号的话, 我之前 也是这样写的, 后来看视频是这个样子写的, 也是改了。刚开始也是别扭,
作者: Chen_Mx 时间: 2016-1-8 20:35
清除缓冲区这句,太好了, 我记得有, 就是想不起来是怎么写的了。非常感谢。
大括号的话, 我之前 也是这样写的, 后来看视频是这个样子写的, 也是改了。刚开始也是别扭,(我回错位置了。这次对了)
作者: lynn010 时间: 2016-1-10 11:19
我看有的地方是可以用fflush(stdin)也是可以的
作者: Chen_Mx 时间: 2016-1-13 09:29
谢谢支招哈。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |