社区讨论

全RE,本地输出乱码,请问各位大佬哪里有问题

P5730【深基5.例10】显示屏参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo7k81pq
此快照首次捕获于
2023/10/27 03:10
2 年前
此快照最后确认于
2023/10/27 03:10
2 年前
查看原帖
照着书本的代码写的,检查了好多遍,但是没有发现问题,请大佬们帮忙看看到底哪里有问题?
代码:
CPP
#include <iostream>
using namespace std;

int main()
{
	int tubes[10][8] = {  // 数码 i 的第 j个显示管,tubes[i][0] 表示数码 i 要显示几根显示管,tubes[i][j] 表示数码 i 的第 j 个显示管是什么
		{6, 0, 1, 2, 4, 5, 6}, {2, 2, 5}, {5, 0, 2, 3, 4, 6}, {5, 0, 2, 3, 5, 6},  // 0123
		{4, 1, 2, 3, 5}, {5, 0, 1, 3, 5, 6}, {6, 0, 1, 3, 4, 5, 6}, {3, 0, 2, 5},  // 4567
		{7, 0, 1, 2, 3, 4, 5, 6}, {6, 0, 1, 2, 3, 5, 6}  // 89
	};
	int dot[7][3][2] = {  // 每个显示管的 3 个点相对于左上角的坐标偏移
		{{0, 0}, {0, 1}, {0, 2}},
		{{0, 0}, {1, 0}, {2, 0}},
		{{0, 2}, {1, 2}, {2, 2}},
		{{2, 0}, {2, 1}, {2, 2}},
		{{2, 0}, {3, 0}, {4, 0}},
		{{2, 2}, {3, 2}, {4, 2}},
		{{4, 0}, {4, 1}, {4, 2}}
	};
	char num[110], out[5][500];
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> num[i];
	// 初始化输出列表
	for (int i = 0; i < 5; i++)  // 行
		for (int j = 0; j < 4 * n - 1; j++)  // 列
			out[i][j] = '.';
	for (int i = 0; i < n; i++)
	{
		int basex = 0, basey = i * 4, digit = num[i] - '0';  // basex 和 basey 是每个数字左上角的坐标值, digit 是正在处理哪一个数码(转换成 int)
		for (int j = 1; j <= tubes[digit][0]; j++)  // 处理每个要被点亮的显示管
		{
			int tubenum = tubes[digit][j];  // 第几个显示管点亮
			out[basex + dot[tubenum][0][0]][basey + dot[tubenum][0][1]] = 'X';
			out[basex + dot[tubenum][1][0]][basey + dot[tubenum][1][1]] = 'X';
			out[basex + dot[tubenum][2][0]][basey + dot[tubenum][2][1]] = 'X';
		}
	}
	for (int i = 0; i < 5; i++, cout << endl)
		for (int j = 0; i < 4 * n - 1; j++)
			cout << out[i][j];
	
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...