本节用来简要介绍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. 【转】Intellij IDEA常用配置详解

    1. IDEA内存优化 先看看你机器本身的配置而配置. \IntelliJ IDEA 8\bin\idea.exe.vmoptions -------------------------------- ...

  2. Android 图片查看器

    1 http://blog.csdn.net/wang8512945/article/details/8075413 2 http://blog.csdn.net/lcore/article/deta ...

  3. 转:HTTP ---HTTP头的编码问题(Content-Disposition)

    最近在做项目时遇到了一个 case :需要实现一个强制在浏览器中的下载功能(即强制让浏览器弹出下载对话框),并且文件名必须保持和用户之前上传时相同(可能包含非 ASCII 字符). 前一个需求很容易实 ...

  4. Guice 学习(七)常量和属性的注入( Constant and Property Inject)

    1.常量注入方式 package com.guice.ConstantInjectDemo; import com.google.inject.Binder; import com.google.in ...

  5. 开发中可能会用到的几个小tip----QT, pycharm, android, 等

    QT: 如果是在windows下开发的话,添加外部库,外部包含头文件路径的时候,要注意用相对路径,或者在项目上右键添加外部库的路径或者头文件路径,否则,会卡在这里开始怀疑人生... 如果是在linux ...

  6. lua学习笔记(十)

      模块与包  使用require加载模块     一个规范的模块应该返回一个table作为这个模块所有导出功能的集合     lua里没通过任何强制性语法规则要求创建模块时反回一个table     ...

  7. vim与windows/linux之间的复制粘贴小结

    vim与windows/linux之间的复制粘贴小结 用 vim这么久了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开 ...

  8. bg、fg、nohup

    1.bg 执行如下命令: tail -f log.txt 此时程序是在前台运行的,将程序放到后台执行,按ctrl+z,执行结果如下: []+ Stopped tail -f log.txt 执行bg命 ...

  9. Android注解支持(Support Annotations) (转)

    原文地址:http://www.flysnow.org/2015/08/13/android-tech-docs-support-annotations.html 注解支持(Support Annot ...

  10. USB设备驱动程序(二)

    首先我们来看USB设备描述符的结构: 在USB总线识别设备阶段就将USB描述符发送给了USB总线驱动程序,设备的数据传输对象是端点,端点0是特殊端点,在USB总线驱动程序识别阶段, 会分配一个地址给U ...