前言
最近在学习《C语言大学教程(第八版)》第四章课后习题4.31-4.32时,遇到了一个问题,题目中要求用printf语句每次打印一个星(*)或一个空格,最少的使用printf语句,结合这两点,最少的使用次数为2次。
一般情况下,大都可以想到,使用4次printf语句,完成本道题目的打印,即先打印上半部分再打印下半部分。为此,想挑战一下,既然能想到最少使用printf语句的次数为2次,那要如何实现呢,思考了许久,后来查阅了chatgpt,给到了一种解法。
可能你会问,问了chatgpt,那还有啥可说的呢。乍一看,此话当真如此。可实际的情况是,根据chatgpt给到的解法,对for循环语句的使用玩法有了更进一步的了解,打开了思路,有一种豁然开朗的感觉,得到了一种启发。因此,决定写一篇心得体会。还是老话长谈,一方面做一下记录,一方面希望可以帮到有需要的同学。
这道题,有如下几个要求:
1.用printf语句每次打印一个星(*)或一个空格。
2.尽可能多地使用循环(通过嵌套的for语句)来最少地使用printf语句。
真正的难点在于最少地使用printf语句,根据上述两点的要求,最少是两次,一次是printf(“%s”, " “);打印空格,一次是printf(”%s", “*”);打印星号。
思考
需要解决的关键是如何找到合适的for循环控制条件,根据书中以往的知识,我们知道不要在循环体内,去修改for语句头里面的变量,不然会导致一个隐蔽的问题,经测试会导致无限循环。