鱼C论坛

 找回密码
 立即注册
查看: 2241|回复: 11

[已解决]请教大家一个循环

[复制链接]
发表于 2017-5-15 20:01:25 | 显示全部楼层 |阅读模式

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

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

x
#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-16 12:47:36
本帖最后由 当回首遇上转身 于 2017-5-16 13:30 编辑

这个跟指针有关系,最后m的值是0xa,转换成10进制就是10
360截图20170516124650149.jpg
用数字比较还是用int整型避免不必要麻烦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-15 22:05:30 | 显示全部楼层
while()循环只有当括号内的值为非或者执行break;语句才会结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-15 23:08:10 | 显示全部楼层
当回首遇上转身 发表于 2017-5-15 22:05
while()循环只有当括号内的值为非或者执行break;语句才会结束

可我输入回车m!=13就就为非了,应该跳出了,可是还是在循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 23:13:08 | 显示全部楼层
   while(ch==2)
        {
                char m;
                do scanf("%c",&m);
                while(m!=13);
        }
      do。。while是跳出了 ,但是while没跳出,相当于再次执行do。。while
  

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

使用道具 举报

 楼主| 发表于 2017-5-15 23:15:41 | 显示全部楼层
boom 发表于 2017-5-15 23:13
while(ch==2)
        {
                char m;

我把do while单独拿出来试了一波可还是出不来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 23:21:48 | 显示全部楼层
yourzeus 发表于 2017-5-15 23:15
我把do while单独拿出来试了一波可还是出不来

13换成10试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 00:00:18 | 显示全部楼层

这下为什么输入什么都跳出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 00:17:20 | 显示全部楼层
当回首遇上转身 发表于 2017-5-16 00:07
首先while(m!=13);并不是一个返回值,而是内嵌在while(ch==2){}的一个局部循环,
并且当m!=13时陷入while( ...

我把do  while循环单独拿出来运行了一下还是跳不出来,我试着把13换成10后不管输入什么都能跳出来,这是怎么回事啊
#include<stdio.h>
void main()
{
        char m;
        do scanf("%c",&m);
        while (m!=10);
        printf("****\n");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-16 12:47:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 当回首遇上转身 于 2017-5-16 13:30 编辑

这个跟指针有关系,最后m的值是0xa,转换成10进制就是10
360截图20170516124650149.jpg
用数字比较还是用int整型避免不必要麻烦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 15:40:27 | 显示全部楼层
当回首遇上转身 发表于 2017-5-16 12:47
这个跟指针有关系,最后m的值是0xa,转换成10进制就是10

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 06:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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