gpt4 book ai didi

c - While循环不断重复,程序停止时调试错误

转载 作者:行者123 更新时间:2023-11-30 21:25:44 25 4
gpt4 key购买 nike

我使用的是 Visual Studio 2010。while 不断重复,当程序停止时我收到错误。

它只是将数组的值增加了超过应有的 700 倍,并且“线”显示它只是重复了 while 循环,超过了应有的次数(约 700 倍)

代码:

#include <stdio.h>
#include <stdlib.h>

#include <time.h>
#include <iostream>

int main(){

int loop,loop2,loop3,usergirdi,random,linecounter,s,b,x;
int a[17];
printf("baslayarak \n");
scanf("%d",&usergirdi);

for (loop=1;loop<=16;loop++){
a[loop]=0; }
for (loop2=1;loop2<=15;loop2++){
if(loop2==usergirdi){
usergirdi=usergirdi;
a[usergirdi]+=1;
printf("%d ",a[usergirdi]); }

else
printf("%d ",a[loop2]);}

linecounter=0;

printf("\n");

while (a[1]<1||a[15]<1||a[2]<1||a[3]<1||a[4]<1||a[5]<1||a[6]<1||a[7]<1||a[8]<1||a[9]<1||a[10]<1||a[11]<1||a[12]<1||a[13]<1||a[14]<1){

linecounter++;

srand ( time(NULL) );
random=(rand()%15+1);



if (a[random-1]==0 && a[random+1]==0 && a[random]==0 ){}

else if (a[random-1]!=0 || a[random+1]!=0 )
{
a[random]+=1;

}
for (b=0;b<=14;b++){
printf("%d ",a[b]); }
printf("[line %d]\n",linecounter);



}}
<小时/>

调试错误:

最佳答案

您的代码可能会出现未定义的行为。您在多个位置使用越界索引来访问数组。

  1. while 开始之前循环。

    a[16] = 0;
  2. while内循环。

    a[16] = 0;
    a[-1] = 0;
  3. 再次进入 while循环

    if (a[random-1]==0 && a[random+1]==0 && a[random]==0 ){}
    // ^^ If random == 0
  4. 再次进入 while循环

    else if (a[random-1]!=0 || a[random+1]!=0 )
    // ^^ If random == 0

您可以通过以下方式删除这些错误:

  1. 使用

    a[15] = 0;
  2. 更换线路

    a[-1] = 0;

    a[0] = 0;
  3. 更改生成 random 的行至:

    random=(rand()%14)+1;

逻辑错误可以通过以下方式消除:

  1. 将调用移至 srand在 while 循环之外。

  2. 删除 a[0] < 1while 检查循环的条件。

关于c - While循环不断重复,程序停止时调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27487896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com