第一章 程序设计和C语言

1.1 什么是计算机程序?

@ ······ 所谓程序,就是一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。

计算机的一切操作都是由程序控制的。所以计算机的本质是机器 ,程序和指令是计算机系统中最基本的概念

1.2 什么是计算机语言

@ ·· ····计算机和人都能识别的语言就是计算机语言

计算机语言经历的几个阶段

(1)机器语言 : 计算机工作基于二进制,从根本上说,计算机只能识别和接受0和1组成的指令。这种计算机能直接识别和接受的二进制代码称为机器指令。机器的指令集合就是该计算机的机器语言;

(2)符号语言:例如用ADD代表“加” ,SUB代表“减”,LD代表“传送”

例: ADD A,B {执行A+B---A,将寄存器A中的数与寄存器B中的书相加,放到寄存器A中}

显然,计算机并不能直接识别和执行符号语言的指令,需要用一种称为汇编程序的软件吧符号语言的指令转换为机器指令。一条符号语言的指令对应转换为一条机器指令,因此符号语言又称为汇编语言。

不同型号的计算机的机器语言和汇编语言是互不通用的完全依赖于计算机的特性,是面向机器的语言,它贴近计算机,故称为计算机低级语言。

(3)高级语言:第一个计算机高级语言-----FORTRAN语言,这种语言功能很强,且不依赖机器,用它写出的程序对任何型号的计算机都适用,它与具体机器距离较远,故称为计算机高级语言。

用一种编译软件把高级语言写的程序(源程序 source program)转换为机器指令的程序(目标程序 object program),然后让计算机执行机器指令程序,得到结果。

高级语言经历了不用的发展阶段
(1)非结构化的语言    (2)结构化语言    (3)面向对象语言

####1.3  C语言的发展及特点
........发展:BCPL语言 -----B语言----C语言
........特点:
(1)语言简洁、紧凑、使用方便、灵活,C语言一共有37个关键字,9种控制语句,主要由小写字母表示
(2)运算符丰富。
(3)数据类型丰富
(4)语法限制不太严格
(5)具有结构化的控制语句
(6)允许直接访问物理地址,能进行位操作
(7)可移植性好
(8)生成目标代码质量高,执行效率高

1.4 最简单的c语言程序

#include <stdio.h>  //这是预编译处理指令
int main() //定义主函数
{ //函数开始的标志
printf("This is a C program.\n");//输出所指定的一行信息
return 0; //函数执行完毕时返回函数值0
} //函数结束时的标志

程序分析:

····stdio.h 是系统提供的一个文件名,“standard input& output“的缩写,”.h“是头文件(header file)

····其中main是函数的名字,表示主函数,main前面的int表示此函数的是int类型,在执行主函数后会得到一个值其值为整型;

····return 0 的作用是:当main函数执行结束前将整数0作为函数值返回到调用函数处。

····每个C语言程序都必须有一个main函数。函数体由“{ }”括起来。

·····“\n”是换行符,在执行完输出语句后光标显示在下一行。

C语言注释有两种方式

(1)以“ // ”开始 的单行注释

(2)以“ /**/ ”可以注释块

注意:若注释符号出现在输出语句的字符串中则作为其中的一部分

例如: print("//how old are you!")

输出 是://how old are you!

例:求两个整数之和

include<stdio.h>
int main()
{
int a,b,sum;
a=123;
b=456;
sum=a+b;
printf("sum is %d\n",sum);
return 0;
}
第一个参数:sum is %d 的作用是输出格式字符串(sum is是用户希望输出的字符,%d是指定的输出格式表示十进制)
第二个参数:sum表示要输出变量sum的值
### 例,求两个整数中的较大者

include<stdio.h>//编译预处理指令

int main()

{

int max(int x,int y); //对被调用函数max的声明

int a,b,c; //定义变量a,b,c

scanf("%d,%d",&a,&b);//输入变量a,b值

//&是地址符,&a的含义是变量a的地址

c=max(a,b);
printf("max=%d\n",c);//输出c的值
return 0; //返回函数值为0

}

int max(int x,int y) //定义max函数,函数值为整形,形式参数x和y为整形

{

int z;

if(x>y)z=x;

else z=y;

return(z);

}


#####C语言程序的结构
(1)一个程序由一个或多个源程序(3各部分)组成;*··预处理指令··全局声明···函数定义*;
(2)函数是C程序的主要组成部分(一个C语言程序是由一个或多个函数组成,其中**必须包含一个main函数且只能有一个main函数**);
(3)一个程序包含两个部分:【函数首部和函数体(声明部分和执行部分)】;
(4)**程序总是从main函数开始执行的**;
(5)每个数据声明和语句的最后**必须有一个分号**;
(6)程序应当包含注释;
(7)c语言本身不提供输入输出语句; ####1.5 运行C程序的步骤和方法
(1)输入和编辑源程序;
(2)对源程序进行编译,得到的一个二进制目标文件(.obj)
(3)进行连接处理,与函数库链连接成一个整体
**一次编译只能得到与一个源程序文件相对应的目标文件称为目标模块**
(4)运行可执行文件
····运行可执行程序(.exe) ####1.6 程序设计的任务
1.程序设计是指从确定任务到得到结果、写出文档的全过程
2.一般经历的阶段:
···问题分析······设计算法······编写程序·····对程序进行编辑、编译、连接······运行程序,得到结果
3.关键字的概念:
·····调试(debug):发现和排除程序中的故障过程
·····程序测试:设计多组测试结果,检查程序对不同的数据的运行情况。加以修改漏洞
·····程序文档(说明书):主要有程序名称、程序功能、运行环境、程序的装入和启动 ## 第二章 算法---程序的灵魂 ####**1.一个程序主要包括以下两方面的信息:**
····对数据的描述:在程序中,要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构。
····对操作的描述:即要求计算机进行操作的步骤,也就是算法。
数据是操作的对象,操作目的是对数据进行加工处理 #####算法+数据结构=程序
**** ####2.1 什么是算法?
```为了解决一个问题而采用的方法和步骤,这就是算法。
计算机算法分为两大类别:数值运算算法和非数值运算算法.

2.2简单的算法举例

**例题1:求 “13579*11”的值 **

include<stdio.h>
int main()
{
int i;
int j;
int sum=1;
for(int i=1;i<=6;i++)
{
j=2*i-1;
sum=sum*j;
}
printf("1*3*5*7*9*11 sum equals is %d\n",sum);
return 0;
}

@例题2:判定2000-2500年中的每一年是否为闰年

先分析闰年的条件:
(1)能被整除,但不能被100整除的年份都是闰年;
(2)能被400整除的年份是闰年;

例题3:求1-1/2+1/3-1/4+1/5-1/6.......1/99-1/100的值

@  用sign代表当前处理的项前面的数值符号,term代表当前项的值。sum是累加和,deno是当前项的分支。
S1:sign=1
S2:sum=1
S3:deno=2
S4:sign=(-1)*sign
S5:term=sign*(1/deno)
S6:sum=sum+term
S7:deno=deno+1
S8:若deno<=100返回S4;否则算法结束

2.3算法的特性

(1)有穷性

(2)确定性

(3)有零个或多个输入

(4)有一个或多个输出

(5)有效性


2.4 怎样表示一个算法

常用的方法有:

(1)自然语言:就是人们日常用的语言可以是汉语、英语等,一般不用自然语言来表示算法

(2)传统流程图:流程图是用一些图框形成图形来表示各种操作;

比如:菱形框的作用是对一个给定的条件进行判断;它有一个入口,两个出口。

(3)结构化流程图 由三种基本结构组成

----【顺序结构】先执行A操作在执行B操作

-----【选择结构】又称为选取结构或分支结构,此结构中必定包含一个判断框

-----【循环结构】又称为重复结构,即反复执行某一个部分的操作(直到型until)&&(当型while)

¥直到型:作用是,先执行A框,然后判断给定的P2条件是否成立,如果P2条件不成立,则在执行A,然后对P2条件进行判断,如此反复

¥当型:作用是,当给定的p1条件成立时,执行A框,执行完A后,在判断P1条件是否成立,如果仍成立,在执行A框。

三种基本结构有以下共同特点:

【1】只有一个入口

【2】只有一个出口

【3】结构内的每一部分都会被执行到

【4】结构内不存在死循环


(4)用N-S结构化流程图表示算法

全部算法写在一个矩形框内,在该框内还可以包含其他从属于它的框,就是由一些基本的框组成的大框。

(N-S图如同一个多层的盒子,又称为盒图)

归纳起来可知:

一个结构化的算法是由一些基本结构顺序组成的;在基本结构之间不存在向前或向后的跳转,流的转移只存在于一个基本结构范围内

(5)用伪代码表示算法

第三章 最简单的C程序结构-----顺序结构设计

@例题1:将华氏温度转化表示成摄氏度

#include<stdio.h>
int main()
{
float f;
float c;
scanf("%f",&f);
c=(5.0/9.0)*(f-32.0);//c为浮点所以要加小数点
printf("f=%f\n c=%f\n",f,c);
return 0;
}

例题2:/*计算存款信息,有1000元,想存一年,有三种方法可选

(1)活期,年利率r1;

(2)一年定期,年利率为r2;

(3)存两次半年定期,年利率为r3.

请分别计算出一年后的的本息和

#include<stdio.h>
int main()
{
float r1,r2,r3;
float p0=1000;
float p1;
float r1=0.0036; float p2;
float r2=0.0025; float p3;
float r3=0.0198; p1=p0*(1+r1);
p2=p0*(1+r2);
p3=p0*(1+r3/2)*(1+r3/2); printf("p1=%f\n p2=%f\n p3=%f\n",p1,p2,p3);
return 0;
}

3.2 数据的表现形式及其运算

(1)常量包括以下几种:

···整型常量(例如.1000);

···实行常量(例如.12.23);

····字符常量包括------【普通字符】……{用单撇号括起来的一个字符,例如‘a’ 、‘b’,不能写成 ‘ab’ 字符常量只能是一个字符,不包括单撇号;;;存储的不是字母a、 b而是以其ASCii代码存储 a=97 } &&【转义字符】以‘\’开头的字符序列。

转义字符 字符值 输出结果
' 一个单撇号(') 具有此八进制码的字符
" 一个双撇号(") 输出此字符
? 一个问号(?) 输出此字符
\ 一个反斜线(\) 输出此字符
\a 警告(alert) 产生声音或视觉信号
\b 退格(backspace) 将当前位置后退一个字符
\f 换页(form feed) 将当前位置移到下一页的开头
\n 换行 将当前位置移到下一行的开头
\r 回车(carriage return) 将当前位置移到本行开头
\t 水平制表符 将当前位置移到下一个tab键
\v 垂直制表符 将当前位置移到下一个移到下一个垂直制表符对齐点

····【字符串常量】例如:“boy” “123”字符串常量是双撇号中的全部字符,不可以写成 ‘CHINA’

····【符号变量】用#defind指令,指定用一个符号名称代表一个变量。

例如:#define PI    3.1416     //注意行末没有分号
#define PRICE 40 //

@注意:要区分符号常量和变量,不要把符号常量误认为变量。符号常量不占用内存,只是一个临时符号,在预编译后这个符号就不存在了,故不能对符号常量赋于新值。习惯上符号常量用大写字母表示。

(2)变量

	变量代表一个有名字、具有特定属性的一个存储单元。它用来存放变量的值数据。,变量必须先定义后使用,变量的值是可以改变的

(3)常变量

	例如:count int a=3;//表示a被定义为一个整形变量,指定值为3,且其值不能改变

注意:常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储空间,只是不允许改变其值。可以说常变量是有名字的不变量,而常量是没有名字的不变量

(4)标识符

	标识符就是一个对象名字,标识符的组成:字母、下划线、数字三种符号,且第一个字符必须是字母或下划线。

(5)数据类型

所谓类型就是对分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。

	数据类型有:基本类型、枚举类型(enum)&空类型(void)、派生类型;
基本类型包括:整型类型、浮点类型;
整型类型包括:基本整型(int)、短整型(short int)、长整形(long int)、双长整型(long long int)、字符型(char)、布尔型(bool);
浮点类型:单精度浮点类型(float)、双精度浮点类型(double)、复数浮点型(float_complex,double_comple,long_comple);
派生类型:指针类型(*)、数组类型([])、结构体类型(struct)、函数类型

1./整型数据的要点:

···整型在存储单元中的存储方式是:用整数的补码形式存放;

···正数的补码是本身 简称三码合一。

····求负数补码的方法:将此数的绝对值写成二进制形式,然后对其后面所有的二进位按位取反加1.

···sizeof是测量类型或变量长度的类型。

@整型变量符号的属性

| 类型 | 字节数|或

| :-------- | --------

2017.10.27 C语言精品集的更多相关文章

  1. [软件工程基础]2017.10.27 第二次 Scrum 会议

    决议 周六前项目交接 Milestone 完成 周六集体开发 游心整理物理网站上的实验流程和绪论复习题 石奇川上线静态版实验流程和绪论复习题库 李煦通构思后端如何实现绪论题库,包括和用户记录的关联方式 ...

  2. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  3. 第15次Scrum会议(10/27)【欢迎来怼】

    一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/27 17:20~17:45,总计25min. 地点 ...

  4. 能让你成为更优秀程序员的10个C语言资源

    能让你成为更优秀程序员的10个C语言资源 本文由 伯乐在线 - archychu 翻译自 mycplus.欢迎加入 技术翻译小组.转载请参见文章末尾处的要求. 一些人觉得编程无聊,一些人觉得它很好玩. ...

  5. 团队作业4——第一次项目冲刺(Alpha版本)2017.4.27

    2017.04.27 天气阴沉 小雨. 时间:上午 9:35 ---10:10分 地点:陆大314实验室 会议内容:每天充分利用好大课间的时间,今天对昨天的的细节问题进行了讨论及方法更正.时间不等人这 ...

  6. Adobe Audition CC 2017 (10.0)安装教程

    Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...

  7. 2017.10.10 java中的继承与多态(重载与重写的区别)

    1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...

  8. 背水一战 Windows 10 (27) - 控件(文本类): TextBlock

    [源码下载] 背水一战 Windows 10 (27) - 控件(文本类): TextBlock 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例 ...

  9. VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群

    VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群 下一篇:VMWare9下基于Ubuntu12.10搭建Hadoop-1.2.1集群-整合Zookeeper和Hbase 近期 ...

随机推荐

  1. java课后思考题(四)

    1. 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 输出结果: 结论: 在Java中,内容相同的字串常量(“Hello”)只保存一份以 ...

  2. JavaSE---对象序列化

    1.对象序列化机制 允许把内存中的Java对象转换成平台无关的二进制流,从而可以将二进制流持久保存到磁盘 或 在网络中直接传输: (目的:使得对象可以脱离程序的运行而独立存在) package com ...

  3. elasticsearch 插件 大全

    本文使用的elasticsearch版本:1.7.3 推荐几款比较常用的elasticsearch插件 1.集群监控插件 bigdesk node cluster 2.集群资源查看和查询插件 kopf ...

  4. [转]LazyLoad.js及scrollLoading.js

    本文转自:http://blog.csdn.net/ning109314/article/details/7042829 目前图片延迟加载主要分两大块,一是触发加载(根据滚动条位置加载图片):二是自动 ...

  5. (转)mkpasswd 的使用

    原文:http://blog.csdn.net/u010339879/article/details/69788032 这个命令是随机生成 密码的一个工具, 如果没有这个命令,请安装相应的包. yum ...

  6. Python 的命名空间

    Python命名空间的本质: 一.命名空间的定义: 二.命名空间的查找顺序: 三.命名空间的生命周期: 四.通过locals()和globals() BIF访问命名空间. 重点是第四部分,我们将在此部 ...

  7. 读取和写入Cookies

    #region 读取或写入cookie 2 /// <summary> 3 /// 写cookie值 4 /// </summary> 5 /// <param name ...

  8. SQLSERVER 2012的多维数据库浏览 ,不能多维的显示

    网上搜索后发现,原来ssms2012不支持这种方式,要使用Excel的方式 参考地址:http://www.flybi.net/question/12567

  9. Tomcat启动过程[更详细]

    原文地址:http://blog.csdn.net/jiaomingliang/article/details/47427083

  10. Maven常用插件整理

    maven内置变量 ${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project.basedir}同${basedir}; ${proj ...