作业帮 > 综合 > 作业

有一正整数等差数列,其前四项之和是 m ,前四项之积是 n ,编程,输入 m 和 n ,输出此数列的前四项,

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/28 01:22:14
有一正整数等差数列,其前四项之和是 m ,前四项之积是 n ,编程,输入 m 和 n ,输出此数列的前四项,
这个是我写的不知道哪个地方错误,
#define N 3
main()
{
int m,n,k,i,s=1,d=0,flag=0;
int a[N];
scanf("%d %d",&m,&n);
for(i=1;i
有一正整数等差数列,其前四项之和是 m ,前四项之积是 n ,编程,输入 m 和 n ,输出此数列的前四项,
这个程序虽然不长,但是问题相当的多.一个一个的列吧.
1.书写风格很差,所以有些很明显的错误就会错过.按缩进格式写,有些错误一目了然;
2.其实这种程序最好的办法是调试一下,按机器的思维走一遍,好多问题也都明了了;
3.然后说实际的,最大的问题之一是求数列的方式不对.问题出在d=(m/2-2*i)/3这句,因为“/”操作是整数除,按这个d算出来的数列,和未必是m.你可以试下,数列为2,3,4,5,那么m=14,n=120.按你的式子,第一遍循环i=1,则d=(7-2)/3=1,算出来数列是1,2,3,4,和变成了10而不是14.试想,如果你输入的是m=14,n=24,程序逻辑会输出数列1,2,3,4,这显然就是错的;
4.判断if (s==n)写在了循环外边,所以即使找到了对的数列也不会判断积是否等于n,而是会进行下一次针对i的循环,除非这刚好是最后一次循环.
5.{for(k=0;k