#include <stdio.h> // 包含另一个文件;
int main(void) // 函数名;
{ // 函数体开始;
int num; // 声明;
num = 1; // 赋值表达式语句;
printf("I am a simple "); // 调用一个函数;
printf("computer.\n"); // 调用另一个函数;
printf("My favorate number is %d because it is first. \n",num);
return 0; // return 语句;
} // 结束;
程序输出:
I am a simple computer.
My favorate number is 1 because it is first.
『 程序细节 』
1. #include 指令和头文件
⇢ #include<stdio.h>
(1)相当于把 stdio.h 文件中的所有内容都输入到该行所在的位置;
(2)这行代码是一条C预处理器指令 --- 即,对有源代码做一些准备工作;
(3)所有的C编译器软件包都提供 stdio.h 文件;
(4)头文件中包含了编译器创建最终可执行程序要用到的信息;
2. main( ) 函数
⇢ int main(void)
(1)C程序一定从 main( ) 函数开始执行,main( ) 函数必须是开始的函数;
(2)int 是 main( ) 函数的返回类型,这表明 main( ) 函数返回的值是整数;
(3)函数名后面的圆括号中,包含了一些传入函数的信息;(此例中,没有传递任何的信息,所以单词是 void )
3. 注释
⇢ / * 一个简单的注释 * /
(1)在程序中,被 / * * / 两个符号括起来的部分是程序的注释;
(2)写注释的目的是为了让他人更能明白自己所写的程序;
(3)‘ // ’ 形式的注释只对单行有效;
4. 花括号、函数体和块
⇢ {
...
}
(1)一般而言,所有的C函数都使用花括号标记函数体的开始和结束。
(2)花括号还可用于把函数中的多条语句合并成一个单元和块;
5. 声明
⇢ int num;
(1)这行代码叫声明:其一,函数中有一个名为 num 的变量;其二,int 表示 num 这个变量是一个整数;
(2)int 是C语言的一个关键字,表示一种基本的C语言数据类型;
(3)num 是一个标识符,也就是一个变量、函数或者其他实体的名称;
(4)在C语言中,所有变量都必须先声明才能使用;
【注意】C语言的名称区分大小写;可以用小写字母、大写字母、数字和下划线来命名,名称的第一个字符必须是字符或下划线,不能是数字。
6. 赋值
⇢ num = 1;
(1)该行代码的意思是:把值1赋给变量 num ;
(2)声明时,编译器在计算机内存中为变量 num 预留了空间,然后在执行这行赋值表达式语句时,把值储存在了之前预留的位置。
(3)该赋值表达式语句从右侧赋值到左侧;
7. printf( ) 函数
⇢ printf(" I am a simple ");
⇢ printf(" computer .\n ");
⇢ printf(" My favorite number is %d because it is first .\n ", num);
(1)三行都使用了C语言中一个标准函数:prinft( ) ,圆括号表示 printf 是一个函数名;
(2)圆括号中的内容是从 main( ) 函数传递给 printf( ) 函数的信息,例如 ‘ I am a simple ’ 传递给 printf( ) 函数,该信息被称为函数的实际参数。(实参,传递给函数的特定值;形参,用于储存值的变量)
(3)‘ \n ’ 的意思是换行
8. return 函数
⇢ return 0;
(1)int main(void) 中的 int 表明 main( ) 函数应返回一个整数;
(2)有返回值的C函数要有 return 语句,该语句以 return 关键字开始,后面是待返回的值,并以分号结尾。
『 进一步使用C 』
// fathm_ft.c -- 把2英寸转换成2英尺
#include <stdio.h>
int main()
{
int feet, fathoms;
fathoms = 2;
feet = 6 * fathoms;
printf("there are %d feet in %d fathoms!\n",feet,fathoms);
printf("Yes,I said %d feet!\n", 6*fathoms);
return 0;
}
程序输出:
there are 12 feet in 2 fathoms!
Yes,I said 12 feet!
『 多个函数 』
/* two_func.c -- 一个文件中包含两个函数 */
#include <stdio.h>
void butler(void); /* ANSI/ISO C函数原型 */
int main(void)
{
printf("I will summon the butler function.\n");
butler();
printf("Yes. Bring me some tea and writable DVDs.\n");
return 0;
}
void butler(void) /* 函数定义开始 */
{
printf("You rang, sir?\n");
}
程序输出:
I will summon the butler function.
You rang, sir?
Yes. Bring me some tea and writable DVDs.
bulter( ) 函数在程序中出现了3次:
1. 函数原型(prototype),告知编译器在程序中要使用该函数;
2. 函数调用(function call)的形式出现在 main( ) 中;
3. 函数定义(function definition)中,函数定义即是函数本身的源代码。
📌 函数原型是一种声明形式,告知编译器正在使用某函数,因此函数原型也被称为函数声明;
无论 main( ) 在程序文件处于什么位置,所有的C程序都从 main( ) 开始执行。
=================================
auto | extern | short | while |
break | float | signed | _Alignas |
case | for | sizeof | _Alignof |
char | goto | static | _Atomic |
const | if | struct | _Bool |
continue | inline | switch | _Complex |
default | int | typedef | _Generic |
do | long | union | _Imaginary |
double | register | unsigned | _Noreturn |
else | restrict | void | _Static_assert |
enum | return | volatile | _Thread_local |
=================================
『 复习题 』
1. C语言的基本模块是什么?
2. 什么是语法错误?写一个例子
3. 考虑下面的程序
#include <stdio.h>
int main(void)
{
int a, b;
a = 5;
b = 2; /*第7行*/
b = a; /*第8行*/
a = b; /*第9行*/
printf("%d, %d\n",b,a);
return 0;
}
请问,在执行第7、8、9行后,程序的状态分别是什么?
4. 编写一个程序,把你的年龄转换成天数,并显示这两个值。(这里不用考虑闰年的问题)