[练习题】【for循环】输入字符,输出一个菱形

题目要求:

       用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长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 的关系时,如下图

如此,即可得到条件语句。

个人理解,欢迎交流,如有错误,还请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值