请教大家一个循环
#include <stdio.h>double main(void)
{
double power(double x,double y);
char character(char);
int ch;
scanf("%d",&ch);
while(ch==1)
{
double z;
int k,j;
scanf("%d %d",&k,&j);
z=power(k,j);
printf("%d的%d次=%f\n",k,j,z);
}
while(ch==2)
{
char m;
do scanf("%c",&m);
while(m!=13);
}
}
double power (double x, double y)
{
double q,w,t;
t=1;
for(q=1;q<=y;q++)
{
w=x;
t=t*w;
}
return (t);
}
那个while(ch==2)的循环输入回车怎么不结束
while()循环只有当括号内的值为非或者执行break;语句才会结束 当回首遇上转身 发表于 2017-5-15 22:05
while()循环只有当括号内的值为非或者执行break;语句才会结束
可我输入回车m!=13就就为非了,应该跳出了,可是还是在循环。 while(ch==2)
{
char m;
do scanf("%c",&m);
while(m!=13);
}
do。。while是跳出了 ,但是while没跳出,相当于再次执行do。。while
boom 发表于 2017-5-15 23:13
while(ch==2)
{
char m;
我把do while单独拿出来试了一波可还是出不来{:10_266:} yourzeus 发表于 2017-5-15 23:15
我把do while单独拿出来试了一波可还是出不来
13换成10试试 boom 发表于 2017-5-15 23:21
13换成10试试
这下为什么输入什么都跳出了 首先while(m!=13);并不是一个返回值,而是内嵌在while(ch==2){}的一个局部循环,
并且当m!=13时陷入while(m!=13);自身的死循环
当m == 13时并不会退出while(ch==2){},而是进入while(ch==2){}的下一个循环也就是执行char m;
当回首遇上转身 发表于 2017-5-16 00:07
首先while(m!=13);并不是一个返回值,而是内嵌在while(ch==2){}的一个局部循环,
并且当m!=13时陷入while( ...
我把dowhile循环单独拿出来运行了一下还是跳不出来,我试着把13换成10后不管输入什么都能跳出来,这是怎么回事啊#include<stdio.h>
void main()
{
char m;
do scanf("%c",&m);
while (m!=10);
printf("****\n");
} 本帖最后由 当回首遇上转身 于 2017-5-16 13:30 编辑
这个跟指针有关系,最后m的值是0xa,转换成10进制就是10
用数字比较还是用int整型避免不必要麻烦 当回首遇上转身 发表于 2017-5-16 12:47
这个跟指针有关系,最后m的值是0xa,转换成10进制就是10
用数字比较还是用int整型避免不必要麻烦
嗯,会了,谢谢
页:
[1]