c程序设计语言第二版学习记录

第一章 导言

1.2 变量与算术表达式

核心程序:使用公式 摄氏度 = (5/9)(华氏度 - 32)打印华氏度和摄氏度温度对照表(华氏度从0到200)

教材源代码如下:

#include <stdio.h>

int main() {
    int lower, upper, step;
    int fahr, celsius;
    lower = 0;
    upper = 300;
    step = 20;

    fahr = lower;
    while (fahr <= upper) {
        celsius = 5 * (fahr - 32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }
    return 0;
}

 

练习1-3 修改温度转换程序,使之能在转换表的顶部打印一个标题

#include <stdio.h>

int main() {
    int lower, upper, step;
    float fahr, celsius;
    lower = 0;
    upper = 300;
    step = 20;

    fahr = lower;
    printf("fahr to celsius\n");
    while (fahr <= upper) {
        celsius = 5 * (fahr - 32) / 9;
        printf("%6.0f\t%6.1f\n", fahr, celsius);
        fahr = fahr + step;
    }
    return 0;
}

练习1-4 编写一个程序打印摄氏温度转换为华氏温度的转换表

此处规定摄氏度的区间为[0,100],步长为20

#include <stdio.h>

int main() {
    int lower, upper, step;
    float fahr, celsius;
    lower = 0;
    upper = 100;
    step = 20;

    celsius = lower;
    printf("celsius to fahr\n");
    while (celsius <= upper) {
        fahr = 9 * celsius / 5 + 32;
        printf("%6.0f\t%6.0f\n", celsius, fahr);
        celsius = celsius + step;
    }
    return 0;
}

1.3 for语句

教材中使用for语句来实现温度转换代码

#include <stdio.h>

int main() {
    float fahr;
    for (fahr = 0; fahr <= 300; fahr = fahr + 20)
        printf("%3.0f\t%6.1f\n", fahr, 5 * (fahr - 32) / 9);
    return 0;
}

练习1-5 修改温度转换程序,要求以逆序(即按照从300度到0度的顺序打印温度转换表)

在起始条件和步长固定的情况下,使用for语句确实更方便一些

#include <stdio.h>

int main() {
    float fahr;
    for (fahr = 300; fahr >= 0; fahr = fahr - 20)
        printf("%3.0f\t%6.1f\n", fahr, 5 * (fahr - 32) / 9);
    return 0;
}

1.4 符号常量

尽量使用符号常量来代替数字本身,提高代码可读性&可维护性

1.5 字符输入/输出

  1. 标准输入/输出是什么?是一个已有的、符合ascii标准的库(即程序中的<stdio.h>对应的库,不太清楚具体是哪一个库,知道的uu可以在评论区分享一下哈);
  2. 怎么实现的?按照字符流的方式处理(字符流、字节流又是什么,百度了一下还是不懂),printf、getchar、putchar等函数都是标准输入/输出库中已经实现的函数,我们引用完头文件之后直接使用即可;

1.6 文件复制

1、使用标准输入/输出函数将输入一次一个字符地复制到输出。

教材源代码

#include <stdio.h>
int main() {
    int c;
    while ((c = getchar()) != EOF) 
        putchar(c);
}

⚠️:执行该代码时需要模拟文件结束符

mac中:control + d

win中:control + z 

另一重点:赋值操作也是一个表达式,并且具有一个值,该值就是左边变量保存的值。举个例子,我在本地写了一个函数addnum,直接打印赋值表达式,如下代码所示

#include <stdio.h>
int addnum(int a, int b) {
    return a + b;
}
int main() {
    int sum;
    printf("sum = %d\n", (sum = addnum(1, 2)));
    return 0;
}

执行结果sum = 3,赋值表达式本身也是一个值,这一点后续可以应用在while循环或者for语句中减少重复代码

练习1-6 验证表达式getchar() != EOF的值时0还是1

练习1-7 编写一个打印EOF值的程序

两道题目使用同一份代码验证

#include <stdio.h>
int main() {
    printf("EOF = %d\n", EOF);
    printf("(getchar() != EOF) = %d\n", (getchar() != EOF));
    return 0;
}

执行结果如下:

​​​​​​​

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值