搞不懂了~~~
#include <stdio.h>int main()
{
int i, j, n, cubed, sum = 0;
printf("请输入一个整数:");
scanf("%d", &n);
cubed = n * n * n;
for (i = 1; i < cubed; i += 2)
{
for (j = i; j < cubed; j += 2)
{
sum += j;
if (sum == cubed)
{
if (j - i > 4)
{
printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
}
else
{
printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
}
goto FINDIT;
}
if (sum > cubed)
{
sum = 0;
break;
}
}
}
FINDIT:
return 0;
}
这是小甲鱼的课后作业, 比如我输入3 我会得到27=7+9+11求助 i 为什么会等于7搞了好久~~ 题目是啥?
代入数据读一遍代码就知道了
搞了好久还不懂的话,不如想想自己是不是看懂了题目
看这逻辑是用一段连续的奇数列之和来表示一个整数的立方 本帖最后由 jackz007 于 2022-4-15 20:32 编辑
简单,比如 3 ,中心数是 3 ^ 2 = 9,以 9 为中心数的 3 个连续的奇数是 7 , 9 , 11 ;又比如 4,中心数是 4 ^ 2 = 16,以 16 为中心数的 4 个连续奇数是 13 , 15 , 17 , 19;对于 5,中心数是 5 ^ 2 = 25,以 25 为中心数的连续 5 个奇数当然是 21,23,25,27,29,余此类推。
#include <stdio.h>
int main(void)
{
int b , i , j , n , sum ;
printf("请输入一个整数:") ;
scanf("%d" , & n) ;
if(n > 2) {
j = n * n - n ;
if(! (j % 2)) j ++ ;
printf("%d" , j) ;
for(sum = b = j , i = 0 ; i < n - 1 ; i ++) {
b += 2 ;
sum += b ;
printf(" , %d" , b) ;
}
printf("\n") ;
printf("cubed = %d , sum = %d\n" , n * n * n , sum) ;
}
}
编译、运行实况:
D:\\>g++ -o x x.c
D:\\>x
请输入一个整数:3
7 , 9 , 11
cubed = 27 , sum = 27
D:\\>x
请输入一个整数:4
13 , 15 , 17 , 19
cubed = 64 , sum = 64
D:\\>x
请输入一个整数:5
21 , 23 , 25 , 27 , 29
cubed = 125 , sum = 125
D:\\>x
请输入一个整数:6
31 , 33 , 35 , 37 , 39 , 41
cubed = 216 , sum = 216
D:\\> 本帖最后由 yzzc 于 2022-4-16 09:01 编辑
程序的意思应该是,一个数的3次方,转化成连续的奇数和且奇数和等于3次方
按照程序爆破思想,例如3,3的3次方27,从1+3+……如果和大于27就进入下一次循环
直到i=7
7+9+11=27,所以i是7开头 感谢大家 搞懂了
页:
[1]