鱼C论坛

 找回密码
 立即注册
查看: 3076|回复: 13

为什么程序没问题为啥输入结果不对列?

[复制链接]
发表于 2016-8-11 10:12:18 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main(void)
{
        int  min,max,sum;
        printf("Enter lower and upper integer limits:");
        scanf("%d%d",&min,&max);
        while (min<max)
        {
                for(sum=0;min<=max;min++)
                sum+=min*min;
                printf("The sun of the squares form %d to %d is %d\n",min*min,max*max,sum);
                printf("Enter next set of limits:");
                scanf("%d%d",&min,&max);
        }
         printf("Done\n");
        return 0;
}
这个程序有问题 为什么输入结果就是不对啊  我输入 5 9   结果显示的是  100   81
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-11 10:13:10 | 显示全部楼层
求教各位大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 10:26:39 | 显示全部楼层
没错啊,输入2个数  a,b
从a的平方加到b的平方
我输入1  10
输出385
手动算了下没错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-11 10:27:22 | 显示全部楼层
我输入5 9
输出255
没错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-12 08:33:58 | 显示全部楼层
但是我的电脑显示的是printf(The sun of the squares form %d to %d   is%d\n",min*min,max*max,sum)
输入 5  9
显示的是
100   81   255  
后面的两个数是对的,但是前面的5*5结果显示的为什么是100呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 09:30:31 | 显示全部楼层
我知道了 min++ min已经成为10了 他就退出循环了所以是100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 09:31:32 | 显示全部楼层
渣渣网速发个帖要一分钟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 20:30:08 | 显示全部楼层
不会自己单步调试一下啊,发帖前能不能把你这个函数的功能说一下,做下注释也好啊,别人看到都不想回了,还有就是代码不要这样发,如果长的话看起来很乱的
 鱼C论坛版主招聘#include<stdio.h>
int main(void)
{
        int  min,max,sum;
        printf("Enter lower and upper integer limits:");
        scanf("%d%d",&min,&max);
        while (min<max)
        {
                for(sum=0;min<=max;min++)
                sum+=min*min;
                printf("The sun of the squares form %d to %d is %d\n",min*min,max*max,sum);
                printf("Enter next set of limits:");
                scanf("%d%d",&min,&max);
        }
         printf("Done\n");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 20:34:41 | 显示全部楼层
你这段代码逻辑上就已经很有问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-12 20:37:53 | 显示全部楼层
你好好看看你运行到printf这个语句的时候min的值已经不是你最开始输入的值了,而经过循环之后自++加到5了好吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-14 09:49:56 | 显示全部楼层
轮回的夏 发表于 2016-8-12 20:30
不会自己单步调试一下啊,发帖前能不能把你这个函数的功能说一下,做下注释也好啊,别人看到都不想回了,还 ...

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

使用道具 举报

发表于 2016-8-29 01:26:08 | 显示全部楼层
wang815309286 发表于 2016-8-14 09:49
OK~知道了  ~~谢谢哈~

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

使用道具 举报

发表于 2016-8-29 17:25:16 | 显示全部楼层
本帖最后由 18813974736 于 2016-8-29 17:28 编辑

其实你在for循环那里加个大括号你就会很清晰了
上代码:

#include<stdio.h>

int main()
{
    int  min,max,sum;

    printf("Enter lower and upper integer limits:");
    scanf("%d%d",&min,&max);

    while (min<max)
    {
            for(sum=0;min<=max;min++)
        {
                sum+=min*min;
                       
                printf("The sun of the squares form %d to %d is %d\n",min*min,max*max,sum);
        }
        
        printf("The sun of the squares form %d to %d is %d\n",min*min,max*max,sum);
        printf("Enter next set of limits:");
        scanf("%d%d",&min,&max);
    }

    printf("Done\n");

    return 0;
}


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

使用道具 举报

发表于 2016-8-29 18:09:52 | 显示全部楼层
原因:你的for循环里在更新min值,计算5到9平方和之后,min变为10。printf()打印了min平方即100。
改法:在for循环里用临时变量temp进行更新,代码如下:
for (int temp = 0, sum = 0; temp <= max; temp++)
                sum += temp*temp;
          printf("The sum of the squares form %d to %d is %d\n", min, max, sum);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 08:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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