空心正方形
题目
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。
示例
输入:
4 输出: * * * * * * * * * * * *
题目链接
思路
我们只需要将第一行和最后一行,第一列和最后一列输出*即可,其余位置输出空格。
代码:
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
if (n >= 3 && n <= 20) {
for (int i = 0; i < n; i++) {
if (i == 0 || i == n-1) {//输出第一行和最后一行的*
for (int j = 0; j < n; j++) {
printf("* ");
}
}
else {
for (int j = 0; j < n; j++) {
if (j == 0 || j == n-1) {//输出第一列和最后一列的*
printf("* ");
}
else//其余位置输出空格
printf(" ");
}
}
printf("\n");
}
}
}
return 0;
}
X形图案
题目
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
示例1
输入:
6
输出:
* *
* *
**
**
* *
* *
示例2
输入
5
输出
* *
* *
*
* *
* *
题目链接
思路
通过观察示例,我们发现输入的数字是奇数时,图案最中间只有一个*,其余行均输出两个*。而若输入的数字为偶数时,图案最中间两行排列一样,且都是输出两个*。输入的数字等于输出的行数和列数,即使用两个for循环搞定,关键是图案每行都输出两个‘*’字符(除输入奇数时的最中间一行为一个‘*’),其余均用空格字符输出。
我们发现输出时*的位置是第i行的第i个和第a-i-1个。
代码:
#include <stdio.h>
int main() {
int a = 0;
while (scanf("%d", &a) != EOF) {
if ((a >= 2) && (a <= 20)) {
for (int i = 0; i < a; i++) {
// 移除了内层 for 循环中对 j 的重新声明
for (int j = 0; j < a; j++) {
if ((j == i) || (j == (a - i - 1))) {
printf("*");
}
else {
printf(" ");
}
}
// 每完成一行的打印后换行
printf("\n");
}
}
}
return 0;
}
祝大家生活愉快。
标签:输出,正方形,示例,int,空心,图案,牛客,输入 From: https://blog.csdn.net/2303_80645930/article/details/141996183