有人能告诉我为什么我的chain1在第二次使用时突然打印出99吗?:)
有人能告诉我为什么chain1打印99吗 我想做的就是在if条件完成后,用chain3交换chain1,但是chain1突然跳到99,我真的不知道为什么。我甚至改变了我的其他字符串,结果很好。 对于这种情况,请键入有人能告诉我为什么我的chain1在第二次使用时突然打印出99吗?:),c,C,有人能告诉我为什么chain1打印99吗 我想做的就是在if条件完成后,用chain3交换chain1,但是chain1突然跳到99,我真的不知道为什么。我甚至改变了我的其他字符串,结果很好。 对于这种情况,请键入a3,然后键入c3,以将chain1与chain3交换 #include <stdio.h> #include <stdlib.h> #define R 3 #define C 3 #include <time.h> #define S 100 i
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");
}
}
#包括
#包括
#定义R3
#定义c3
#包括
#定义S 100
int main()
{
(S);
int指数=0;
int z=0;
int Z=0;
字符链1[S];
字符链2[S];
字符链3[S];
字符链4[S];
字符链5[S];
字符链6[S];
字符链7[S];
字符链8[S];
字符链9[S];
INTA,b;
int c,n;
///随机制造者
srand(时间(空));
对于(c=1;c而言,问题在于您正在访问位置S=100或CHAIN1[100]中的CHAINx,
您的CHAINx声明为char CHAIN1[S]或CHAIN1[100],这意味着您在读取或写入CHAINx时的索引不得高于99,例如CHAIN[99]
一种修复方法是将您的链声明为char链[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");
}
}
#包括
#包括
#包括
#包括
#定义R3
#定义c3
#定义S 100
int main()
{
字符链任务[S+1];
int指数=0;
int z=0;
int Z=0;
字符链1[S+1];
字符链2[S+1];
字符链3[S+1];
字符链4[S+1];
字符链5[S+1];
字符链6[S+1];
字符链7[S+1];
字符链8[S+1];
字符链9[S+1];
INTA,b;
int c,n;
///随机制造者
srand(时间(空));
对于(c=1;c有两个地方似乎有空的内环体。它们使内环不相关,而这又使外环不相关。那么,你打算在这些空的内环中放什么?我无法复制/生成你所说的问题。我运行代码并输入“a3”和“c3”,但我不是g在任何地方设置“99”。你说的“chain1突然跳到99”是什么意思?它工作起来就像我想要的一样:D非常感谢我在这上面停留了一段时间,现在这看起来不错,但我想知道OP是否仍然有一些误解。不清楚为什么他声明101个字符的数组,然后只使用最后一个索引。确实,有很多不清楚的部分,比如e空嵌套for循环。