yourzeus 发表于 2017-5-15 20:01:25

请教大家一个循环

#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)的循环输入回车怎么不结束

当回首遇上转身 发表于 2017-5-15 22:05:30

while()循环只有当括号内的值为非或者执行break;语句才会结束

yourzeus 发表于 2017-5-15 23:08:10

当回首遇上转身 发表于 2017-5-15 22:05
while()循环只有当括号内的值为非或者执行break;语句才会结束

可我输入回车m!=13就就为非了,应该跳出了,可是还是在循环。

boom 发表于 2017-5-15 23:13:08

   while(ch==2)
      {
                char m;
                do scanf("%c",&m);
                while(m!=13);
      }
      do。。while是跳出了 ,但是while没跳出,相当于再次执行do。。while


yourzeus 发表于 2017-5-15 23:15:41

boom 发表于 2017-5-15 23:13
while(ch==2)
      {
                char m;


我把do while单独拿出来试了一波可还是出不来{:10_266:}

boom 发表于 2017-5-15 23:21:48

yourzeus 发表于 2017-5-15 23:15
我把do while单独拿出来试了一波可还是出不来

13换成10试试

yourzeus 发表于 2017-5-16 00:00:18

boom 发表于 2017-5-15 23:21
13换成10试试

这下为什么输入什么都跳出了

当回首遇上转身 发表于 2017-5-16 00:07:47

首先while(m!=13);并不是一个返回值,而是内嵌在while(ch==2){}的一个局部循环,
并且当m!=13时陷入while(m!=13);自身的死循环
当m == 13时并不会退出while(ch==2){},而是进入while(ch==2){}的下一个循环也就是执行char m;

yourzeus 发表于 2017-5-16 00:17:20

当回首遇上转身 发表于 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 12:47:36

本帖最后由 当回首遇上转身 于 2017-5-16 13:30 编辑

这个跟指针有关系,最后m的值是0xa,转换成10进制就是10

用数字比较还是用int整型避免不必要麻烦

yourzeus 发表于 2017-5-16 15:40:27

当回首遇上转身 发表于 2017-5-16 12:47
这个跟指针有关系,最后m的值是0xa,转换成10进制就是10

用数字比较还是用int整型避免不必要麻烦

嗯,会了,谢谢
页: [1]
查看完整版本: 请教大家一个循环