wang815309286 发表于 2016-8-11 10:12:18

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

#include<stdio.h>
int main(void)
{
        intmin,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

wang815309286 发表于 2016-8-11 10:13:10

求教各位大神

迷雾少年 发表于 2016-8-11 10:26:39

没错啊,输入2个数a,b
从a的平方加到b的平方
我输入110
输出385
手动算了下没错{:10_249:}

迷雾少年 发表于 2016-8-11 10:27:22

我输入5 9
输出255
没错{:10_269:}

wang815309286 发表于 2016-8-12 08:33:58

但是我的电脑显示的是printf(The sun of the squares form %d to %d   is%d\n",min*min,max*max,sum)
输入 59
显示的是
100   81   255
后面的两个数是对的,但是前面的5*5结果显示的为什么是100呢?

qwe1231069 发表于 2016-8-12 09:30:31

我知道了 min++ min已经成为10了 他就退出循环了所以是100

qwe1231069 发表于 2016-8-12 09:31:32

渣渣网速发个帖要一分钟

轮回的夏 发表于 2016-8-12 20:30:08

不会自己单步调试一下啊,发帖前能不能把你这个函数的功能说一下,做下注释也好啊,别人看到都不想回了,还有就是代码不要这样发,如果长的话看起来很乱的

鱼C论坛版主招聘#include<stdio.h>
int main(void)
{
      intmin,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;
}

轮回的夏 发表于 2016-8-12 20:34:41

你这段代码逻辑上就已经很有问题了

轮回的夏 发表于 2016-8-12 20:37:53

你好好看看你运行到printf这个语句的时候min的值已经不是你最开始输入的值了,而经过循环之后自++加到5了好吗

wang815309286 发表于 2016-8-14 09:49:56

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

OK~知道了~~谢谢哈~

iszhuangsha 发表于 2016-8-29 01:26:08

wang815309286 发表于 2016-8-14 09:49
OK~知道了~~谢谢哈~

{:5_93:}说得对。

18813974736 发表于 2016-8-29 17:25:16

本帖最后由 18813974736 于 2016-8-29 17:28 编辑

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

#include<stdio.h>

int main()
{
    intmin,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;
}


mingcxx 发表于 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);
页: [1]
查看完整版本: 为什么程序没问题为啥输入结果不对列?