「PAT乙级真题解析」Basic Level 1036 跟Obama一起编程 (问题分析+完整步骤+伪代码描述+提交通过代码)
其实题目就是要你画一个正方形, 跟Obama没关系.
#算法#c语言#pat考试#数据结构#需求分析
Table of Contents
乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
问题题设
其实题目就是要你画一个正方形, 跟Obama没关系. 输入是正方形边长n, 由于要画是的轮廓, 所以只需要确定中间空白部分的长度. 中间空白部分的长度 = n - 2
完整描述步骤
- 获取正方形边长 n 和 符号 c
- 计算行数
- 输出 n 个符号 c
- 重复以下过程 (行数-2) 次:
- 输出 1 个符号 c
- 输出 n - 2个空白符
- 输出 1 个符号 c
- 输出 n 个符号 c
伪代码描述
- get input of edge length and signal: n, c
- rows = (int)(length / 2.0 + 0.5);
- for (int i = 0; i < rows; i++): if i == 0 or i == row-1: for (int i = 0; i < n; i++): print(c) else: print(c) for (int j = 0; j < n - 2; j++): print(" ") print(c) print("\n")
完整提交代码
/*
# 问题题设
其实题目就是要你画一个正方形, 跟奥巴马没关系.
输入是正方形边长n, 由于要画是的轮廓, 所以只需要确定中间空白部分的长度.
中间空白部分的长度 = n - 2
# 完整描述步骤
1. 获取正方形边长 n 和 符号 c
2. 计算行数
2. 输出 n 个符号 c
3. 重复以下过程 (行数-2) 次:
- 输出 1 个符号 c
- 输出 n - 2个空白符
- 输出 1 个符号 c
4. 输出 n 个符号 c
# 伪代码描述
1. get input of edge length and signal: n, c
2. rows = (int)(length / 2.0 + 0.5);
3. for (int i = 0; i < rows; i++):
if i == 0 or i == row-1:
for (int i = 0; i < n; i++):
print(c)
else:
print(c)
for (int j = 0; j < n - 2; j++):
print(" ")
print(c)
print("\n")
*/
#include <stdio.h>
int main()
{
int length;
char sign;
scanf("%d %c", &length, &sign);
int rows = (int)(length / 2.0 + 0.5);
for (int i = 0; i < rows; i++)
{
if (i == 0 || i + 1 == rows)
{
for (int j = 0; j < length; j++)
printf("%c", sign);
}
else
{
printf("%c", sign);
for (int j = 0; j < length - 2; j++)
printf(" ");
printf("%c", sign);
}
printf("\n");
}
return 0;
}