牛客编程入门 BC6小飞机
1.题目
KiKi学会了printf在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机。
2.初始化
将i设定为行数,j设定为列数。首先初始化i和j。
int i = 0, j = 0;
总共会打印六行、十二列。
for (i = 1; i <= 6; i++)
for (j = 1; j <= 12; j++)
3.打印飞机尾部
当打印到第一行或第二行中的第五列或者第七列时,打印’*'。
if ((j == 6 || j == 7) && (i == 1 || i == 2))
{
printf("%c", '*');
}
4.打印飞机身部
第三行或第四行全部打印’*'。
if (i == 3 || i == 4)
{
printf("*");
}
5.打印飞机头部
当打印到第五行或第六行中的第四列或者第八列时,打印’*'。
if ((i == 5 || i == 6) && (j == 5 || j == 8))
{
printf("*");
}
6.其余打印
其余打印空格
printf(" ");
7.总结
本题考查我们对for和if循环语句的理解以及对逻辑运算符的运用。本题包含了多层的for和if嵌套,比较容易出错。
注意事项
- if和else总是一一对应的。
- 如果有多个if和else, else总是跟最接近的if匹配。
- for相对于while循环的优点为:for将初始化、判断和调整总结到一起。
完整代码如下所示:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0, j = 0; //i为行,j为列
for (i = 1; i <= 6; i++) //输出六行
{
for (j = 1; j <= 12; j++) //输出十二列
{
if ((j == 6 || j == 7) && (i == 1 || i == 2)) //在第五列或第六列并且在第一行或者第二行
{
printf("%c", '*');
}
else
{
if (i == 3 || i == 4)
{
printf("*"); //第4行或第三行全部打印
}
else
{
if ((i == 5 || i == 6) && (j == 5 || j == 8)) //第五行或第六行并且第五列或第八列
{
printf("*");
}
else
{
printf(" "); //其余打印空格
}
}
}
}
printf("\n");
}
return 0;
}
因追求代码的格式,没有省略一些大括号。