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

    (1)C语言的特点:

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

特点:

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

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

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

语言表达能力强。

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

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

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

  1. #include<stdio.h> /*编译预处理*/
  2.  
  3. float area(float h,float w){ /*定义函数*/
  4. double s;
  5. s=h*w;
  6. return s;
  7. }
  8.  
  9. int main(){
  10. double h1,h2,w1,w2,s1,s2;
  11. h1=10.5;w1=20.5;
  12. h2=1.5*h1;w2=1.5*w1;
  13. s1=area(h1,w1);
  14. s2=area(h2,w2);
  15. printf(“area=%6.2f”,s1+s2);
  16. }

程序运行结果:

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

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

解决方法:在*.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;

代码如下:

  1. #include<stdio.h>
  2.  
  3. int main(){
  4. int x,y,z;//分别代表小鸡,公鸡和母鸡数量
  5. int flag=;
  6. for(x=;x<=;x++){
  7. for(y=;y<-x;y++){
  8. z=-x-y;
  9. if(*x+*y+0.5*z==){
  10. printf("第%d种买鸡方案是:%2d只小鸡,%2d只公鸡,%2d只母鸡\n",flag,x,y,z);
  11. flag++;
  12. }
  13. }
  14. }
  15. return ;
  16. } 

运行结果如下:

  

输出1到100间的素数:

代码如下:

  1. #include<stdio.h>
  2.  
  3. int main(){
  4. int i,m;
  5. int flag=;
  6. for(i=;i<=;i++){
  7. for(m=;m<=i;m++){
  8. if(i%m==){
  9. flag++;
  10. }
  11. }
  12. if(flag<=){
  13. printf("%2d是素数\n",i);
  14. }
  15. flag=;
  16. }
  17. return ;
  18. }

  运行结果如下:

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. 【VBA】切换引用样式

    在Excle中有两种引用方式,例如:第一行第一列的单元格可以是:A1  也可以是R1C1 切换引用样式的代码如下: Sub 切换引用样式() Application.ReferenceStyle = ...

  2. automaticallyAdjustsScrollViewInsets(UITextView文字顶部留有空白)

    iOS7新添加的UIViewController的属性automaticallyAdjustsScrollViewInsets 此属性默认为YES,这样UIViewController下如果只有一个U ...

  3. NSNotification的几点说明

    1.NSNotification消息的同步性 ①NSNotification使用的是同步操作.即如果你在程序中的A位置post了一个NSNotification,在B位置注册了一个observer,通 ...

  4. 【HttpClient4.5中文教程】【第一章 :基础】1.1运行请求(二)

    很多其它HttpClient4.5中文教程请查看:点击打开链接 ==================================================================== ...

  5. 进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端

    摘要:本文主要介绍进程的基本属性,基本属性包含:进程ID.父进程ID.进程组ID.会话和控制终端. 进程基本属性 1.进程ID(PID) 函数定义:      #include <sys/typ ...

  6. 让Category支持添加属性与成员变量【转载】

    Category是Objective-C中常用的语法特性,通过它可以很方便的为已有的类来添加函数.但是Category不允许为已有的类添加新的属性或者成员变量.     一种常见的办法是通过runti ...

  7. UVA-11625-Nice Prefixes (DP+矩阵快速幂)

    题目(vjudge) 题面 题意: 你有K个字母,你需要用K个字母组成L长度的字符串,定义对于该字符串的任意前缀P 必须满足    ,输出方案数%1000000007的值. 思路: 首先可以想到一种简 ...

  8. linux授权某个用户对某个目录有读写的权限

    针对特定的某一个用户设置文件或目录权限,用setfacl. 首先打开文件系统的acl功能,在挂载参数添加cal,再保存退出,比如/home分区: vim /etc/fstab /dev/sda2 /h ...

  9. Android自定义View分析

    一.基本步骤 1.自定义View的属性 2.在View的构造方法中获取自定义属性 3.重写onMesure方法(非必须) 4.重写onDraw方法 二.具体实现 1.自定义View的属性,首先在res ...

  10. centOS6.2 最小安装下的无线网络配置

    一.安装wireless_tools,http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.html 二.vi / ...