|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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行可以改为:
|
|