C语言逻辑循环练习题

题目一:编写程序,用户输入大写字母,产生一个金字塔图案

#include<stdio.h>
#include<stdlib.h>
//每一行都是由:“空格、升序字母、降序字母” 序列构成,只要分析出第i行中有多少个空格、升序字母和降序字母即可。
int main(int argc, char const *argv[])
{
    char ch;    
    scanf("%c",&ch);//输入字母
    if((ch<'A')||(ch>'Z'))
    {
        printf("只接受大写字母\n");
        exit(0);
    }

    int line =ch-'A'+1;;//总共打印几行
    int i,j;
    for(i=1;i<=line;i++){//从第一行开始打印
        for ( j = 0; j < line-i; j++)//打印空格
        {
            printf(" ");
        }
        for( j=0;j<i;j++) //打印升序
        {
           printf("%c",'A'+j); 
        }
        if(i>1){//从第二行开始
         for( j=i-2;j>=0;j--)//打印降序
         {
            printf("%c",'A'+j);
         }
        }
        printf("\n");
    }


    return 0;

}

题目二,打印如下图形

#include <stdio.h>  
  
void printSpaces(int count) {  //打印空格
    for (int i = 0; i < count; i++) {  
        printf(" ");  
    }  
}  
  
void printStars(int count) {  //打印星号
    for (int i = 0; i < count; i++) {  
        printf("*");  
    }  
    printf("\n");  
}  
  
void printDiamond(int rows) {  
    int i;
  
    // 打印上半部分
    for (i = 1; i <= rows; i++) {  
        printSpaces(rows - i);  
        printStars(2 * i - 1);  
    }  
  
    // 打印下半部分
    for (i = rows - 1; i >= 1; i--) { // 相当于逆着打印上半部分
        printSpaces(rows - i);  
        printStars(2 * i - 1);  
    }  
}  
  
int main() {  
    int rows;  
  
    printf("请输入行数: ");  
    scanf("%d", &rows);  
  
    if (rows > 0) {  
        printDiamond(rows);  
    } else {  
        printf("输入错误\n");  
    }  
  
    return 0;  
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值