C Primer Plus 第6章_代码和练习题

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

代码

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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值