效果如下:

我是怎么想的:

总共需要打印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. [Luogu4169][Violet]天使玩偶/SJY摆棋子

    luogu 题意 一个平面上有\(n\)个点,\(m\)次操作,每次新增一个点,或者是询问离某个点最近的点的距离.这里的距离是曼哈顿距离. \(n,m\le3*10^5\) sol 写一发\(CDQ\ ...

  2. SQL Server: Top 10 Secrets of a SQL Server Expert

    转载自:http://technet.microsoft.com/en-us/magazine/gg299551.aspx Many companies have downsized their IT ...

  3. noip济南清北冲刺班DAY2

    题解: 贪心+dp 30% N<=5  5!枚举一下 20%  高度没有的时候,高度花费就不存在了,将ci排序, 从小到大挨个跳.另外,20% 准备跳楼没有花费,那么跳 楼的高度一定是从小到大, ...

  4. 对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。

    <property name="connection.url">jdbc:mysql://127.0.0.1/cache?useUnicode=true&cha ...

  5. PAT1018——最短路加DFS

    http://pat.zju.edu.cn/contests/pat-a-practise/1018 在杭州各个点,有很多自助自行车的点,最大容纳点为CMAX,但比较适合的情况是CMAX/2, 现在从 ...

  6. nginx虚拟主机的配置

    nginx虚拟主机的配置 server { listen ; server_name 127.0.0.1; access_log off; root /var/www/html/; location ...

  7. MySQL模式匹配(LIKE VS REGEXP)

    3.3.4.7. 模式匹配 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式. SQL模式匹配允许你使用“_”匹配任何单个字符, ...

  8. (转)C# Socket异步通信

    本文转载自:http://www.cnblogs.com/llllll/archive/2009/05/13/1455703.html 服务器端 TCPServer 1.使用的通讯通道:socket ...

  9. Java-Maven-Runoob:Maven 项目模板

    ylbtech-Java-Maven-Runoob:Maven 项目模板 1.返回顶部 1. Maven 项目模板 Maven 使用 archetype(原型) 来创建自定义的项目结构,形成 Mave ...

  10. AngularJS:Http

    ylbtech-AngularJS:Http 1.返回顶部 1. AngularJS XMLHttpRequest $http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. 使 ...