PAT B1036解题过程

题目大致意思: 输入正方形的宽和 组成边的字母,输出 一个正方形 图案;

思考: 因为行间距和 列间距不一样 ,所以实际我们要输出的行数是列数的一半
还要考虑到一种情况, 输入的列数分奇数和偶数, 当是奇数时 ,行数为row=col/2+1,
代码思路: 先用for 循环输出第一行,再用for循环输出第二行到倒数第二行,最后也是for循环输出最后一行;

//比较麻烦的一种写法, 有一点小毛病,我还没发现.欢迎和我讨论
#include<cstdio>
int main(){
	int row, col;
	char a;
	scanf("%d,%c", &col, &a);
	if (col % 2 == 1) row = col / 2 + 1;
	else row = col / 2;
	for (int i = 0; i < col; i++){
		printf("%c", a);//先输出第一行图案
	}
	printf("\n"); //开始换行进入第二行
	for (int i = 1; i <= row - 2; i++){
		printf("%c", a);
		for (int j = 1;j <= col - 2; j++){
			printf(" ");
		}
		printf("%c\n", a);

	}
	for (int i = 1; i <= col; i++)printf("%c\n", a);
	return 0;
}
// 简单的写法
#include<iostream>
using namespace std;
int main(){
	int n; char c;
	cin >> n >> c;
	int r = n / 2 + n % 2;
	for (int i = 0; i < n; i++){
		cout << c;
	}
	cout << endl;
	for (int i = 0; i < r - 2; i++){
		cout << c;
		for (int j = 0; j < n - 2; j++)
			cout << " ";
		cout << c << endl;  

	}
	for (int i = 0; i < n; i++) 
		cout << c;  //此处不能加endl !!!!   应当删除!!!    
	return 0;
}

第一次写代码,用时1小时半,期间补了许多遗忘的知识点

继续战斗
未完待续

猜你喜欢

转载自blog.csdn.net/qq_33458689/article/details/89638730