《C语言大学教程(第八版)》第五章 课后习题 5.19

您所在的位置:网站首页 宜贷网登录网站是什么 《C语言大学教程(第八版)》第五章 课后习题 5.19

《C语言大学教程(第八版)》第五章 课后习题 5.19

2023-06-16 15:58| 来源: 网络整理| 查看: 265

前言   如果前面四个章节,认真学习了,这三道题目,会让你更加深刻的感受到,认真读书,这四个字究竟是什么程度。特别是,5.21这道题目,把一个细节放大了,即需要注意字符的输入。 在这里插入图片描述 分析   在5.21这道题目中,需要我们输入要绘制的图形,图形在这里是用字符来表示。在每次输入后,都需要按下回车键把内容输入,回车键即换行符“\n”本身属于字符,也就是说,每次按下回车键会对应产生一个字符为换行符“\n”,它也会被读取。所以,我们要对其进行处理,过滤掉。   在第4章,4.7节,switch多重选择语句的示例中,有提到过相关内容。在5.21这道题目中,不太适合选用switch多重选择语句,那就要对该问题使用别的方法进行处理。 在这里插入图片描述 解决   5.19题目:

#include void matrix(int side); int main(void) { int x; printf("%s", "Enter a integer: "); scanf("%d", &x); matrix(x); } void matrix(int side) { for (int i = 1; i printf("%s", "*"); } puts(""); } }

  运行结果: 在这里插入图片描述   5.20题目:

#include void matrix(int side, char fillCharacter); int main(void) { int x; printf("%s", "Enter a integer: "); scanf("%d", &x); matrix(x, '#'); } void matrix(int side, char fillCharacter) { for (int i = 1; i printf("%c", "*"); } puts(""); } }

  注意,打印时使用%c,而不是%s。%c用来打印单个字符,%s用来打印字符串。   在第2章,2.7节,安全的C程序设计中,有讲到关于%s的使用,如下图所示。 在这里插入图片描述 在这里插入图片描述   同样,在第4章,4.7节,switch多重选择语句,有讲到相关的内容,如下图所示。 在这里插入图片描述 在这里插入图片描述   运行结果: 在这里插入图片描述   5.21题目:

#include void matrix(int side, char fillCharacter); int main(void) { int x; char y; printf("%s", "Enter a integer: "); scanf("%d", &x); printf("%s", "Enter a char: "); scanf(" %c", &y); matrix(x, y); } void matrix(int side, char fillCharacter) { for (int i = 1; i printf("%c", fillCharacter); } puts(""); } }

  注意,在scanf中的%c前面,添加一个空格。   当用户输入一个整数并按下回车时,会在输入缓冲区中留下一个换行符。当使用scanf读取字符时,它会读取这个换行符,而不是等待用户输入。为了解决这个问题,在scanf语句中的%c之前加一个空格,以消耗掉换行符。   在 C 语言中,空格字符(包括空格、制表符和换行符)在 scanf 函数中的格式字符串中具有特殊的含义。当 scanf 遇到空格字符时,它会尝试从输入缓冲区中跳过任意数量的空格字符(包括换行符)直到遇到非空格字符为止。   运行结果: 在这里插入图片描述   至此,程序可以绘制各种形状的图形。   需要注意的点,在第4章,4.7节,switch多重选择语句的示例中,有提到过处理“换行”、“tab”和“空格”字符相关内容。那里使用的是switch多重选择语句,同时,也提到switch多重选择语句中的case只能进行整型数据判断,显然在5.21这道题目中不适合使用,需要对此查询相应的解决办法。 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3