chenyu 发表于 2015-8-19 15:31 这个是符合条件的 |
if(i>99 || i<1000) 好像是这样的吧。 |
12+3+4=19; |
981013 发表于 2015-8-19 10:06 谢谢 |
Dear 发表于 2015-8-19 09:44 n要初始化为1 |
本帖最后由 981013 于 2015-8-19 10:08 编辑 Dear 发表于 2015-8-19 09:44 像这样:[mw_shl_code=c,true]#include <stdio.h> #include <stdlib.h> int main() { int i,a,b,c,d,n; //多了个变量n来让while中断 puts("请输入三位数:"); scanf("%d",&i); n=1;//初始化操作 while(n==1) { if(i<100 || i>999) { puts("请输入三位数:"); scanf("%d",&i); } else { n=0;//当i符合条件时 n被赋值为0 } } a=i%100%10;//到这里执行计算 b=i%100/10; c=i/100; d=a+b+c; printf("和是:%d\n",d); system("pause"); return 0; }[/mw_shl_code] |
Dear 发表于 2015-8-19 09:44 n要初始化为1 |
981013 发表于 2015-8-17 17:53 一直以来都没注意到 感谢 |
如果是{n=0;break;},程序执行break后跳出while()语句,所以是break停止了while()语句。 |
小榛鼠 发表于 2015-8-17 23:22 哦 谢谢 我把n=0删了 运行也一样 |
Dear 发表于 2015-8-17 22:07 抱歉else{n=0;break;}这句完全是没必要的,只要留下break就够了, 你试试把n=0改成n=1也完全没影响,当时不知道为什么加上去了,非常抱歉 |
跳出while(n=1)并且不会再回到while开头,while(n=1)循环已经结束了, 如果你有在用其它编译器的话可以试试用断点的功能,会看得很清楚 |