关于开关灯问题中代码无法显示结果的问题
在你提供的代码中存在几个问题,我将逐一指出并进行修正。
首先,你需要明确指定循环变量的类型,否则在一些编译器上会报错。其次,你在循环中使用的条件可能有错误。最后,在switch语句中,你似乎试图用空字符串来表示某些情况,这可能会导致输出不符合预期。
下面是修改后的代码:#include<stdio.h>int main(){ int n, m, c, d, e; c = 0; scanf("%d %d", &n, &m); d = 0; e = m; int a[n]; for (c = 0; c < n; c++) { a[c] = 1; } int f = -1; for (d = 1; d <= n; d++) { // 循环编号应该从1开始 for (c = 1; c <= m; c++) { // 循环人数也应该从1开始 if (d % c == 0) { // 判断是否整除 a[c-1] *= f; // 对应编号为c-1的元素更新状态 } } } for (n = 0; n < e; n++) { switch (a[n]) { case 1: printf("%d, ", n + 1); // 输出状态为1的编号 break; case -1: break; default: break; } } printf("\b"); // 删除最后一个多余的逗号 return 0;}
在修改后的代码中,我修正了循环的起始和结束条件,以及数组元素的索引问题。另外,我也删除了不必要的空字符串输出,并通过\b删除了结果末尾的多余逗号。这样修改后的代码应该能够正确输出开灯的编号了。
球一个最佳答案谢谢啦!这对我非常重要!   |