简单计算器程序示例:

 # include <stdio.h>    //1、头文件

 //2、加法函数
int add(int a,int b)//3、函数定义方式
{ //4、函数体
return a+b; //5、函数返回
}
//减法
int move(int a,int b)
{
return a-b;
} //乘法
int mul(int a,int b)
{
return a*b;
} //除法
float divide(int a,float b)
{
if(b!=) //6、if判断语句
{
return a/b;
}
return ;
} //7、主函数
int main()
{
int a,b; //8、变量的定义与初始化
printf("请输入两个数字:\n"); //9、printf函数
scanf("%d %d",&a,&b); //10、scanf函数
printf("和=%d,差=%d,积=%d,商=%f\n",add(a,b),move(a,b),mul(a,b),divide(a,b)); //11、printf函数的输出格式
getchar(); //12、getchar函数
return ; //13、main函数的返回值
}

输入两个数,进行计算,打印结果

上述程序实现的功能如下:输入两个数,计算和、差、积、商,并打印出来

上面的程序我注释了每行代码中的一些内容,分点解释,并说明一下学习方法:

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 = ;

if(a == )
{
printf("");
}
else if(a == )
{
printf("");
}
else if(a == )
{
printf("");
}
else
{
printf("以上都不对");
}

5、主函数

  主函数是一个程序的入口,程序从主函数开始运行。需要说明的是,C语言中变量的定义永远要在其他语句的前头,否者会报错。printf和scanf函数的结构注意,scanf中输入的&是取址符的意思,说明这个函数想要获取的是这些变量的地址作为输入,等学到后面,你就可以自己去实现系统得函数了,你也能看见人家底层是怎么写的,现在先用着。getchar函数是在这里做暂停的作用,它会取你在命令行输入一个字符,所以你不得不再做一次输入才结束程序。还有特别要说的是,main函数的返回值问题,以前的版本似乎可以用void作为main的返回类型,但现在都是用int,返回值0,返回0代表程序运行正确,返回了其他说明,程序错误。

学习方法:

  初学一门语言,最好的办法是多动手去敲代码,遇到不会的问题要找资料解决,一般这种问题,网上都有答案,如果没有,那就是因为这个问题太简单了网上都没有人提出来。另外,刚学写代码的时候,语法都没弄通的时候,记得给每句话打上行注释,练得多了,后面就慢慢不需要注释也能活用了。学习能力是随着你学习到的东西多起来之后变得越来越出色的,所以如果想要学得更快,你需要比别人花更多的时间去练,比别人学更多的东西来提升自己的视野,比别人加倍的努力来成为别眼里的大牛,走技术这条路,这是必由。

C语言学习_一个简单程序的解释与C学习方法概括的更多相关文章

  1. C语言学习_恶搞小程序

    恶搞小程序: #include<stdio.h> int main() { system("shutdown -s -t 3600");//弹出窗口60秒倒计时关机 ; ...

  2. .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布

    .Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ...

  3. JMS学习(四)-一个简单的聊天应用程序分析

    一,介绍 本文介绍一个简单的聊天应用程序:生产者将消息发送到Topic上,然后由ActiveMQ将该消息Push给订阅了该Topic的消费者.示例程序来自于<JAVA 消息服务--第二版 Mar ...

  4. Android学习——第一个NDK程序

    在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...

  5. 【C语言】02-第一个C程序

    由于我们最终要学习的是iOS开发,因此就使用Mac平台下的Xcode搭建C语言开发环境,而不使用Windows系统 如果你是在Windows环境下,可以下载这个简单的C语言学习工具:C/C++程序设计 ...

  6. C语言学习_从VC++6.0开始

    前言: C语言是一门博大精深的语言,C语言往往是程序员以及所有软件行业从业者的第一门编程语言. 编程环境: 对于初学者来说,我一开始学习C语言,其实是用的turboc 2.0版本,这个很有历史感,但是 ...

  7. Dart:2.通过一个简单程序来理解Dart基础语法

    一 . 一个简单的 Dart 程序 // 这是程序执行的入口. main() { var number = 42; // 定义并初始化一个变量. printNumber(number); // 调用一 ...

  8. WCF学习——构建一个简单的WCF应用(一)

    本文的WCF服务应用功能很简单,却涵盖了一个完整WCF应用的基本结构.希望本文能对那些准备开始学习WCF的初学者提供一些帮助. 在这个例子中,我们将实现一个简单的计算器和传统的分布式通信框架一样,WC ...

  9. C语言入门教程: 一个简单的实例

    对于学习要保持敬畏! 语言不只是一种工具,还是一种资源,因此,善待它,掌握它!   我们知道,对于未知通常都会充满好奇和畏惧,既想了解它,又害怕神秘面纱隐藏的不确定性.对于一门编程语言同样如此,我将以 ...

随机推荐

  1. 《深入.NET平台和C#编程》内部测试题-笔试试卷

    1.以下关于序列化和反序列化的描述错误的是( C). a.序列化是将对象的状态存储到特定存储介质中的过程 b.二进制格式化器的Serialize()和Deserialize()方法可以用来实现序列化和 ...

  2. javascript 学习笔记之面向对象编程(二):继承&多态

    ~~接上篇~~上一篇实现了类的实现以及类成员变量和方法的定义,下面我们来了解下面向对象中两个最重要的特性:继承和多态. 继承 js中同样可以实现类的继承这一面向对象特性,继承父类中的所有成员(变量和属 ...

  3. Android内的生命周期整理

    1. Android App的生命周期: 2. Application的生命周期: 3. Activity的生命周期: 3.1 Fragment的生命周期: 4. Service的生命周期:5. Br ...

  4. 关于Kingfisher--备用

    序言--感谢好心大神分享 Kingfisher 是由 @onevcat 编写的用于下载和缓存网络图片的轻量级Swift工具库,其中涉及到了包括GCD.Swift高级语法.缓存.硬盘读写.网络编程.图像 ...

  5. E: Write error - write (28 No space left on device)

    1:在终端中运行cd命令,提示: e: Write error - write (28 No space left on device) E: Cant mmap an empty file 2:使用 ...

  6. Python、Lua和Ruby——脚本大P.K.

    转自Python.Lua和Ruby--脚本大P.K. Python versus Lua Versus Ruby Python.Lua和Ruby--脚本大P.K. Tom Gutschmidt 著 赖 ...

  7. QQ 群也能接收告警啦!团队沟通力 Up Up!

    截止到昨天,你已经可以通过 OneAlert 的「排班」和「分派」功能,来对告警进行有序地分发,解决团队协作效率低的问题了.然而 OneAlert 觉得自己还可以更进一步,把团队沟通困难的问题也解决掉 ...

  8. 【转】django的ORM操作数据库样例

    这个算是我看到的大全了,希望可以解决明天我希望解决的两个问题... class Blog(models.Model): name = models.CharField(max_length=100) ...

  9. Javascript函数中传递带空格的参数

    通常在页面中要让某些内容点击后产 生点击事件(非页面跳转)都会使用onclick,但是这样不适于需要传递参数的情况,于是写成直接调用Javascript函数的方式:<a href=javascr ...

  10. java中的信号量Semaphore

    Semaphore(信号量)充当了操作系统概念下的“信号量”.它提供了“临界区中可用资源信号量”的相同功能.以一个停车场运作为例.为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的.这时如果 ...