C语言小白报道!和老刘一起开始学习C语言吧!
一、C语言程序的结构
(1)一个程序由一个或多个源程序文件组成。
(2)函数是C程序的主要组成部分。
(3)一个函数包括两个部分。
(4)程序总是从main函数开始执行的。
(5)程序中要求计算机完成的操作是由函数中的C语句完成的。
(6)在每个数据声明和语句的最后必须有一个分号。
(7)C语言本身不提供输入输出语句。
(8)程序应当包含注解。
以下开始细说:
1)①预处理指令 #include(例如还有#define等)C语言能对源程序进行翻译之前,先由一个预处理器(又叫预处理程序、预编译器)对预处理系统进行预处理,对#include指令来说,就是将stdio.h头文件的内容读进来,取代#include。由预处理得到的结果与程序其他部分一起,组成一个完整的、可以用来编译的最后的源程序,然后由编译程序对该源程序正式进行编译,才得到目标程序。
②全局声明 如一会在主程序中见到的 int a,b,sum 放在main函数的前面,这就是全局申明。在函数外面声明的变量称为全局变量。如:在程序开头(定义函数之前)声明的变量,就在整个源程序文件范围内有效。在函数中声明的变量是局部变量,只在函数范围内有效。
③ 一个C语言程序由一个或多个函数组成,其中必须包含一个main函数(有且仅有一个main函数)。一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中有且仅有一个main函数),但是程序规模较大时,所包含的函数就会比较多,这样文件就会很大并且不利于编译和调试。为了方便编译和调试,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数。一个源程序文件就是一个程序模块,即,将一个程序分成若干个程序模块。C语言的这种特点使得容易实现程序的模块化。
④函数首部
以int max (int a,int b)为例:
第一个int是函数类型,max是函数名,后两个int是函数参数类型,a,b是函数参数名。
一个函数名后面必须跟一对圆括号,括号内写函数的参数名以及类型。若函数没有参数,可以在括号中写void,也可以是空括号。例:int main(void)/int main()
⑤函数体。 这是函数首部下面花括号内的部分,若有很多花括号,一般认为最外层的花括号是函数体的范围。
函数体一般包括声明部分和执行部分。
在某些情况下,可以没有声明部分,甚至可以既无声明部分也无执行部分。例:
void dump()
{} ————————该例选自《C程序设计》
这是一个空函数,什么也不做但也是合法的。
⑥ 主函数mian不论放在整个程序中的任意位置均可。
⑦ 注释。 注释放在 // 后,或者在 /* */ 之间。
二、开始实例
先来个简单的: 这是最基础的
#include<stdio.h> int main() { printf("This is a c program!\n"); return 0; } 复制代码
以下两个逐渐复杂,涉及到部分声明、函数调用以及接收输入、打印结果等函数,值得注意的是 \n 是换行的意思,%d 是占位符,就像有个坑用%d先占住,后面的&a(&b)等,是填入前面占位坑的数。
//求两整数之和 #include<stdio.h> int main() { int a, b, sum; scanf_s("%d,%d", &a, &b);//输入数字 sum = a + b; //求和 printf("sum is %d\n", sum);//输出 return 0; //结束程序 } 复制代码 //求两整数的较大者 #include<stdio.h> int main() { int max(int x, int y);//调用max函数 int a, b, c; //声明 scanf_s("%d,%d", &a, &b);//接受输入的数 c = max(a, b); printf("max=%d", c); return 0; } int max(int x, int y) { int z; if (x < y)z = y; else z = x; return(z); } 复制代码
下面我们再复杂点
#include<stdio.h> #define Height 10//定义用户常量,在之后的程序中遇见Height自动默认为10 int main() { int calculate(int Long, int Width); printf("长方体的高度为:%d\n", Height);//可替换成自主输入 int inlong; int inwidth; printf("请输入宽度:"); scanf_s("%d", &inwidth); printf("请输入长度:"); scanf_s("%d", &inlong); int result; result = calculate(inlong, inwidth); printf("长方体的体积是:%d", result); return 0; } int calculate(int inlong, int inwidth)//自定义计算体系 { int result; result = inlong * inwidth * Height; return result; } 复制代码
注意#define此处的含义。我相信,层层理解,这些都已经被大家理解了、并且很有条理。那么,不用预处理Height等于10,而换成用户输入可以做到吗?
#include<stdio.h> //#define Height 10//定义用户常量,在之后的程序中遇见Height自动默认为10 int main() { int calculate(int inlong, int inwidth, int inheight); //printf("长方体的高度为:%d\n", Height);//可替换成自主输入 int inheight; printf("请输入高度:"); scanf_s("%d", &inheight); int inlong; int inwidth; printf("请输入宽度:"); scanf_s("%d", &inwidth); printf("请输入长度:"); scanf_s("%d", &inlong); int result; result = calculate(inlong, inwidth,inheight); printf("长方体的体积是:%d", result); return 0; } int calculate(int inlong, int inwidth,int inheight)//自定义计算体系 { int result; result = inlong * inwidth * inheight; return result; } 复制代码
PS:scanf在该软件版本只能用scanf_s,不然会说不安全,具体原因不是很清楚欸