效果如下:

我是怎么想的:

总共需要打印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. Java [Leetcode 383]Ransom Note

    题目描述: Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 al ...

  2. 【BZOJ2850】巧克力王国 KDtree

    [BZOJ2850]巧克力王国 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜 欢过于甜的巧克力.对于每一块巧克力,我们设 ...

  3. RESTful Get方式传参json格式后端400 解决方案

    前端采用vue+axios 后端采用spring boot restful 问题: 前端get 请求需要传递array 字段值 后端由于tomcat 版本问题,不支持url接受特殊字符包括 [] {} ...

  4. 学习动态性能表(2)--v$sesstat

    学习动态性能表 第二篇--v$sesstat  2007.5.25 按照OracleOnlineBook中的描述,v$sesstat存储session从login到logout的详细资源使用统计. 类 ...

  5. Oracle中exp,imp(导入导出)数据迁移注意事项

    这几天做开发库schema备份,出现些问题,记录一下.一,exp时,os语言环境和数据库不同时会自动发生转换.   如果操作系统的字符集小于数据库字符集,就可能出现乱码现象.imp时,同理,也是有可能 ...

  6. android中HttpClient的应用(POST方法)

    首先在http://hc.apache.org/downloads.cgi下载HttpClient包 直接看代码 import android.os.Handler; import android.o ...

  7. laravel前后端分离的用户登陆 退出 中间件的接口与session的使用

    在项目开发的过程中,需要有用户的登陆 退出 还有校验用户是否登陆的中间件; 基本思路: 登陆: 前端请求接口的参数校验 用户名 密码规则的校验 用户名密码是否正确的校验; 如果上面的校验都通过的了,把 ...

  8. MVC FileDownLoad

    public ActionResult MatDownload() { string ShopId = Session["ShopId"].ToString(); var self ...

  9. 乘积最大(线性dp)

    乘积最大 时间限制: 1 Sec  内存限制: 128 MB提交: 4  解决: 4[提交][状态][讨论版][命题人:quanxing] 题目描述 今年是国际数学联盟确定的“2000——世界数学年” ...

  10. Linux操作系统下的多线程编程详细解析----条件变量

    条件变量通过允许线程阻塞和等待另一个线程发送信号的方法,弥补了互斥锁(Mutex)的不足. 1.初始化条件变量pthread_cond_init #include <pthread.h> ...