大佬救命
#include<stdio.h>int main(void)
{
int count,j;
char judge;
printf("请输入一个整数:");
scanf("%d",&count);
printf("经验证,3 ~ %d 之间所有的整数均符合尼科彻斯定理!\n\n",count);
printf("是否打印所有的式子(y/n):");
scanf("%c",&judge); //不知道为什么,运行出来这个地方直接跳过了输入第二个y/n,直接程序结束了,为什么啊?
if(judge == 'n')
{
;
}
else if(judge == 'y')
{
for(j = 3;j <= count;j++)
{
int num2;
int begin = -1;
int flag1 = 1;
int i;
num2 = j * j * j;
while(flag1)
{
int sum = 0;
begin +=2;
for(i = begin;;i+=2)
{
sum = sum+=i;
if(sum == num2)
{
flag1 = 0;
break;
}
else if(sum > num2)
{
break;
}
}
}
int sum = 0;
printf("%d =",num2);
for(i = begin;sum <= num2;i+=2)
{
if(sum < num2)
{
sum += i;
printf(" %d +",i);
}
else
{
sum += i;
printf(" %d +",i);
printf("\b \n");
}
}
}
}
return 0;
} 加上一个getchar,过滤掉第一次输入的那个\n就好啦
#include<stdio.h>
int main(void)
{
int count,j;
char judge;
printf("请输入一个整数:");
scanf("%d",&count);
getchar();
printf("经验证,3 ~ %d 之间所有的整数均符合尼科彻斯定理!\n\n",count);
printf("是否打印所有的式子(y/n):");
scanf("%c",&judge); //不知道为什么,运行出来这个地方直接跳过了输入第二个y/n,直接程序结束了,为什么啊?
if(judge == 'n')
{
;
}
else if(judge == 'y')
{
for(j = 3;j <= count;j++)
{
int num2;
int begin = -1;
int flag1 = 1;
int i;
num2 = j * j * j;
while(flag1)
{
int sum = 0;
begin +=2;
for(i = begin;;i+=2)
{
sum = sum+=i;
if(sum == num2)
{
flag1 = 0;
break;
}
else if(sum > num2)
{
break;
}
}
}
int sum = 0;
printf("%d =",num2);
for(i = begin;sum <= num2;i+=2)
{
if(sum < num2)
{
sum += i;
printf(" %d +",i);
}
else
{
sum += i;
printf(" %d +",i);
printf("\b \n");
}
}
}
}
return 0;
} qiuyouzhi 发表于 2020-11-18 17:09
加上一个getchar,过滤掉第一次输入的那个\n就好啦
这是什么原理呢? 吻你不厌 发表于 2020-11-18 18:29
这是什么原理呢?
https://zhidao.baidu.com/question/138079375.html #include <stdio.h>
int nico(int n)
{
int h , k ;
h = n * n - n ;
if(! (h % 2)) h ++ ;
printf("%d = %d" , n * n * n , h) ;
for(k = 1 ; k < n ; k ++) printf(" + %d" , h + 2 * k) ;
printf("\n") ;
return h ;
}
int main(void)
{
int count , j ;
char judge ;
printf("请输入一个整数:") ;
scanf("%d" , & count) ;
printf("经验证 ,3 ~ %d 之间所有的整数均符合尼科彻斯定理!\n\n" , count) ;
printf("是否打印所有的式子(y/n) :") ;
fflush(stdin) ;
judge = getchar() ;
if(judge == 'Y' || judge == 'y') for(j = 3 ; j <= count ; j ++) nico(j);
}
编译、运行实况
D:\0002.Exercise\C>g++ -o nico2 nico2.c
D:\0002.Exercise\C>nico2
请输入一个整数:9
经验证 ,3 ~ 9 之间所有的整数均符合尼科彻斯定理!
是否打印所有的式子(y/n) :y
27 = 7 + 9 + 11
64 = 13 + 15 + 17 + 19
125 = 21 + 23 + 25 + 27 + 29
216 = 31 + 33 + 35 + 37 + 39 + 41
343 = 43 + 45 + 47 + 49 + 51 + 53 + 55
512 = 57 + 59 + 61 + 63 + 65 + 67 + 69 + 71
729 = 73 + 75 + 77 + 79 + 81 + 83 + 85 + 87 + 89
D:\0002.Exercise\C> 本帖最后由 jackz007 于 2020-11-18 19:48 编辑
楼主,最佳答案代码打印出的结果是错的,难道你没有发现?建议输入一个 9 看看打印出来的东西。 jackz007 发表于 2020-11-18 19:46
楼主,最佳答案代码打印出的结果是错的,难道你没有发现?建议输入一个 9 看看打印出来的东西。
怎么说呢,小甲鱼的演示的输出样例就和上面的一样,但是我发现你的验证的数据也是对的,我猜测这个定理可以有多个验证表达式 本帖最后由 jackz007 于 2020-11-19 14:00 编辑
吻你不厌 发表于 2020-11-19 13:43
怎么说呢,小甲鱼的演示的输出样例就和上面的一样,但是我发现你的验证的数据也是对的,我猜测这个定理可 ...
错误的结果五花八门,正确的结论只有一个,答案是否正确,只要验证等式是否符合规则和是否成立即可立见分晓。 jackz007 发表于 2020-11-19 13:59
错误的结果五花八门,正确的结论只有一个,答案是否正确,只要验证等式是否符合规则和是否成立 ...
兄弟,话别说得这么满,而且我又没说你是错的,你自己看小甲鱼21节的课后作业的演示,我都向着你了,都没说你是错的,何必呢?我认真思考了你的答案,你呢?何必呢?
页:
[1]