我看到的问题,不知道对不对,仅作参考
sum没的初值,不会有影响,但会警告
最后一个if没有执行语句吧,最后q的值也一定是159吧
有问题联系我
我还在看,如果能解决再给你回
一楼提的问题也存在
还有i和j不用赋初值
我的电脑有点问题,运行不了
这是我修改过的,运行出来了
# include
void main()
{
int i,j,y,sum,max,x,q,m=0;
int b[161];
for(i=320;i<=480;i++)
{
sum=0;
for(j=320;j<=480;j++)
{
if(i else if(j
else if(j=i)y=20*i; sum=y+sum; } b[m]=sum/160; m++; } max=b[0]; for(x=1;x<=159;x++); { if(max
{ max=b[x]; q=x; } } printf("%d\n",q); } 而且我分析了一下,你的每个sum和j其实是没关系的,你可以算一下,所以b会随i一直增大,q必然是最后一下
a[160],b[160];
没怎么细看。
但是上面这个在for 循环中是不够用的。
应当是a[161],b[161]
另外sum是哪一个求和,有没有必要在for(i=320;i<=480;i++)下面置零。
因为不知道你具体想实现什么,不敢乱加评论。
//C语言调试问题
#include
void main()
{
int i,j,y,n,m,sum=0,max,x,q;//sum该sum=0
int a[25600],b[25600];//int a[160],b[160];该a[25600],b[25600];
i=320;
j=320;
n=0;
m=0;
for(i=320;i<=480;i++)
{
for(j=320;j<=480;j++)
{
if(i
if(j else
if(j==i)y=20*i;//j=i该j==i
a[n]=y;
sum=a[n]+sum;
n++;
}
b[m]=sum/160;
m++;
}
max=b[0];
for(x=1;x<=159;x++);
{
if(max max=b[x];
q=x;
}
printf("%d\n",q);
}
# include
void main()
{
int i,j,y,n,m,sum,max,x,q;
int a[160],b[160];
i=320;
j=320;
m=0;
for(i=320;i<480;i++) //i<480否则480-320+1>160,b会溢出
{
sum=0; //sum每次也要初始化,否则b[m]中的值会越来越大
n=0; //n在外循环要初始化,这样进入内循环时从0开始,到160就不会溢出,否则a要160*160才行
for(j=320;j<480;j++) //j<480否则480-320+1>160,a会溢出
{
if(i
a[n]=y;
sum=a[n]+sum;
n++;
}
b[m]=sum/160;
m++;
}
max=b[0];
for(x=1;x<=159;x++);
{
if(max max=b[x];
q=x;
}
printf("%d\n",q);
}
ps三个问题
1.n需在进入内循环之前外循环内赋值;
2.sum同理;
3.i j<480,否则溢出一个单位。
其实,有了y,就不需要a【160】了,可以把那几句改成sum=y+sum
虽然不知道楼主的程序功能是什么,但是应该是TC下的环境,n溢出的原因是很明显的,还有别的一些错误也一起改了,最好能说说这个程序是做什么的
# include
void main()
{
int i,j,y,n,m,sum,max,x,q;
int a[160],b[160];
i=320; j=320; /*这两个其实不必要,因为下面又重复做了*/
m=0;
for(i=320;i<480;i++) /*这里要么<=改为<,要么就把数组定义为161个,下面x也改*/
{
sum=0;/*sum也应该初始化*/
n=0; /*n应该放在这里置0,否则肯定会溢出*/
for(j=320;j<480;j++) /*和上面一样*/
{
if(i
a[n]=y;
sum=a[n]+sum;
n++;
}
b[m]=sum/160;
m++;
}
max=b[0];
q=0; /*应该加上这个初始化*/
for(x=1;x<=159;x++);
{
if(max {
max=b[x];
q=x;
}
}
printf("%d\n",q);
}