Lab08-小悦的字符菱形
原创2023年3月1日大约 3 分钟...约 782 字
描述
小悦尝试用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形。
输入描述:
输入一个 char 类型字符
输出描述:
输出一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
示例1
输入:
#
输出:
#
###
#####
###
#
答案
解法一:直接打印
#include "stdio.h"
int main() {
char ch;
scanf("%c", &ch);
printf(" %c \n", ch);
printf(" %c%c%c \n", ch, ch, ch);
printf("%c%c%c%c%c\n", ch, ch, ch, ch, ch);
printf(" %c%c%c \n", ch, ch, ch);
printf(" %c \n", ch);
return 0;
}
解法二:通用方法,输入打印的符号 ch 和行数 num
#include "stdio.h"
int main() {
char ch; //打印的符号
int num = 5; //对角线数目
int i, j1, j2; //j为行数
scanf("%c", &ch);
//upper打印上半角
for ( i = 0; i < (num - 1) / 2; i++) {
j2 = i * 2 + 1; //符号数
j1 = (num - j2) / 2; //空格数
while ( j1-- > 0 )
printf(" ");
while ( j2-- > 0 )
printf("%c", ch);
printf("\n");
}
//middle打印中间行
j2 = num;
while ( j2-- > 0 )
printf("%c", ch);
printf("\n");
//lower下半角
for ( i = (num - 1) / 2 + 1; i < num; i++ ) {
j1 = i - (num - 1) / 2; //空格数
j2 = num - j1 * 2; //符号数
while ( j1-- > 0 )
printf(" ");
while ( j2-- > 0 )
printf("%c", ch);
printf("\n");
}
//end
return 0;
}
#include <stdio.h>
int main() {
char ch;
scanf("%c", &ch);
int i, j;
int n = 3; // 设包括对角线在内的上半部分有 n 行
for (i = 1; i <= n; i++) { // 打印第 1 行到对角线(第 n 行)
for (j = 0; j < n - i; j++)
printf(" "); // 先打印每行的空格,第 i 行有 n-i 个空格
for (j = 0; j < 2 * i - 1; j++)
printf("%c", ch); // 再打印每行的字符,第 i 行有 2*i-1 个
printf("\n"); // 打印完每行空格和字符,要换行
}
for (i = 1; i < n; i++) { // 对角线以下部分只有 n-1 行,从 1 到 n-1
for (j = 0; j < i; j++)
printf(" "); // 每行前面的空格依次增加 1 个,第 i 行有 i 个空格
for (j = 0; j < 2 * (n - i) - 1; j++)
printf("%c", ch); // 每行的字符依次减少 2 个,第 i 行有 2*(n-i)-1 个
printf("\n");
}
return 0;
}
公众号:AI悦创【二维码】
AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Linux、Web、Sql」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
你认为这篇文章怎么样?
- 0
- 0
- 0
- 0
- 0
- 0