原题附上,对于这题,我提供了两种解法。
第一种是直接用printf函数,按照v加空格的方法,原代码如下
之后我尝试着用for循环加上if判断语句来写,尝试了n遍之后,在vs2019上运行成功,但是在牛客网上失败。
接下来,我来分享一下我的心路历程。
首先使用for循环确定行数和列数,再用if判断语句,第一次只考虑到了第一行,出现了以下情况。
所以第二次想的时候,就思考二三行的判断条件:
if((x==1||2)&&((y<x)||(y>(4-x))))
//x==1||2是判断二三行,第一行结束后,进入二三行
//((y<x)||(y>(4-x))这是来用来判断空格的位置
总结来说就是for语句加上if else的使用,最终代码如下。
#define _CRT_SECURE_NO_WARNINGS
2 #include<stdio.h>
3 int main()
4 {
5 char a;
6 int x, y;
7 scanf("%c", &a);
8 for (x = 0;x < 3;x++)
9 {
10 for (y = 0;y < 5;y++)
11 {
12 if ((y <= x) || (y >= (4 - x)))
13 {
14
15 if ((x == 1 || 2) && ((y < x) || (y > (4 - x))))
16 {
17 printf(" ");
18 }
19 else printf("%c", a);
20 }
21 else { printf(" "); }
22
23 }
24 printf("\n");
25 }
26 return 0;
27 }
文章的质量不高,望广大读者包容,谢谢。