代码
6.1 summing.c
根据用户从键盘输入的整数进行求和,键入字母q结束输入,然后输入结果。程序利用了scanf()的返回值来结束循环。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
long sum = 0L; /* 把sum初始化为0 */
long num;
int status;
printf("Please enter an integer to be summed ");
printf("(q to quit): ");
status = scanf("%ld", &num);
while (status == 1) {
sum += num;
printf("Please enter next integer (q to quit): ");
status = scanf("%ld", &num);
}
printf("Those integers sum to %ld.\n", sum);
return 0;
}

注意:
status = scanf("%ld", &num);
while (status == 1) {
/* 循环行为 */
status = scanf("%ld", &num);
}
可以替换为
while (scanf("%ld", &num) == 1) {
/* 循环行为 */
}
把int类型的变量status替换为_Bool类型的变量input_is_good。给布尔变量取一个能表示真或假值得变量名是一种常见得做法。
boolean.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main(void)
{
long num;
long sum = 0L;
_Bool input_is_good;
printf("Please enter an integer to be sumed ");
printf("(q to quit): ");
input_is_good = (scanf("%ld", &num) == 1);
while (input_is_good) {
sum += num;
printf("Please enter next integer (q to quit): ");
input_is_good = (scanf("%ld", &num) == 1);
}
printf("Those integers sum to %ld.\n", sum);
return 0;
}
C99提供了stdbool.h头文件,该头文件让bool成为_Bool的别名,而且还把true和false分别定义为1和0的符号常量。包含该头文件后,写出的代码可以与C++兼容,因为C++把bool、true和false定义为关键字。
6.3 cmpflt.c
比较浮点数时,尽量只使用<和>。因为浮点数的舍入误差会导致在逻辑上应该相等的两数却不相等。例如3乘以1/3的积是1.0。如果用把1/3表示成小数点后面6位数字,乘积则为.999999,不等于1。使用fabs()函数(声明在math.h头文件中)可以方便地比较浮点数,该函数返回一个浮点值的绝对值(即,没有代数符号的值)。例如可用下面类似程序的方法判断一个数是否接近预期结果。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

本章介绍了多个C语言代码示例,包括summing.c、cmpflt.c、for_cube.c等,涉及键盘输入处理、浮点数比较、循环控制和嵌套循环等内容。同时,提出了多项编程练习,如使用for循环创建立方表、求序列和、处理数组及浮点数计算等,旨在提升读者的C语言编程能力。
最低0.47元/天 解锁文章
1776

被折叠的 条评论
为什么被折叠?



