C语言学习_一个简单程序的解释与C学习方法概括
简单计算器程序示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # include <stdio.h> //1、头文件 2 3 //2、加法函数 4 int add(int a,int b)//3、函数定义方式 5 { //4、函数体 6 return a+b; //5、函数返回 7 } 8 //减法 9 int move(int a,int b) 10 { 11 return a-b; 12 } 13 14 //乘法 15 int mul(int a,int b) 16 { 17 return a*b; 18 } 19 20 //除法 21 float divide(int a,float b) 22 { 23 if(b!=0) //6、if判断语句 24 { 25 return a/b; 26 } 27 return 0; 28 } 29 30 //7、主函数 31 int main() 32 { 33 int a,b; //8、变量的定义与初始化 34 printf("请输入两个数字:\n"); //9、printf函数 35 scanf("%d %d",&a,&b); //10、scanf函数 36 printf("和=%d,差=%d,积=%d,商=%f\n",add(a,b),move(a,b),mul(a,b),divide(a,b)); //11、printf函数的输出格式 37 getchar(); //12、getchar函数 38 return 0; //13、main函数的返回值 39 }
上述程序实现的功能如下:输入两个数,计算和、差、积、商,并打印出来
上面的程序我注释了每行代码中的一些内容,分点解释,并说明一下学习方法:
0、注释方法
所谓注释,是给程序开发人员看的,提示代码的一些作用信息,以方便开发。编译器是不会去管注释内容的,不论你在注释里写什么,都不会影响程序的功能,不过为了利于开发和程序的复用,你写注释最好有一定的针对性。c语言提供的注释方法主要有两种,一是:/*段落注释*/,二是://单行注释,顾名思义,第一种可以多行注释,第二种只能注释双杠符号后面的内容。
1、头文件
头文件一般用#include<>符号包含,在一个项目中,一般对应的xxx.h文件,放在header files目录下,初学者可能会奇怪为什么每次都用到#include<stdio.h>,项目中却没有stdio.h,其实是有的,这个已经被包含在c++开发环境中,stdio.h是指的standard IO也就是标准输入输出库,后面看到的printf、scanf函数和getchar等函数都是这个库里面实现好的,所以我们就能明白为什么不用定义printf等函数,就可以直接拿来用,因为这是系统已经定义好的呀。随着学习的深入,会了解到更多的包含头文件,也可以自己去写一个自定义头文件包含进来。
2、加法函数
数学里的函数我们都知道,如f(x)=2x,狭义的函数概念是数值计算。在C语言里面的函数是一个广义概念,不过本质其实并么有变,有输入,有输出,输入一个东西,输出一个东西,或者不显式输出,只是在函数内部对一些事务做处理,比如改变一个变量的值,但函数并不显式返回这个变化的数,这样也是可以的。函数输入的参数叫做形参,只是一个形式套路,等你调用这个函数的时候,也要按这个套路来调用,比如上面的例子,你调用的时候,输入的参数的个数和类型都要和函数定义里面的一样,当然也有例外的情况是变量的类型自动转换(这也是要可以转换的,否则会发生精度丢失),这点知识在后面的章节会接触到。另外每一个函数都有返回语句,即使什么都不返回(void修饰的函数),也要return;。
3、语句块
被一副大括号修饰的称作一个语句块,每一个函数的函数体都是一个大语句块,C语言的语句块书写格式就是以上例子中各个函数体的形式。编程习惯为方便程序阅读,一般都要求对齐相应的成对的大括号。这与其说是程序员的强迫症,不如说是一个程序员的编程习惯,编程习惯的好坏,能体现你的逼格,更能增进你的学习,特别是在初学的时候。所以如果你的编程基本功都有么有掌握好,我也不相信你能实现什么功能和高大上的算法了,做好小事才能干大事。
4、判断语句
常用的分支结构有顺序结构,分支结构,循环结构,判断语句是分支结构里面的内容,其次还有switch语句等。if(){}else{}的格式写法最好是每个部分都用一个语句块来表示,哪怕是简单到只有一句return;(比如上面的例子),这也是编程习惯的一部分,你以后会发现,它会给你省下很多找bug的时间。if括号里面的表达式是true,比如(1+1==2),那么就执行接下来的语句块,否则执行else里面的语句块。后面还会有一些扩展嵌套,如if+else if +else if+... + else,中间有很多个else if判断。解释起来的意思就是,如果a==5,a==5不对的话那a==4呢,a==4不对的话那a==3呢....否则...。下面是一个if else嵌套的代码片段。
int a = 0; if(a == 5) { printf("5"); } else if(a == 4) { printf("4"); } else if(a == 3) { printf("3"); } else { printf("以上都不对"); }
5、主函数
主函数是一个程序的入口,程序从主函数开始运行。需要说明的是,C语言中变量的定义永远要在其他语句的前头,否者会报错。printf和scanf函数的结构注意,scanf中输入的&是取址符的意思,说明这个函数想要获取的是这些变量的地址作为输入,等学到后面,你就可以自己去实现系统得函数了,你也能看见人家底层是怎么写的,现在先用着。getchar函数是在这里做暂停的作用,它会取你在命令行输入一个字符,所以你不得不再做一次输入才结束程序。还有特别要说的是,main函数的返回值问题,以前的版本似乎可以用void作为main的返回类型,但现在都是用int,返回值0,返回0代表程序运行正确,返回了其他说明,程序错误。
学习方法:
初学一门语言,最好的办法是多动手去敲代码,遇到不会的问题要找资料解决,一般这种问题,网上都有答案,如果没有,那就是因为这个问题太简单了网上都没有人提出来。另外,刚学写代码的时候,语法都没弄通的时候,记得给每句话打上行注释,练得多了,后面就慢慢不需要注释也能活用了。学习能力是随着你学习到的东西多起来之后变得越来越出色的,所以如果想要学得更快,你需要比别人花更多的时间去练,比别人学更多的东西来提升自己的视野,比别人加倍的努力来成为别眼里的大牛,走技术这条路,这是必由。