|
发表于 2011-11-30 16:03:49
|
显示全部楼层
花了二十分钟帮你整理格式,一分钟帮你解决两个问题:
1. 少了一个右大括号
2. fabs()返回double型,你用来做数组下标肯定会出错的。
请以后注意代码格式,因为很少有人喜欢帮别人整理内衣裤的。。。。。。
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- int SGN(int n)
- {
- int m;
- if(n>=0)
- m=1;
- else
- m=-1;
- return m;
- }
- int main()
- {
- int i,j,K,k,N=6,M=17,ci=0;
- int L[17],IO[17],JO[17];
- double EP,FFN,D[17],Q[17],S[17],H[17];
- double F[6],R[6],DQ[6];
-
- printf("Input EP and FFN:\n\n");
- scanf("%f%f",&EP,&FFN);
- printf("\n Input K L(m) D(m) Q(L/s) IO JO:\n");
-
- for(i=0;i<M;i++)
- scanf("%d%d%f%f%d%d",&j,&L[i],&D[i],&Q[i],&IO[i],&JO[i]);
-
- for(i=0;i<M;i++)
- Q[i]=Q[i]/1000;
- for(i=0;i<M;i++)
- {
- S[i]=10.293*FFN*FFN*L[i]/pow(D[i],5.33);
- Q[i]=Q[i]*SGN(IO[i]);
- }
-
- do
- {
- ci=ci+1;
- for(i=0;i<N;i++)
- H[i]=S[i]*fabs(Q[i])*Q[i];
- for(i=0;i<N;i++)
- {
- F[i]=0;
- R[i]=0;
- for(j=0;j<M;j++)
- {
- if(fabs(IO[j])-1==i)
- {
- F[i]=F[i]+H[j];
- R[i]=R[i]+S[j]*fabs(Q[j]);
- }
- else
- {
- if(fabs(JO[j])-1==i)
- {
- F[i]=F[i]+H[j]*SGN(JO[j]);
- R[i]=R[i]+S[j]*fabs(Q[j]);
- }
- }
- }
- DQ[i]=-F[i]/R[i]/2;
- }
- for(i=0;i<M;i++)
- {
- if(JO[i]!=0)
- Q[i]=Q[i]+DQ[(int)fabs(IO[i])-1]-DQ[(int)fabs(JO[i])-1];
- else
- Q[i]=Q[i]+DQ[(int)fabs(IO[i])-1];
- H[i]=S[i]*fabs(Q[i])*Q[i];
- }
- k=0;
- for(i=0;i<N;i++)
- {
- if(fabs(F[i])<=EP)
- ;
- else
- k=1;
- }
- }while(k==1);
-
- printf("\n\nResults:\n");
- printf("%32s%.3f","EP=",EP);
- printf("%10s%d\n","ci=",ci);
- printf("%33s%d","N=",N);
- printf("%11s%d\n","M=",M);
- printf("\n");
- printf("%7s%13s%13s%10s%14s%15s\n","K","L(m)","D(m)","S","H(m)","Q(m^3/s)");
- for(i=0;i<M;i++)
- printf("%7d%13d%13.2f%13.3f%11.2f%14.5f\n",i+1,L[i],D[i],S[i],H[i],Q[i]);
-
- return 0;
- }
复制代码
|
|