|
发表于 2022-8-21 16:09:25
|
显示全部楼层
本楼为最佳答案
a++和i++位置不对要放到后头,输出乱码应该是因为i++在前头所以第一行未赋值,至于结论错误,我没看到你全部代码,test你给赋初值为1了吗?
由于我没有你全部代码,我在你发出的代码基础上自行补全和修改了一下,能正确输出结果,你看一下:
- #include <stdio.h>
- int main()
- {
- int count,a,b,c,d,e,p;
- char k;
- int i=0,test=1;
- int re[100][5];
- printf("输入:");
- scanf("%d",&count);
- a=3;
- while(a<=count)
- {
- b=a*a*a;//立方数
- d=1; //首项
- p=1; //项数
- while(1)
- {
- p++; //首项为1时,不断增加项数
- c=(d+(d+(p-1)*2))*p/2;//利用(首项+末项)*项数/2
- if(c==b) //试数正确时,则保存数据
- {
- e=d+(p-1)*2;//末项
- re[i][0]= a;
- re[i][1]= b;
- re[i][2]= d;
- re[i][3]= d+2;
- re[i][4]= e;
- i++;
- c=0;
- break;//跳出内循环,换立方根
- }
- if(c>b) //试数错误,则重置数据,改变首项,继续试数
- {
- d+=2;
- c=0;
- p=1;
- }
- if(d>b/2)//若首项大于立方数的一半,则停止试数,结论错误
- {
- test=0;
- break;
- }
-
- }
- if(d>b/2)
- {
- break;
- }
- a++;
- }
-
- if(test==1)
- {
- printf("结论正确!\n");
- }
- else
- {
- printf("结论错误!\n");
- }
- getchar();
-
- printf("是否打印(y/n):");
- scanf("%c",&k);
-
- if(k=='y')
-
- {
-
-
- for(i=0;i<count-2;i++)
- {
-
- printf("%d^3 = %d = %d + %d + ... + %d",re[i][0],re[i][1],re[i][2],re[i][3],re[i][4]);
-
- putchar('\n');
- }
- putchar('\n');
- }
-
-
-
- return 0;
- }
复制代码
格式由于直接复制你的代码,没认真调,你将就看一下,输出结果是正确的
|
|