第一章 导言
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 字符输入/输出
- 标准输入/输出是什么?是一个已有的、符合ascii标准的库(即程序中的<stdio.h>对应的库,不太清楚具体是哪一个库,知道的uu可以在评论区分享一下哈);
- 怎么实现的?按照字符流的方式处理(字符流、字节流又是什么,百度了一下还是不懂),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;
}
执行结果如下: