高手看看这个c语言编程有哪错了?求高手

#include <stdio.h>
main
{int n,i;
float F=0.278,B=0.2326,t[10][901];
if i=0;
for(n=0;n<9;n++)
t[n][i]=80;

if (n=0)
for(i=0;i<900;i++)
t[n][i+1]=F*(t[1][i])+t[n+1][i]+(1-2*F)*t[n][i];
else if (n=10)
for(i=0;i<900;i++)
t[n][i+1]=t[n][i]*(1-2*F*B-2*F)+2*F*t[n-1][i]+2*F*B*300;

else
for(n=1;n<9;n++)
for(i=0;i<900;i++)
t[n][i+1]=F*(t[n+1][i])+t[n-1][i]+(1-2*F)*t[n][i];

if(i%150==0)
printf("t[n][i+1]=%f\n", t[n][i+1]);
}

第1个回答  2012-11-15
先不管程序逻辑,从语法上指出几个错误:
1.if语句
if语句的正确用法是if(表达式){语句块;}
或者只有一条语句时,可以省略大括号,但if之后紧跟的小括号一定要有。
if i=0;这句,错了。

2.if语句中作为条件的表达式
通常,if语句中的表达式返回“真”或“假”,以此来决定是否执行if语句(块),C/C++中“假”通常为0,则“真”为!0
if(n=0)
if(n=10)
以上两个地方,或者是错了,或者有岐义:
if(n=0)表达式总是返回“假”,因为将0赋值给n,n的值为0,整个语句以n的值为结果。
if(n=10)表达式总是返回“真”,因为将10赋值给n,n的值为10,10为非0值,所以条件为“真”

从此时的n值,还可以看到,t数组溢出了。追问

定义F=0.278 B=0.2326
数组 t[n][i]=t[10][900]
(1) t[n][0]=80 (n=0,1,2,3,4…10时)
(2)t[n][i+1]=F*(t[n+1][i])+t[n-1][i]+(1-2*F)*t[n][i] (n=1,2,3,…9时)
(2“)t[0][i+1]=F*(t[1][i])+t[1][i]+(1-2*F)*t[0][i] (n=0时)
(3)t[n][i+1]=t[n][i]*(1-2*F*B-2*F)+2*F*t[n-1][i]+2*F*B*300 (n=10时) i=(0到900)
要求 (i+1)%150==0时 输出t[n][i+1] ,这是差不多原题,望大侠费心,不吝赐教

第2个回答  2012-11-15
你这个要实现什么功能呢?很多小毛病