本地运行结果与洛谷IDE不同,求指点
查看原帖
本地运行结果与洛谷IDE不同,求指点
574566
yixiuge1楼主2021/11/24 00:11

此代码在vs上运行时只需要一个getchar()来读取n和数组之间的回车(我也这么认为)。但在洛谷上提交需要两个getchar();否则x【0】就是-38.


#include<stdio.h>
int main() {
	int n;
	char c;
	int x[100] = { 0 };
	int count = 0;
	scanf("%d", &n);
	getchar();//读取回车
	getchar();

	for (int i = 0; i < n; i++) {
		x[i] = getchar() - 48;
	}//输入
	
	for (int i = 0; i < n; i++) {//每一行都循环一遍输入,共五遍
		switch (x[i]) {
		case 0:printf("XXX"); break;
		case 1:printf("..X"); break;
		case 2:printf("XXX"); break;
		case 3:printf("XXX"); break;
		case 4:printf("X.X"); break;
		case 5:printf("XXX"); break;
		case 6:
		case 7:
		case 8:
		case 9:printf("XXX"); break;
		default:printf("p"); break;
		}
		count++;
		if (count != n) printf(".");//最后一项不要点
		
	}printf("\n"); count = 0;
	for (int i = 0; i < n; i++) {
		switch (x[i]) {
		case 0:printf("X.X"); break;
		case 1:
		case 2:
		case 3:printf("..X"); break;
		case 4:printf("X.X"); break;
		case 5:
		case 6:printf("X.."); break;
		case 7:printf("..X"); break;
		case 8:
		case 9:printf("X.X"); break;
		}
		count++;
		if (count != n) printf(".");
		
	}printf("\n"); count = 0;
	for (int i = 0; i < n; i++) {
		switch (x[i]) {
		case 0:printf("X.X"); break;
		case 1:printf("..X"); break;
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:printf("XXX"); break;
		case 7:printf("..X"); break;
		case 8:
		case 9:printf("XXX"); break;
		}
		count++;
		if (count != n) printf(".");
		
	}printf("\n"); count = 0;
	for (int i = 0; i < n; i++) {
		switch (x[i]) {
		case 0:printf("X.X"); break;
		case 1:printf("..X"); break;
		case 2:printf("X.."); break;
		case 3:
		case 4:
		case 5:printf("..X"); break;
		case 6:printf("X.X"); break;
		case 7:printf("..X"); break;
		case 8:printf("X.X"); break;
		case 9:printf("..X"); break;
		}
		count++;
		if (count != n) printf(".");
		
	}printf("\n"); count = 0;
	for (int i = 0; i < n; i++) {
		switch (x[i]) {
		case 0:printf("XXX"); break;
		case 1:printf("..X"); break;
		case 2:printf("XXX"); break;
		case 3:printf("XXX"); break;
		case 7:
		case 4:printf("..X"); break;
		case 5:
		case 6:
		case 8:
		case 9:printf("XXX"); break;
		}
		count++;
		if (count != n) printf(".");
		
	} 

	return 0;
}

这是提交全过的代码。 这是一个getchar()的运行结果(在vs上这才是正确的) p.XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX .X.X...X...X...X.X.X.X...X.....X.X.X .X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX .X.X...X.X.....X...X...X.X.X...X.X.X .XXX...X.XXX.XXX...X.XXX.XXX...X.XXX

(p是第一个switch——case的default) 求指点。

2021/11/24 00:11
加载中...