当前位置:   article > 正文

【C Primer Plus】第5章

【C Primer Plus】第5章

目录

一、知识点查漏补缺

二、课后编程练习

题目1

题目2

题目3

题目4

题目5

题目6

题目7

题目8

题目9


一、知识点查漏补缺

【1】C90标准新增了一元运算符+,它不会改变运算对象的值或符号,只能如下使用:dozen = +12;

【2】在计算浮点数和整数之间的运算时,编译器会把两个运算对象转换成相同的类型。这就是自动类型提升。

【3】char、short类型数据在运算时,都会自动类型提升为int类型。其他的类型会提升至级别更高的类型。

【4】C99规定使用趋零截断(直接丢弃小数部分)。

【5】负数求模如何进行?答:看第一个运算对象的符号。若第一个运算对象是负数,则结果为负数;否则,结果为正数。例如:11%-2=1. -11%2=-1. -11%-2=-1.

【6】++运算符和--运算符有很高的优先级,只有圆括号的优先级比它们高。

【7】序列点是指程序执行的点。

【8】当作为函数参数传递时,char和short被转换成int,float被转换成double。


二、课后编程练习

题目1

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #define MIN_PER_HOUR 60
  4. int main()
  5. {
  6. while (1) {
  7. int input = 0;
  8. printf("请输入分钟数:");
  9. scanf("%d", &input);
  10. if (input <= 0)
  11. break;
  12. printf("时间:%d小时 %d分钟\n", input / MIN_PER_HOUR, input % MIN_PER_HOUR);
  13. }
  14. return 0;
  15. }

【2】结果:

题目2

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. int main()
  4. {
  5. //用户输入整数
  6. int num = 0;
  7. printf("请输入一个整数:");
  8. scanf("%d", &num);
  9. //打印从该数到比其大10的所有整数
  10. for (int i = num; i <= num + 10; ++i) {
  11. printf("%d ", i);
  12. }
  13. return 0;
  14. }

【2】结果:

题目3

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #define DAY_PER_WEEK 7
  4. int main()
  5. {
  6. while (1) {
  7. //用户输入天数
  8. int day = 0;
  9. printf("请输入天数:");
  10. scanf("%d", &day);
  11. //输入判定,非正值则退出循环
  12. if (day <= 0)
  13. break;
  14. //将天数转换为周数和天数
  15. int week = day / DAY_PER_WEEK;
  16. int restDay = day % DAY_PER_WEEK;
  17. printf("%d days are %d weeks, %d days.\n", day, week, restDay);
  18. }
  19. return 0;
  20. }

【2】结果:

 题目4

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #define CM_TO_FEET 1 / 30.48
  4. #define FEET_TO_INCH 12
  5. void convertHeight(double height) {
  6. double feet = height * CM_TO_FEET;
  7. double inch = (feet - (int)feet) * FEET_TO_INCH;
  8. printf("%.1lf cm = %d feet, %.1lf inches\n", height, (int)feet, inch);
  9. }
  10. int main()
  11. {
  12. //用户输入身高
  13. double height;
  14. printf("Enter a height in centimeters: ");
  15. scanf("%lf", &height);
  16. //厘米转换为英尺+英寸
  17. convertHeight(height);
  18. //循环读取用户输入
  19. while (1) {
  20. printf("Enter a height in centimeters (<=0 to quit): ");
  21. scanf("%lf", &height);
  22. if (height <= 0)
  23. break;
  24. //厘米转换为英尺+英寸
  25. convertHeight(height);
  26. }
  27. printf("bye\n");
  28. return 0;
  29. }

【2】结果:

题目5

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. int main()
  4. {
  5. //用户输入天数
  6. int day;
  7. printf("请输入天数:");
  8. scanf("%d", &day);
  9. //计算day天里赚了多少钱
  10. int sum = 0;
  11. for (int i = 1; i <= day; i++) {
  12. sum += i;
  13. }
  14. printf("sum = %d\n", sum);
  15. return 0;
  16. }

【2】结果:

题目6

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. int main()
  4. {
  5. //用户输入天数
  6. int day;
  7. printf("请输入天数:");
  8. scanf("%d", &day);
  9. //计算day天里赚了多少钱
  10. int sum = 0;
  11. for (int i = 1; i <= day; i++) {
  12. sum += i * i;
  13. }
  14. printf("sum = %d\n", sum);
  15. return 0;
  16. }

【2】结果:

题目7

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. void printCube(double input) {
  4. printf("%lf 的立方为: %lf\n", input, input * input * input);
  5. }
  6. int main()
  7. {
  8. //用户输入数据
  9. double input;
  10. printf("请输入double类型数据:");
  11. scanf("%lf", &input);
  12. //打印立方值
  13. printCube(input);
  14. return 0;
  15. }

【2】结果:

题目8

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. int main()
  4. {
  5. //打印提示信息
  6. printf("This program computes moduli.\n");
  7. int first, second;
  8. printf("Enter an interger to serve as the second operand: ");
  9. scanf("%d", &second);
  10. printf("Now enter the first operand: ");
  11. scanf("%d", &first);
  12. //显示取模结果
  13. printf("%d %% %d is %d\n", first, second, first % second);
  14. //循环读取
  15. while (1) {
  16. printf("Enter next number for first operand (<= 0 to quit): ");
  17. scanf("%d", &first);
  18. if (first <= 0)
  19. break;
  20. printf("%d %% %d is %d\n", first, second, first % second);
  21. }
  22. printf("Done\n");
  23. return 0;
  24. }

【2】结果:

 题目9

【1】代码:

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. void Temperatures(double Ftempe) {
  4. const double Celsius = 5.0 / 9.0 * (Ftempe - 32.0);
  5. const double Kelvin = Celsius + 273.16;
  6. printf("华氏温度: %.2lf, 摄氏温度: %.2lf, 开式温度: %.2lf\n", Ftempe, Celsius, Kelvin);
  7. }
  8. int main()
  9. {
  10. while (1) {
  11. //用户输入华氏温度
  12. double FTemperature;
  13. printf("请输入一个华氏温度 (q或其他非数字退出):");
  14. if (scanf("%lf", &FTemperature) != 1) {
  15. break;
  16. }
  17. //计算摄氏温度和开式温度
  18. Temperatures(FTemperature);
  19. }
  20. printf("Bye\n");
  21. return 0;
  22. }

【2】结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/627389
推荐阅读
相关标签
  

闽ICP备14008679号