|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  复制代码#include <stdio.h>
#include <math.h>
#include <string.h>
#define M 1024
int main()
{
        unsigned int n, i, j = 0, sum = 0, k = 0;
        unsigned int num;
        char a[M];
        
        printf("请输入一个整数(大于2):");
        scanf("%d", &n);
        num = pow(n, 3);
        
        for (i = 1;i < (num);i += 2)
        {
                for (j = i;j < (num);j += 2)
                {
                        a[k++] = j; //j存入数组a 
                        sum += j;
                        if (sum == num)
                        {
                                a[k] = '\0';/////////
                                goto DONE;
                        }
                        else if (sum > num)
                        {
                                for (k = 0;k < M;k++) //将数组a元素清零
                                {
                                        a[k]  = 0;
                                }
                                a[M] = '\0';
                                k = 0;
                                sum = 0; 
                                break;        
                        }
                        else
                        {
                                ;
                        }
                        
                }
                
        }
        DONE:printf("%d = %d + %d + ... + %d\n", num, a[0], a[1], a[k-1]);
                 for (j = 0;j < strlen(a);j++)
                 {
                         printf("%d ", a[j]);
                 }
        return 0;
} 
 我的程序可以计算10以内的数,当n > 10时会出现图示负数以及结果不准确的情况,求解答。
 
很简答,因为你定义的a数组是char类型,该类型只有8个bit,故而能够存储数的大小范围在 -128~127。 
故代码第11行可以改为:
 | 
 |