1.C语言的基本介绍
Basics of the C Programming Language
• C 是一种编程语言,它的发明是为了进行低级别的系统编程工作。C 语言从 B 语言发展而来,是一种非常紧凑(compact)的语言。
• 它是一种通用(general)编程语言,既可以用于系统编程(如操作系统开发),也可以用于编写应用程序。
• C 是过程式语言(procedural language),也被称为功能性(functional)语言。这一点与后来发明的面向对象(object-oriented)语言(如 C++ 或 Java)不同,C 语言中没有对象(object)和对象上的方法(method)。
2.C语言的过程式编程
C is a procedural language
• 在过程式编程中,程序(procedures)是由一个个过程(即函数或子程序subroutines)构成的。这些过程对参数(parameters)进行操作。过程式编程的理念是通过调用一系列的函数来完成特定的任务。
• 在 C 语言中,函数是最基本的构建模块,通过函数你可以将一段代码逻辑进行重用。
procedures are the equivalent of an object-oriented language’s methods.
3.一个简单的C程序示例
文档提供了一个简单的 C 程序例子:
#include <stdio.h>
#define MAX 100
void main() {
int x;
x = 1;
while (x <= MAX) {
printf(“%d\n”, x);
x++;
}
}
这个程序定义了一个 MAX 为 100 的常量,并通过 while 循环打印 1 到 100 之间的整数。
4.main() 函数和 printf() 函数
• #include <stdio.h> 是头文件,它类似于 Java 中的 import 语句。头文件中定义了标准输入输出函数,如 printf()。
• main() 函数 是 C 程序的入口点,类似于 Java 中的 main() 方法。
• printf() 函数 用于格式化输出,它可以输出字符串、整数等。在文档中的例子里,它类似于 Java 的 System.out.print()。
5.使用 printf 输出
Output with printf
• 要输出一个字符字符串(character string),可以将该字符串作为 printf 函数的参数。例如:printf(“Hello World”);这个字符串被称为格式字符串(format string)
• 格式说明符 %d 用于表示整数,例如:printf(“%d”, x); 会输出整数 x 的值。
• 两个字符序列\n用于显示换行符,而- 两个字符序列\t用于显示制表符。
- 序列%d被称为转换说明符(conversion specification)。
6.另一个示例程序
文档中提供了一个 for 循环的程序,它同样实现了打印 1 到 100 的功能:
#include <stdio.h>
void main() {
int x;
for (x = 1; x <= 100; x++) {
printf(“%d\n”, x);
}
}
7.使用 scanf 进行输入
Input with scanf
• scanf() 函数 用于从用户处读取输入。要读取整数,可以使用格式说明符(conversion specification) %d 并将其传递给 scanf,例如:
int day, year;
char monthname[20];
scanf(“%d %s %d”, &day, monthname, &year);
这段代码会从用户输入中读取整数 day 和 year,以及字符串 monthname。
地址运算符 &
1. scanf 函数:
• scanf 是 C 语言中用于从用户那里读取输入的函数。例如,你想要用户输入一个整数、浮点数或字符串,就可以使用 scanf。
• 函数的基本格式是:scanf("格式说明符", 参数列表);
2. 格式说明符 %d:
• 在 scanf 中,格式说明符用于告诉程序你要读取哪种类型的数据。
• %d 是格式说明符,它表示你希望 scanf 读取一个整数(int 类型)。
• 例如,当你想读取一个整数时,你可以这样写:
int number;
scanf("%d", &number);
3. 地址运算符 &:
• 在 C 语言中,& 是取地址运算符,它用于获取变量的内存地址。
• scanf 函数需要的是变量的地址,而不是变量的值,因为它需要知道把用户输入的数据存放到哪里。使用 & 可以将变量的内存地址传递给 scanf。
• 在上面的例子中,&number 表示变量 number 的内存地址,scanf 会将输入的整数存储到 number 变量中。
• 如果不使用 &,scanf 无法访问 number 的内存位置,因此无法修改它的值。
4. 总结:
• 当你使用 scanf(“%d”, &变量名); 时,%d 告诉程序要读取一个整数,而 &变量名 则告诉程序将这个整数存储到哪个变量中。
• 例如:
int age;
printf("Enter your age: ");
scanf("%d", &age); // 读取用户输入的整数并存储在 age 变量中
printf("Your age is: %d\n", age);
在这个例子中,用户输入的整数会被存储在 age 变量中,随后程序会输出这个值。
8.练习
文档还提供了一个练习题,要求编写一个程序,提示用户输入日期(如:16 Feb 2020),然后打印出用户输入的日期。并要求该程序重复执行 10 次。
#include <stdio.h>int main() {int day, year;char month[20]; // 用于存储月份的字符串for (int i = 0; i < 10; i++) { // 循环 10 次printf("Please enter a date (format: day month year, e.g., 16 Feb 2020): ");// 使用 scanf 读取用户输入的日期,按照 "日 月 年" 的格式scanf("%d %s %d", &day, month, &year);// 输出用户输入的内容printf("You entered: %d %s %d\n", day, month, year);}return 0;
}
代码解释:
- 变量定义:
• int day, year 用于存储用户输入的日和年。
• char month[20] 用于存储月份的字符串,最多允许 20 个字符长度。
2. 循环结构:
• 使用 for 循环来重复 10 次输入和输出操作。
3. scanf 函数:
• scanf(“%d %s %d”, &day, month, &year) 将用户输入的日期分为三部分:日(整数)、月(字符串)和年(整数)。
4. 输出:
• printf(“You entered: %d %s %d\n”, day, month, year) 将用户输入的内容输出,确保格式与输入的相同。
9.C程序的编译、链接和执行
C program compilation, Linking and execution
• 介绍了 C 程序的编译过程。高层语言的代码首先会通过编译器转换为汇编语言,然后由汇编器将其转换为机器码。
• 当机器码准备好之后,通过链接和加载,最终程序可以被执行。