指令
函数
语句
#include <stdio.h>
int main(void)
{
printf("Hello, NJU!\n");
return 0;
}
代码可存储在 任意文件名 的文件中, 通常用 .c 作为扩展名, 假设文件名为hw.c
使用编译命令 gcc hw.c 默认会将编译生成的可执行程序存储为a.out文件
使用编译命令 gcc hw.c -o hw 可指定编译生成的可执行程序文件名为hw
#include <stdio.h>
int main(void)
{
printf("Hello, NJU!\n");
return 0;
}
#include 为预处理指令, 引入C语言标准输入/输出库的头文件stdio.h
main函数 主函数, 程序入口, 任何C程序都需要一个main函数
printf 函数来自标准输入/输出库, \n为换行
return 0; 程序终止时向操作系统返回值0
void 参数类型, 可省略
三步由源码转换成可执行:
预处理: 预处理器(preprocessor)处理 # 开头的指令
编译: 编译器将源程序翻译为机器指令(目标代码)
链接: 链接器把由编译器生成的目标代码和所需的其他附加代码合在一起, 最终产生完全可执行的程序
集编辑、编译、运行、调试的开发环境
CLion: 推荐, 学生邮箱可注册免费License
Visual Studio IDE: 免费社区版(Community Edition)、需配置安全检查
指令
int main(void)
{
语句
}
C使用 { 和 } 标识函数开始与结束, 类似其他语言begin和end
最简单的C程序包含三个关键的语言特性:
指令: 预处理指令
函数: 可执行代码块, main函数
语句: 程序执行时的命令
指令: 预处理指令, 在编译前修改程序内容的编辑命令, 示例:
#include <stdio.h>
<stdio.h> 是一个包含有关 C 标准 I/O 库信息的头文件
以 # 开头, # 用于将C代码中的指令与其他代码区分开来
默认只占一行, 每条指令的结尾没有分号或者其他特殊标记
演示Hello NJU代码
C程序是函数的集合, 函数由一系列语句构成, 有两类函数:
程序员编写的函数
库函数(library function): 作为C语言实现的一部分提供的函数
函数调用: 要求函数执行分配给它的任务称为调用函数
术语函数源于数学: 在数学中, 函数指根据一个或多个给定参数进行数值计算的规则:
f(x)=x+1 对应C代码:
return x + 1;
g(y,z)=y2−z2 对应C代码:
return y * y + z * z;
C语言对 函数 术语的使用更加宽松
C语言中, 函数仅仅是一系列组合在一起并且赋予了名字的语句
某些函数计算数值, 某些函数则不;
计算数值的函数用 return 语句来指定所返回的值
int main()
{
return 0;
}
main 函数是必须的, 不能写成Main或MAIN等
main 函数非常特殊: 程序执行时, 系统自动调用main函数
main 函数在程序终止时向操作系统返回一个状态码: 一般用0表示程序正常终止
main 函数末尾没有 return 语句, 许多编译器会产生警告信息
语句 是程序运行时要执行的命令, hw.c 有两条语句
一条是 return 语句
另一条是 函数调用 语句
hw.c调用 printf 函数来显示一个字符串:
printf("Hello, World!\n");
C 要求每个语句都以分号结尾
复合语句例外
指令通常只有一行, 并且不以分号结尾
printf("Hello, World!\n");
printf 函数是显示了一条字符串字面量(string literal)
当显示结束, printf 函数不会自动跳转到下一行输出
为跳转至下一行, 须要在显示的字符串之后包含 \n 换行
注释: 文档说明, 可出现在程序任意位置, 用于描述程序用途等
多行: 以符号 /* 开头, 以符号 */ 结尾
单行: 以符号 // 开头, 在行末自动终止 ( C99 )
忘记终止注释可能会导致编译器忽略程序部分代码
/* This is a comment */
/* Name: pun.c
purpose: prints a bad pun
author: K.N. King
*/
// Name: pun.c
// Purpose: prints a bad pun
// Author: K.N. King
给定年份和当年的年龄,计算2280年时他的年龄
给定成绩,输出他优秀/良好/及格/不及格
给定用户输入的一个数,计算所有奇数的和
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int total_tries = 0;
int limit, guess, reward;
printf("Please choose the limit value:\n");
scanf("%d", &limit);
srand(time(NULL));
reward = rand() % limit + 1;
// printf("正确数值: %d\n", reward);
while (total_tries < 7) {
printf("Please guess the number\n");
scanf("%d", &guess);
// 检查是否猜对
if (guess == reward) {
printf("YOU WIN!\n");
return 0;
} else if (guess < reward) {
printf("Smaller than the reward!\n");
} else {
printf("Larger than the reward!\n");
}
total_tries++; // number_of_tries = number_of_tries -1;
}
printf("YOU LOSE!\n");
return 0;
}