首先献上我的源代码
#include <stdio.h>
int main()
{
int n=0,m=0,i=0,j=0,k=0,p=0;
char c;
scanf("%d",&n);
for(k=1;k<=n;k++)
{
getchar();
scanf("%c %d",&c,&m);
for(i=1; i<=m; i++)
{
for(j=1; j<=m-i; j++)
printf(" ");
for(p=1; p<=2*i-1; p++)
printf("%c",c);
printf("\n");
}
for(i=1; i<m; i++)
{
for(j=1; j<=i; j++)
printf(" ");
for(p=1; p<=(m-i)*2-1; p++)
printf("%c",c);
printf("\n");
}
}
return 0;
}
菱形的输出是个比较基础的题目,考察的主要是对于循环嵌套的利用,用已知边长n来求相应的菱形图形,求菱形的方式有很多种,目前先介绍最容易理解的暴力拆解法,先求上半部分的三角形,再求下半部分的倒三角。
如果分开来求,这个题目的思路便迎刃而解了,要考虑到要输入符号的次数,符号主要是2n-1的等差数列
最后整合便是需要达到的目的
注意,因为题目是需要输入多组数进行,再循环内的scanf("%c %d",&c,&m);会读取上一个数据介绍结束时的回车键符号,因为第一个输入为字符,需要加一个getchar();来读取掉回车符。本题并没有什么难点,最重要的是了解菱形的思路过程和注意scanf("%c %d",&c,&m);中的字符读取问题。
本篇是为了让自己发现错误,如果有帮助到您,那么非常荣幸。