C语言调试问题

2024-12-12 00:52:53
推荐回答(5个)
回答1:

我看到的问题,不知道对不对,仅作参考

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必然是最后一下

回答2:

a[160],b[160];
没怎么细看。
但是上面这个在for 循环中是不够用的。
应当是a[161],b[161]

另外sum是哪一个求和,有没有必要在for(i=320;i<=480;i++)下面置零。
因为不知道你具体想实现什么,不敢乱加评论。

回答3:

//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 else
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);
}

回答4:

# 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 else if(j else if(j=i)y=20*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

回答5:

虽然不知道楼主的程序功能是什么,但是应该是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 else if(j else if(j=i)y=20*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);
}