效果如下:

我是怎么想的:

总共需要打印6行字母,那么就需要一个循环来控制打印第几行,大概代码如下:

for(int i=0;i<6;i++)

{

}

每行都会打印字母,而且循环越往后,需要打印的字母越多,那么每行打印字母也需要一个循环,比如打印F到A这需要一个循环,其它也是同样的道理。每行打印完都需要输出一个换行,所以代码变成下面这样

for(int i=0;i<6;i++)

{

  for(char j='F';XXXXX;j--)

  {

  }

  printf("%c",j);

}

因为每行都是从F开始打印的,所以j的初始值肯定是F,有因为每次是从F往A这个方向打印的,那么肯定有j--这个操作,上面的代码不难理解。

真正难的是j=‘F’后面这个进入循环的条件,这个怎么想。

用列举法推出来的。

当i=0的时候,需要打印第一行字母,此时j='F',那么我们给j一个什么样的关系表达式,才能够让j只能取到'F'这一个值呢?

是不是j>'F'-1

char j='F',j>'F'-1;j-- j的定义域只能取到‘F’

当i=1的时候,需要打印第二行字母,也就是需要里面的循环执行两次,那么给j一个什么样的表达式,才能够让j的值渠道'F'和‘E’呢? 是不是j>'F'-2;

我们不能直接把'F'-1和'F'-2这两个表达式直接写进去,不然输出的是固定值,我们想要这两个值和i发生一定的关系

当i=0时候,我们希望j>'F'-1='F'-(0+1)

当i=1时候,我们希望j>'F'-2='F'-(1+1)

当i=3时候,我们希望j>'F'-4='F'-(3+1)

所以通项公式就是j>'F'-(i+1)

最后代码如下:

int main(void)
{ for (int i = ; i < ; i++)
{
for (char j = 'F'; j > 'F'-(i+); j--)
{
printf("%c",j);
} printf("\n");
} return ;
}

update:2018.10.2

这次思考过程和上次完全不一样。

首先需要一个外层循环来控制打印的行,共需要打印6行,每循环一次打印一行数据。还需要一个内层循环控制要打印的字符

由于,内存循环每次都是从F开始打印的,所以内存循环每次都要初始化变量为F,每次打印一个字符后就让字符减去1,这样就可以打印比F小的那个字符了,那要打印多少个字符呢?我们需要用一个变量来记录,然后每进行一次外层循环这个变量的值都要+1,因为第二行要比第一行多打印一个字符。

int main(void)
{
char ch ;//当前要打印的字符
int row_count=;//每行需要打印额字符个数,从第一行开始
int count;//打印了几个字符了 for (int i = ; i < ; i++,row_count++)
{
for (ch='F',count = ; count < row_count; count++,ch--)
{
printf("%c",ch);
}
printf("\n");
} return ;
}

c语言实践 打印字母三角形的更多相关文章

  1. c语言实践打印字母三角形

    效果如下: int main(void) { char ch = 'A';//当前要打印的字符 ;//每行要打印字符的个数 ; i < ; i++,count++) { ; j < cou ...

  2. c语言实践 打印数字三角形

    效果如下图: 思路就是外层循环控制要打印的行数,里层循环控制每行打印的数字个数. int val = 65; for (int i = 0; i < 6; i++) { for (int j = ...

  3. c语言实践 打印三角形

    效果如下: 我是怎么考虑这个问题的. 首先共有5行,那么我们需要一个循环,让这个循环走5遍. 那么我们有个大概的代码结构 for(int i=0;i<5;i++) { } i的定义域是[0,4] ...

  4. C 语言实例 - 创建各类三角形图案

    C 语言实例 - 创建各类三角形图案 创建三角形图案. 实例 - 使用 * 号 #include <stdio.h> int main() { int i, j, rows; printf ...

  5. ytu 1985:C语言实验——保留字母(水题)

    C语言实验——保留字母 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 136  Solved: 59[Submit][Status][Web Board] ...

  6. 《程序设计语言——实践之路》【PDF】下载

    程序设计语言--实践之路>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 本书在美国大学已有使用了十余年,目前被欧 ...

  7. 《程序设计语言——实践之路(英文第三版)》【PDF】下载

    <程序设计语言--实践之路(英文第三版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382234 内容简介 <程序设计语 ...

  8. 《程序设计语言——实践之路【PDF】下载

    <程序设计语言--实践之路[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 <程序设计语言--实践之路(第3版 ...

  9. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

随机推荐

  1. Bootstrap-table学习笔记(一)

    第一次使用Bootstrap-table这个表格插件,记录一下使用过程中遇到的问题. =================== | 引入CSS文件 <link rel="styleshe ...

  2. zju 校队选拔 被虐记

    选拔已经开始了三天才想起来写游记 QAQ.. 7.12 弱弱的Sky_miner来到了ZJU,过程中被热成狗... 然后见到了无数大二大三的大佬们,过程中被热成狗... 后来听靖哥哥说集训的注意事项, ...

  3. browser-sync 服务器使用

    1. 安装 npm install browser-sync or yarn add browser-sync 2. 使用(集成gulp) 备注: gulp 安装使用此处不介绍 默认的端口是3000, ...

  4. phpcms文档

    http://www.phpcms.cn/doc/PHPCMSDocumentor/cache_module.html http://www.cnblogs.com/Braveliu/p/507493 ...

  5. Maven引入jar包中的配置文件未被识别

    我用的办法是直接将jar包中的配置文件复制出来,粘贴到我自己项目中的配置文件中,讯飞语音的jar包就有这种情况.

  6. PL/SQL 训练08--触发器

    --什么是触发器呢?--一触即发,某个事件发生时,执行的程序块?--数据库触发器是一个当数据库发生某种事件时作为对这个事件的响应而执行的一个被命名的程序单元 --适合场景--对表的修改做验证--数据库 ...

  7. C#一个判断子串在父串中出现的次数

    /// <summary> /// 计算字符串中子串出现的次数 /// </summary> /// <param name=”str”>字符串</param ...

  8. 整合多个py文件接口的unittest。suite执行方法

    1.每个接口用例为一个.py文件.内容如下: getAdMakeMoneyList文件: # coding=utf-8import xlrdimport requestsimport unittest ...

  9. Word2Vec之Skip-Gram模型

    理解 Word2Vec 之 Skip-Gram 模型 模型 Word2Vec模型中,主要有Skip-Gram和CBOW两种模型,从直观上理解,Skip-Gram是给定input word来预测上下文. ...

  10. Linux批量“解压”JAR文件

    当你需要”解压“很多jar文件时,可以通过很多方式进行,比如下面这种 1,列出每一个jar文件名,逐个展开 for i in $(ls *sour*.jar);do jar xvf $i;done