题目要求:
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形。
分析:虽然这是一个简单的代码题,用printf即可直接求解,但是使用for循环可能会使问题变得更加有趣。
代码思路:一行一行地输出,先输出空格,再输出字符。图解如下
#include<stdio.h>
int main()
{
char ch;
scanf("%c",&ch); //先算前三行
int hangshu; //设行数
for (hangshu = 1; hangshu <= 3; hangshu++)//进行三次循环,代表三行
{
int m, n;
for (m = 1; m <= 3 - hangshu; m++) //把第前三行的空格输出
{
printf(" ");
}
for (n = 1; n <= 2*hangshu -1; n++) //把前三行的字符输出
{
printf("%c", ch);
}
printf("\n"); //每输入一行,进行一次换行
}
int i, j, hangshu2; //再算后两行
for (hangshu2 = 1; hangshu2 <= 2; hangshu2++)//进行两次循环
{
for(i = 0; i < hangshu2; i++) //把后两行的空格输出
{
printf(" ");
}
for(j = 0; j < (-2) * hangshu2 + 5; j++)//把后两行的字符输出
{
printf("%c", ch);
}
printf("\n");
}
return 0;
}
此题唯一比较复杂的是找到for循环语句中的条件语句与行数的关系,可以利用等差数列的知识进行推导,例如求 j 与hangshu2 的关系时,如下图
如此,即可得到条件语句。
个人理解,欢迎交流,如有错误,还请指出。