gpt4 book ai didi

有人可以告诉我为什么我的 chain1 在我第二次使用它时突然打印 99 吗? :)

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

有人可以告诉我为什么 chain1 打印 99 吗?

我想做的就是在 if 条件完成后将 chain1 与 chain3 交换,但是 chain1 突然跳到 99,我真的不知道为什么。我什至改变了我的其他琴弦,效果非常好。对于这种情况,您可以键入 a3,然后键入 c3 以将 chain1 与 chain3 交换。

#include <stdio.h>
#include <stdlib.h>
#define R 3
#define C 3
#include <time.h>
#define S 100

int main()
{
char CHAINASK[S];

int index = 0;
int z = 0;
int Z = 0;

char CHAIN1[S];
char CHAIN2[S];
char CHAIN3[S];
char CHAIN4[S];
char CHAIN5[S];
char CHAIN6[S];
char CHAIN7[S];
char CHAIN8[S];
char CHAIN9[S];

int a, b;

int c, n;

///random maker
srand(time(NULL));
for (c = 1; c <= 1; c++)
{
n = rand() % 4 + 1;
printf("%d\n", n);
}

printf("\n");
printf("\n");
CHAIN1[S] = rand() % 4 + 1;
CHAIN2[S] = rand() % 4 + 1;
CHAIN3[S] = rand() % 4 + 1;
CHAIN4[S] = rand() % 4 + 1;
CHAIN5[S] = rand() % 4 + 1;
CHAIN6[S] = rand() % 4 + 1;
CHAIN7[S] = rand() % 4 + 1;
CHAIN8[S] = rand() % 4 + 1;
CHAIN9[S] = rand() % 4 + 1;

int q[R][C] = {CHAIN1[S], CHAIN2[S], CHAIN3[S], CHAIN4[S], CHAIN5[S], CHAIN6[S], CHAIN7[S], CHAIN8[S], CHAIN9[S]};

for (a = 0; a < R; a++)
{
for (b = 0; b < C; b++)
{
}
}

// PRINTS THE TABLE
for (a = 0; a < R; a++)
{
printf("\n");
for (b = 0; b < C; b++)
{
printf("%d,", q[a][b]);
}
}
printf("\n");
printf("\n");

////////////////////////////////
// the comparer
////////////////////////////////

printf("Escriba su coordenada\n");
scanf("%s", CHAINASK);
printf("\n");
printf("\n");

if (strcmp(CHAINASK, "a3") == 0)
{
printf("eligio la casilla a3");
printf("\n");
printf("\n");
printf("Escriba su coordenada\n");
scanf("%s", CHAINASK);
printf("\n");
printf("\n");
if (strcmp(CHAINASK, "c3") == 0)
{
printf("eligio la casilla c3");
printf("\n");
printf("\n");

// THE SWAP OCCURS

int q[R][C] = {CHAIN1[S], CHAIN2[S], CHAIN3[S], CHAIN4[S], CHAIN5[S], CHAIN6[S], CHAIN9[S] CHAIN7[S], CHAIN8[S], };

for (a = 0; a < R; a++)
{
for (b = 0; b < C; b++)
{
}
}
// PRINTS THE TABLE
for (a = 0; a < R; a++)
{
printf("\n");
for (b = 0; b < C; b++)
{
printf("%d,", q[a][b]);
}
}
}
}

if (strcmp(CHAINASK, "b3") == 0)
{
printf("eligio la casilla b3");
}
else
{
printf("no valid coordinate was introduced");
}
}

最佳答案

问题是您正在S=100CHAIN1[100]位置访问CHAINx,您声明的CHAINxchar CHAIN1[S]CHAIN1[100],这意味着您读取时的索引不得高于99或写入 CHAINx ,例如 CHAIN[99]

一个修复方法是将您的 CHAIN 声明为 char CHAIN[S+1] ,这里是固定代码。

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


#define R 3
#define C 3
#define S 100
int main()
{
char CHAINASK[S+1];

int index = 0;
int z = 0;
int Z = 0;

char CHAIN1[S+1];
char CHAIN2[S+1];
char CHAIN3[S+1];
char CHAIN4[S+1];
char CHAIN5[S+1];
char CHAIN6[S+1];
char CHAIN7[S+1];
char CHAIN8[S+1];
char CHAIN9[S+1];

int a, b;

int c, n;

///random maker
srand(time(NULL));
for (c = 1; c <= 1; c++)
{
n = rand() % 4 + 1;
printf("%d\n", n);
}

printf("\n");
printf("\n");
CHAIN1[S] = rand() % 4 + 1;
CHAIN2[S] = rand() % 4 + 1;
CHAIN3[S] = rand() % 4 + 1;
CHAIN4[S] = rand() % 4 + 1;
CHAIN5[S] = rand() % 4 + 1;
CHAIN6[S] = rand() % 4 + 1;
CHAIN7[S] = rand() % 4 + 1;
CHAIN8[S] = rand() % 4 + 1;
CHAIN9[S] = rand() % 4 + 1;

int q[R][C] = {CHAIN1[S], CHAIN2[S], CHAIN3[S], CHAIN4[S], CHAIN5[S], CHAIN6[S], CHAIN7[S], CHAIN8[S], CHAIN9[S]};

for (a = 0; a < R; a++)
{
for (b = 0; b < C; b++)
{
}
}

// PRINTS THE TABLE
for (a = 0; a < R; a++)
{
printf("\n");
for (b = 0; b < C; b++)
{
printf(" %d[%d,%d] , ", q[a][b],a,b);
}
}
printf("\n");
printf("\n");

// the comparer


printf("Escriba su coordenada\n");
scanf("%s", CHAINASK);
printf("\n");
printf("\n");

if (strcmp(CHAINASK, "a3") == 0)
{
printf("eligio la casilla a3");
printf("\n");
printf("\n");
printf("Escriba su coordenada\n");
scanf("%s", CHAINASK);
printf("\n");
printf("\n");

if (strcmp(CHAINASK, "c3") == 0)
{
printf("eligio la casilla c3");
printf("\n");
printf("\n");

// THE SWAP OCCURS

int qd[R][C] = {CHAIN1[S], CHAIN2[S], CHAIN3[S], CHAIN4[S], CHAIN5[S], CHAIN6[S],CHAIN9[S], CHAIN7[S], CHAIN8[S], };

for (a = 0; a < R; a++)
{
for (b = 0; b < C; b++)
{
}
}
// PRINTS THE TABLE
for (a = 0; a < R; a++)
{
printf("\n");
for (b = 0; b < C; b++)
{
printf(" %d [%d,%d] , ", qd[a][b],a,b);
}
}
}
}

if (strcmp(CHAINASK, "b3") == 0)
{
printf("eligio la casilla b3");
}
else
{
printf("no valid coordinate was introduced");
}
}

关于有人可以告诉我为什么我的 chain1 在我第二次使用它时突然打印 99 吗? :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58903935/

25 4 0
文章推荐: c# - 没有语法意义的代码块
文章推荐: javascript - 如何将 Javascript 插入网页
文章推荐: c# - 如何使用 Oracle 日期格式将 DateTime 转换为 C# 中的字符串
文章推荐: javascript - 使用 javascript DOM document.createElement 在新行上创建