想问一下这里哪里出错,c语言刚学,谢谢
/*8、编写函数 n 2 k 2求 ∑ 2j^2 + ∑ i!(-1)^i j = n 1 i = k 1 */#include<stdio.h>#include<math.h>int main(){int f(int n1,int n2,int k1,int k2);int n1,n2,j,k1,k2,k=0,i,s1=0,s2=0,sum=0,t=1;printf("输入n1,n2,k1,k2:");scanf("%d%d%d%d",&n1,&n2,&k1,&k2); printf("sum=%d ", sum);}int f(int n1,int n2,int k1,int k2){ int n1,n2,j,k1,k2,k=0,i,s1=0,s2=0,sum=0,t=1;if(n1>n2||k1>k2)printf("错误! ");else { for(j=n1;j<=n2;j++) { s1=s1+2*j*j; } for(i=k1;i<=k2;i++) { k=1; t=1; while(k<=i) { t=t*k; t++; } if(i%2==1) s2=s2+t*(-1); else s2=s2+t; } sum=s1+s2;}return 0;}
语法上,你把子函数及主函数变量定义搞混了,且你的子函数根本没用
逻辑上,while(k<=i)是死循环,修改的参考
#include<stdio.h> #include<math.h> int main() { int f(int n1,int n2,int k1,int k2); int n1,n2,k1,k2; //j,k=0,i,s1=0,s2=0,sum=0,t=1; ////子程序变量不要放在主程序中 printf("输入n1,n2,k1,k2:"); scanf("%d%d%d%d",&n1,&n2,&k1,&k2); printf("sum=%d ", f(n1,n2,k1,k2)); /////要调用函数才能有结果的 } int f(int n1,int n2,int k1,int k2) { int /*n1,n2,j,k1,k2,*/k=0,j,i,s1=0,s2=0,sum=0,t=1; if(n1>n2||k1>k2) printf("错误! "); else { for(j=n1; j<=n2; j++) { s1=s1+2*j*j; } for(i=k1; i<=k2; i++) { k=1; t=1; while(k<=i) { t=t*k; k++; //若是t++,k不变,死循环 } if(i%2==1) s2=s2+t*(-1); else s2=s2+t; } sum=s1+s2; } return sum; }
下一篇:c语言代码不知道错在哪