1.空白和注释
空行将程序的不同部分分隔开来;制表符(Tab)用于缩进语句,更好地显示程序的结构。
注释可以很好地提高代码的可读性:
注释符号:/*…………*/(多行注释)、//(单行注释)
写注释一定要正确,如果不正确,还不如不写。
2.预处理指令
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define Max_COLS 20 //能够处理的最大列号
#define MAX_INPUT1000 //每个输入行的最大长度
预处理器用名叫stdio.h的库函数头文件的内容替换第一条#include指令语句,其结果就仿佛是stdio.h的内容被逐字写进源文件的那个位置,string.h和stdlib.h也是一样的作用。
stdio.h头文件使我们可以访问标准的I/O库(Standard I/O Library)中的函数,这组函数用于执行输入和输出。Stdlib.h定义了EXIT_SUCCESS和EXIT_FAILURE符号。我们需要string.h头文件提供的函数来操纵字符串。
#define叫做宏定义,可以做到“一改全改”的作用,把一个变量赋值为一个常量,这样在整体代码中就可以当作一个常量来用,并且不允许修改。
void read(int x,inty);
这是函数的声明,也被称为函数原型,主要作用是告诉编译器你所定义的函数特征,有返回值类型(void)、函数名(read)、形参(x,y)。函数原型中的参数的名字并非必需的,这里给出参数名的目的是提示它们的作用。
void read(int *,int *j);
这里的形参带了个*号,这说明这两个参数都是指针。
指针指定一个存储于计算机内存中的值的地址,有着类似于门牌号的作用。指针在C语言中作用巨大。
注:假如一个程序的源代码由几个源文件组成,那么使用该函数的源文件都必须写明该函数的原型,并用#include来包含它们,可以避免由于同一个声明的多份副本而导致的维护性问题。
3.main函数
int main()
{
return 0;
}
main()函数也叫做主函数,每个C语言程序都需要一个主函数,也只能有一个主函数,它是程序执行的起点。关键字int表示函数返回一个整型值,main函数的函数体用{}包含住的所有内容。
在C程序中,处理字符串是最常见的任务之一。尽管C语言并不存在“string”类型,但在整个语言中,存在一个约定:字符串就是一串以NUL(在ASCII中’\0’字符的名字)字节结尾的字符。NUL作为字符串终止符,它本身并不被看成字符串的一部分。字符串常量就是源程序中被双引号括起来的一串字符,例如:”Hello”在内存中占据6个字节的空间,按顺序分别为H、e、l、l、o和NUL。
printf函数执行格式化的输入。
格式字符串包含格式指定符(格式代码)以及一些普通字符
格式 | 含义 |
%d | 以十进制形式打印一个整型值 |
%o | 以八进制形式打印一个整型值 |
%x | 以十六进制形式打印一个整型值 |
%f、&lf | 打印一个浮点型 |
%c | 打印一个字符 |
%s | 打印一串字符 |
\n | 换行 |
scanf()函数从标准输入字符并根据格式字符串对它们进行转换——类似于printf函数的逆操作。
注:在使用scanf函数中,在所有标量参数的前面必须加上一个&符号。数组参数前面可加可不加。但是数组参数中如果出现了下标引用,也就是说实际参数是数组的某个特定元素,那么前面一定要加&。
格式 | 含义 | 变量类型 |
%d | 读取一个整型值 | int |
%ld | 读取一个长整型 | long |
%f | 读取一个实数型(浮点型) | float |
%lf | 读取一个双精度实数型 | double |
%c | 读取一个字符 | char |
%s | 从输入中读取一个字符串 | char型数组 |
&&是“逻辑与“操作符。要使整个表达式为真,&&操作符两边的表达式都必须为真。如果左边的表达式为假,右边的表达式便不再进行求值,因为不管真假,整个表达式都为假。