c语言编程出现的小问题

这个题目我是这样编程的,但是结果就是不对,当a=1,n=3时结果应该是123的,可是输出的结果是122;当a=1,n=4时结果应为1234,实际输出为1232.调试了一下,i1=3时sum出错了,应该是111的,结果却是110,n=4时sum=1110,导致后面结果不对 但是想知道程序哪里错了会出现这样的情况,应该怎么修改?

把 sum 和 SUM 定义为 double;

看下面的代码:

#include <stdio.h>
#include <math.h>

int main(int argc, char** argv)
{
    int n, a, i1, i2;
double sum, SUM = 0;
printf ("输入a,n:");
scanf ("%d,%d", &a, &n);
for (i1 = 1; i1 <= n; i1++)
{
for (sum = 0, i2 = 1; i2 <= i1; i2++)
{
sum = sum + pow(10, i2 - 1);
}
printf ("sum: %.0lf\n", sum);
SUM = SUM + sum;
}
printf ("%.0lf\n", SUM * a);

    return 0;
}

运行:


想知道为什么,但是在这说起来比较麻烦 —— 可以自己查资料了解 int、long、float 和 double 在内存中究竟是如何表示的(为什么表达式中 (int)pow(10, 2) 的到的值会是 99)。

建议就是如果一个运算的表达式中有整数也有浮点数,那么返回的结果保存在浮点数中。

追问

换成double后无论怎样结果都是0   

是我的codeblock有问题吗  我同学和我打一样的代码她是正确结果

追答

换成 double 后注意输出使用 %lf,不要再用 %d,既然你知道结果是整数那就用 %.0lf(即不保留小数位)

追问

是的是的是这样的 谢谢啊

温馨提示:答案为网友推荐,仅供参考
相似回答