本节用来简要介绍c语言。

    (1)C语言的特点:

  C语言是一种集汇编语言及高级语言为一身的,面向过程的结构化和模块化的程序设计语言。

特点:

兼具高级语言与低级语言的双重能力。C语言允许直接访问内存地址,能进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作,所以又被称为中级语言。

生成的目标代码质量好,程序的执行效率高。

语言简洁,结构清晰。C语言强大的函数功能为程序的模块化和结构化提供了保证。

语言表达能力强。

程序的通用性和可移植性好。C语言没有依赖于硬件的输入输出语句,而是采用系统库函数进行输入和输出操作,因此C语言不依赖任何硬件系统,这种特性使得C语言编写的程序很容易移植到其他环境中。

  C语言的不足:语法限制不严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不做检查等。

    (2)介绍C语言的程序结构:

 #include<stdio.h>               /*编译预处理*/

 float area(float h,float w){         /*定义函数*/
double s;
s=h*w;
return s;
} int main(){
double h1,h2,w1,w2,s1,s2;
h1=10.5;w1=20.5;
h2=1.5*h1;w2=1.5*w1;
s1=area(h1,w1);
s2=area(h2,w2);
printf(“area=%6.2f”,s1+s2);
}

程序运行结果:

第一次注意到这个提醒错误:

问题原因: 应该是编译器需要文件最后有一个回车,作为文件结尾。

解决方法:在*.c文件最后面添加上一个回车,独立成一行。(在程序代码的最后面多敲一个空行,也就是说在右括号后打个回车键。因为gcc对你的源文件有要求,就是.c or .cpp文件后面要有一个空行)

  *编译预处理: 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。编译预处理是C语言区别于其它高级程序设计语言的特征之一,它属于C语言编译系统的一部分。C程序中使用的编译预处理命令均以#开头,它在C编译系统对源程序进行编译之前,先对程序中这些命令进行“预处理”。编译预处理命令的三种不同形式:宏定义、文件包含和条件编译。

  *宏定义(也叫宏替换):#define PI 3.14

  宏名一般用大写;宏定义结尾不加分号;

宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。

宏展开不占运行时间,只占编译时间

  可以用#undef终止宏定义的作用域;

  例子1:#define S(a,b) a*b

  area=S(3,2);第一步被换为area=a*b;第二步被换为area=3*2;

  例子2.#define S(r) r*r

  area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;

  正确的宏定义是#define S(r) ((r)*(r))

    (3)编译源程序:

  为了使计算机能够执行高级语言源程序,必须把源程序转换为二进制形式的目标程序,这个过程称为编译源程序。

编译是以源程序文件为单位分别进行的,每个源程序文件对应生成一个目标文件,目标文件的扩展名为“.obj”。编译结束之后,得到一个或多个目标文件,此时要使用系统提供的“连接程序(linker)”讲一个程序的所有目标文件和系统的库文件以及系统提供的其他信息连接起来。

    (4)算法与程序设计基础:

  程序=算法+数据结构+程序设计方法+语言工具+环境

  算法分为数值运算算法和非数值运算算法两种。数值运算算法是对问题的数值求解,例如对微分方程的求解,对一元二次方程求解等;费数值运算算法包括非常广泛的领域,如信息检索,事务管理,数据处理等。

  程序设计的经典算法:

  穷举法:百元买百鸡问题(假设每只小鸡0.5元,每只公鸡2元,每只母鸡3元,现在有100元买100只鸡,问:有几种买法。)

x+y+z=100;

3x+2y+0.5z=100;

代码如下:

 #include<stdio.h>

 int main(){
int x,y,z;//分别代表小鸡,公鸡和母鸡数量
int flag=;
for(x=;x<=;x++){
for(y=;y<-x;y++){
z=-x-y;
if(*x+*y+0.5*z==){
printf("第%d种买鸡方案是:%2d只小鸡,%2d只公鸡,%2d只母鸡\n",flag,x,y,z);
flag++;
}
}
}
return ;

运行结果如下:

  

输出1到100间的素数:

代码如下:

 #include<stdio.h>

 int main(){
int i,m;
int flag=;
for(i=;i<=;i++){
for(m=;m<=i;m++){
if(i%m==){
flag++;
}
}
if(flag<=){
printf("%2d是素数\n",i);
}
flag=;
}
return ;
}

  运行结果如下:

c的详细学习(1)C语言概述的更多相关文章

  1. 大数据技术之_16_Scala学习_01_Scala 语言概述

    第一章 Scala 语言概述1.1 why is Scala 语言?1.2 Scala 语言诞生小故事1.3 Scala 和 Java 以及 jvm 的关系分析图1.4 Scala 语言的特点1.5 ...

  2. 乐字节Java学习01-Java语言概述,Java发展前景,Java的特点

    从这篇文章开始,小乐准备写一整系列的Java学习文章,一步一步带您进入Java的神奇世界! 这是第一篇:Java语言概述以及Java的发展前景 1.SUN公司介绍 SUN公司全称是Stanford U ...

  3. NLP&深度学习:近期趋势概述

    NLP&深度学习:近期趋势概述 摘要:当NLP遇上深度学习,到底发生了什么样的变化呢? 在最近发表的论文中,Young及其同事汇总了基于深度学习的自然语言处理(NLP)系统和应用程序的一些最新 ...

  4. Notes 20180506 : Java程序设计语言概述

    2.Java程序设计语言概述 如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触 ...

  5. go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )

    go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 点击加入 文件操作 func Open(name string) (file *File ...

  6. OpenGL官方教程——着色器语言概述

    OpenGL官方教程——着色器语言概述 OpenGL官方教程——着色器语言概述 可编程图形硬件管线(流水线) 可编程顶点处理器 可编程几何处理器 可编程片元处理器 语言 可编程图形硬件管线(流水线) ...

  7. Delphi XE5教程1:语言概述

    内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...

  8. OGG学习笔记01-基础概述

    OGG学习笔记01-基础概述 OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据 ...

  9. java基础---java语言概述

    一.计算机编程的两种范型 1.面向过程的模型---具有线性执行特点,认为是代码作用于数据. 2.面向对象的模型---围绕它的数据(即对象)和为这个数据定义的接口来组织程序:实际上是用数据控制代码的访问 ...

  10. 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB

    走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...

随机推荐

  1. EFFECTIVE JAVA 类和接口

    第十六条:复合优先于继承 //这是一个不好的类---执行的结果 addCount = 4(addAll的实现依赖于HashSet的add方法,InstrumentHashSet方法重写了add方法有执 ...

  2. Atitit. 高级软件project师and 普通的差别 高级编程的门槛总结

    Atitit.  高级软件project师and 普通的差别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握经常使用的概念(ORM,IOC.AOP,eve ...

  3. 早来的圣诞礼物!--android 逆向菜鸟速參手冊完蛋版

    我的说明: 让老皮特整理了这么长时间这个手冊,心里挺过意不去的,回头我去深圳带着他女儿去游乐场玩玩得了,辛苦了.peter! 太多的话语,也描写叙述不出这样的感觉了,得找个时间.不醉不归... 注:下 ...

  4. BigDecimal舍入模式使用及建议

    1. 八种舍入模式 此节内容参考于 https://my.oschina.net/sunchp/blog/670909. JDK1.5发布的枚举 RoundingMode 对 BigDecimal 的 ...

  5. jenkins调用shell脚本 输出带颜色字体

    jenkins需要安装AnsiColor插件在构建环境项选择“color ansi console output” 安装插件AnsiColor shell 脚本相关颜色设置 echo -e " ...

  6. ARM初学引导_转

    一直都在听说ARM有多么好,有多神奇,有多难学.故学它时都兴奋加恐惧.呵呵,我刚好用ARM也有一段时间了.写点东西给ARM的初学者,希望能起到帮助作用. 1,记住:ARM很简单,就如从51转换到PIC ...

  7. dwr文件上传

    配置FileService映射: dwr.xml <create creator="new"> <param name="class" val ...

  8. 微信小程序之云开发一

    最近听说微信小程序发布了云开发,可以不需要购买服务器,就能开发小程序和发布小程序,对于动辄千元的服务器,极大的节约了开发成本,受不住诱惑,我就开始了小程序的云开发,目前项目已上线,亲测不收费,闲不住的 ...

  9. Jmeter监控Linux服务器性能

    ①.下载JMeterPlugins相关的jar包,放jmeter的安装路径\lib\ext下——这个时候启动jmeter会发现,添加监听器时,出现了一堆的jp@jc……,这些就是插件的功劳. JMet ...

  10. iOS ARC也会有内存泄露

    本文转载至 http://blog.csdn.net/allison162004/article/details/38753219  iOS提供了ARC功能,很大程度上简化了内存管理的代码. 但使用A ...