c语言题目-循环打印字母和下划线

题目

利用for循环打印以下图案
在这里插入图片描述

我的思路

这个图案大致分为两部分,一部分是不变的下划线循环打印,一部分是连续的字母。

那么就可以拆解为两个问题:1、如何根据循环次数打印重复的下划线,即第n次循环就打印“n-1”条下划线? 2、如何根据循环次数打印连续字母?

解决:1、外层循环控制总的循环次数,内层循环根据当前循环次数确定要输出的下划线数量。即外层i=1;i<=n;i++和内层j=1;j<=i;j++(大概是这样的形式) 2、根据ASCII码表发现F是70,E等字母逐渐-1,printf(“%c”,70-j)(大概形式),也就是把字母转换成数值输出就行

我的代码

#include<stdio.h>

int main(){
	int i,j;
	for(i=1;i<=7;i++){
		for(j=1;j<=i-2;j++){
			if(i>=3){
				printf("_");//循环打印下划线
			}
		}
		for(j=1;j<=i-1;j++){
	        	printf("%c",70-j+1);//循环打印字母
		}
		printf("\n");
	}
	return 0;
}

改进的代码

#include <stdio.h>
 
int main(int argc, char *argv[])
{
        int i, j;
        char ch = 'F';
 
        printf("please input char:"); //输入一个字符,然后每一行依次递减输出
        scanf("%c", &ch);
         
        for (i = 0; i <= ch - 'A' ; i++) { 
                for(j = 0; j < i; j++)
                        putchar('_'); 
 
                for(j = 0; j <= i; j++)
                        putchar(ch-j);
 
                putchar('\n');
        }
 
 
        return 0;
}

经验

1、以前没有试过一个外循环套两个内循环(for循环)的形式,所以一开始没想到

2、一开始都想到“几次循环就打印几条下划线了",但是还是没想到用

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i; j++) {

这个循环形式,记住这种循环就是:外层循环控制总的循环次数,内层循环根据当前循环次数确定要输出的下划线数量。

3、编程问题很多都是需要把问题转化为数值问题,比如这里字母问题转化为ASCII码值问题。

4、下次还应该从问题里发现更多的规律,其实这里还隐含着一个规律就是打印的行数跟最大字母和最小字母的差值有关

5、打印字符还是用putchar()好一点,以后要习惯用这个函数

6、如果循环打印的数量等不对,除了用在for循环里用if控制,还可以直接修改for循环的循环条件,修改循环条件的数目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值