如下第一段代码是书上抄下来的,检查和书写的一样,但是运行结果会出错,请问错在哪了?
#include "stdio.h"
int main()
{
int person[100];
int i, j;
int arrayLen; // s数组长度
int start, N; // 开始位置,报数大小
int deleNum; // 出列人数组下标
int name, M; // 输入时,人的信息,总人数
printf("请输入圆桌上人的总数:");
scanf("%d,&arrayLen");
printf("\n");
printf("请输入每个人的信息(整数):\n");
for (i = 0; i < arrayLen; i++)
{
scanf("%d", &name);
person[i] = name;
}
printf("请输入的数据的顺序为:\n");
for (i = 0; i < arrayLen - 1; i++)
;
printf("%d\n", person[arrayLen - 1]);
printf("你打算从第几个开始报数?");
scanf("%d", &start);
start = start - 1;
printf("请输入报数为多少时出圈?");
scanf("%d", &N);
printf("\n");
M = arrayLen;
printf("程序运行后,出列人的顺序为:\n\n");
for (i = 0; i < M; i++)
{
if (arrayLen == 1)
printf("%d", person[0]);
else
{
deleNum = (start + N - 1) % arrayLen;
printf("%d==>", person[deleNum]);
for (j = deleNum; j < arrayLen; j++)
person[j] = person[j + 1];
start = deleNum;
arrayLen = arrayLen - 1;
}
}
printf("\n\n");
return 0;
}
出错运行结果如下:
第二段代码运行正常,
#include <stdio.h>
int main()
{
int person[100];
int i, j;
int arrayLen; // 数组长度
int start, N; // 开始位置,报数大小
// 输入圆桌上人的总数
printf("请输入圆桌上人的总数:");
scanf("%d", &arrayLen);
printf("\n");
// 输入每个人的信息(整数)
printf("请输入每个人的信息(整数):\n");
for (i = 0; i < arrayLen; i++)
{
scanf("%d", &person[i]);
}
// 输入报数起始位置和报数大小
printf("你打算从第几个开始报数?");
scanf("%d", &start);
start = start - 1; // 转换为数组下标
printf("请输入报数为多少时出圈?");
scanf("%d", &N);
printf("\n");
printf("程序运行后,出列人的顺序为:\n\n");
for (i = 0; i < arrayLen; i++)
{
if (arrayLen == 1)
{
printf("%d", person[0]);
}
else
{
int deleNum = (start + N - 1) % arrayLen;
printf("%d ==> ", person[deleNum]);
// 移除出列的人
for (j = deleNum; j < arrayLen - 1; j++)
{
person[j] = person[j + 1];
}
arrayLen = arrayLen - 1;
start = deleNum;
}
}
printf("\n\n");
return 0;
}
运行如下