1.“空心”正方形图案
输入描述:
多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。
输出描述:
针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。
分析:
假设输入a,那么在第1,a行一直打印“* ”,第2至a-1行的第1,a列打印“* ”,其余地方打印两个空格,一行结束,打印换行符。
#include <stdio.h>
int main()
{
int a, b;
int i = 0;
int j = 0;
while (scanf("%d", &a) != EOF) //多组输入
{
for (i = 1; i <= a; i++) //共a行
{
if (i == 1 || i == a) //第一行和第a行一直打印“* ”*
{
for (j = 1; j <= a; j++)
{
printf("* ");
}
printf("\n");//一行结束换行
}
else
{
for (j = 1; j <= a; j++)
{
if (j == 1 || j == a)//其余行的第一列和第a列打印“* ”
{
printf("* ");
}
else
{
printf(" ");//剩下部分打印“ ”(两个空格)
}
}
printf("\n");//一行结束换行
}
}
}
return 0;
}
2.X形图案
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
分析:
假设输入5,那么在第a行a列(1<=a<=5),以及a行6-a列(例如第1行,第5列)打印“*”,
其余地方打印空格,一行结束,打印换行符。
#include <stdio.h>
int main()
{
int a = 0;
int i = 0;
int j = 0;
int k = 0;
while (scanf("%d",&a)!=EOF)//多组输入
{
for(i = 1;i<=a;i++)
{
for(j=1;j<=a;j++)
{
if(i==j||i+j==a+1)
{
printf("*");
}
else {
printf(" ");
}
}
printf("\n");//内部循环结束,换行
}
}
return 0;
}