




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序的概念与算法第1章建议和忠告1.学c语言,基础的语法规则一定要掌握,只要稍微用心,就能掌握,如果连语法规则都不熟悉,无法设计程序。2.程序设计,要先有想法,就是找到解题的思路,然后用c语言的语句来实现。3.一开始不会写,要善于模仿,改动书上的例子,写出自己的程序,写完以后分析语句的作用,加深印象。4.就算再简单的程序也一定要自己写,多写,多练以后,就熟练,等到期末考试时,根本不用担心,因为编程的题目基本上都会做了。2第一章程序的概念和算法31.1程序的概念程序是指把希望计算机做的工作写成一定形式的指令,并把它们存储在计算机的内部存储器中。
当人们给出命令之后,它就按指令操作顺序自动进行,把这种可以连续执行的一条条指令的集合称为“程序”。
目前,正在使用的计算机程序设计语言有很多种,有些语言是面向机器的,如二进制语言,而多数是面向问题的语言。4
目前的程序设计一般可分为非结构化程序设计、结构化程序设计和面向对象的程序设计.C语言是结构化程序设计语言,而C++称为面向对象的语言。
面向问题的语言都被称为计算机的“高级语言”,如C与C++语言等。5
程序是为了解决某个问题而设计,用C语句所写的序列称为C源程序,它的后缀为(.c)(我们上机使用的环境微软公司VC++,所以其源程序的后缀为.cpp).
C源程序经过编译(Compile)后生成一个目标文件(.obj).
经过链接库函数后生成可执行文件(.exe)。
这些语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式,人们学习和操作起来感到十分方便。6
问题的提出及分析
确定该问题的算法用C语言描述算法建立语言源程序C
编译生成.obj文件
连接有关库函数后生成可执行文件运行程序并输出正确的结果
C程序的设计过程如下图所示:71.2算法与流程图什么是算法?算法是指解决问题所使用的一系列合乎逻辑的解题步骤.
一个程序应包括两方面内容:(1).对数据的描述.
要指定数据的类型和数据的组织形式,即数据结构.
8(2).对操作的描述,操作步骤,即算法(algorithm).
著名计算机科学家Wirth(沃思)提出:
数据结构+算法=程序
在计算机科学中,算法要用计算机算法语言描述.
要解决一个复杂的问题,需要仔细的分析与研究此问题,并进行精确的逻辑分析,找到解决问题的方法,再用计算机实现。9
当然,求解一个给定的可解的问题,不同的人可以编写出不同的程序。
例如判断一个整数的奇偶性,大致分成以下几步:计算机读入该数;将该数除以2;判断余数是否为0;如果为0,该数为偶数;否则为奇数.
以上这些解决问题的一系列步骤就是算法,并且可以用C语言编写成程序,用以解决数的奇偶性问题。10什么是流程图?流程图是一种用图解方式说明,解决一个问题所要的一系列操作。流程图比文字更容易理解,更加直观.
流程图中的符号含义如下所示:11输入输出连接符控制流条件判断加工、处理程序的入口和出口含义常用基本组件流程图的符号及含义12例1.1
从键盘输入两个数,求这两数之和,并把结果输出.
画出此问题的流程图。
开始
输入两数
两数相加
显示结果
结束
定义两个变量程序流程图131.3结构化程序设计包含的三种结构结构化程序设计由三种结构组成:顺序结构、选择结构、循环结构。1.3.1顺序结构顺序结构的程序是一条语句接一条语句顺序地往下执行的。例如右图中,先执行语句1,然后执行语句2,最后执行语句3.
顺序结构的程序是最简单的程序。
语句1
语句2
语句314
例1.2编写一个C语言程序,输出显示下列图形。*****************
C语言的学习要努力!*****************
这是一个典型的顺序执行的程序设计,输出三个字符串,输出字符串用函数printf()完成,具体的过程描述为:开始输出:***************换行后再输出:C语言的学习要努力!换行后再输出:***************程序结束15程序流程图如图所示:开始
输出:*************结束
输出:C语言的学习要努力!
输出:****************16
下面先介绍几个C语言程序,使我们对C语言程序的特点有一个初步认识和了解.
刚开始学习,可能在某些语法点上还有不理解的地方,可以在以后的章节中得到解决和加深.#include<stdio.h>/*包含标准输入输出库预处理命令*/
intmain()/*主函数开始*/
{printf(“*************\n”);printf(“C语言的学习要努力!\n”);printf(“***************\n”);return0;}/*程序结束*/
17用C语言写成的源程序为:(P4)#include<stdio.h>/*包含标准输入输出库预处理命令*/
intmain()/*主函数开始*/
{
printf(“*************\n”);
printf(“C语言的学习要努力!\n”);
printf(“***************\n”);
return0;
}/*程序结束*/
1.main()是主函数,每一个C程序都必须一个main()主函数.
且只能有一个main()主函数.3.这是一条编译预处理命令.C语言程序设计中往往要用到输入与输出函数printf
、
sacnf,因此要有文件包含命令:#include<stdio.h>.2.函数体用大括
号{}括起来。18
#include<stdio.h>
intmain()
{
printf(“*************\n”);
printf(“C语言的学习要努力!\n”);/*输出一行字符*/printf(“***************\n”);
return0;
}
printf()函数是C语言中的专用输出函数,双引号内的字符串按原样输出.
/*……*/是注释部分,对编译和运行不起作用,基本上可放于程序任何地方.
‘\n’是一转义字符
(为换行符).
语句最后有一个分号
;
。19#include<stdio.h>
intmain()
{
printf(“*************\n”);
printf(“C语言的学习要努力!\n”);
printf(“***************\n”);
return0;/*与main函数中的int相对应*/}
main()函数是由操作系统调用的.
标准C++要求main()函数声明为int型.
如果程序正常执行,则向操作系统返回0,
否则返回1.20思考:1.在例1-1.c中,如果没有main(),编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?2.在例1-1.c中,如把main写成了Main,编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?3.在例1-1.c中,如printf(“********\n”);后少了“;”号,编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?214.在例1-1.c中,如没有写上预处理命令#include<stdio.h>,编译程序后出现的错误提示是什么?想想这是为什么?5.在例1-1.c中,任何一行的输出语句中少了符号\n,程序运行后的结果有什么变化?问在C语言中符号\n的作用是什么?6.在例1-1.c中,如printf(“***********\n”);后少了双引号,编译程序后出现的错误提示是什么?221.3.2
分支结构在程序执行过程中,程序的流程可由多路分支组成,根据不同的条件去执行不同的语句块。
这是一个两分支结构。
首先判断条件是否为“真”,如为真,执行语句块1,否则执行语句块2。
语句块2
语句块1
假真条件23
假如判断从键盘输入的两个数的大小:
如果:x>y,提示:x大于y.
如果:x<y,提示:x小于y,
分支结构形式
x>y?
输出x小于y真假
输出x大于y
下一步此时将会用到如下所示的流程图:输出:24例1.3
从键盘输入两个数,判断两个数的大小。分析:这是一个分支程序设计,具体的过程描述为:程序开始定义两个变量:x,y输入二个数给x,y如果x大于y输出:x大于y否则输出:x小于y程序结束25
开始给x,y输入相应的值
定义两个变量:x,y
结束x>y?输出:
x小于y
输出:x大于y两数中求最大值流程图真假26例1.3用C语言写成的源程序为:(P8)#include<stdio.h>
intmain()
{
intx,y;
/*定义二个变量*/
scanf(“%d%d”,&x,&y);
/*读入两个整型数给变量x、y*/
if(x>y)
/*如果x大于y*/
printf(“x大于y\n”);
/*输出:x大于y*/
else
/*否则*/
printf(“x小于y\n”);
/*输出:x小于y*/
return0;}这一行为变量定义,指明x,y是整型变量(integer)。scanf()函数是专用的输入函数.&的含义是“取地址”的意思,函数的作用是:从键盘输入的两个值,分别送到
x,y所占地址的内存单元中去,也就是输入x,y的值.
%d为输入格式说明,d为十进制整数格式说明符。两分支结构27程序运行结果如图所示。程序运行时输入:1000500(然后回车).两数间用空格分隔.28程序运行结果数据输入行的显示.程序运行后,结果显示.29思考:1.在例1_2.c中,如果没有语句intx,y;编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?2.在例1_2.c中,如把语句scanf(“%d%d”,&x,&y);写成:scanf(“%d%d”,x,y);用来读入两个整型数给变量x、y,程序的运行结果会如何?303.在例1-2.c中,如程序在运行时输入为:1000,500,程序能否得出正确的运行结果?4.在例1-2.c中,如果在if(x>y)后加上“;”号,编译程序后出现的错误提示是什么?想想这是为什么?5.在例1-2.c中,输入源程序后,int、if、else为什么会变颜色,在C程序设计中有什么特殊的意义?311.3.3循环结构如果在程序中需要根据某项条件重复地执行某项任务若干次,直到满足或不满足某条件为止,这就构成循环结构。
循环条件?初始条件循环语句假真
注:循环不是简单的重复.首先判断循环条件是否为“真”,如循环条件为“真”,执行循环语句.32
例如,要做一个累加运算,从1加到100.
算法是:先把计数变量i和sum设为0,然后变量i从1开始,把1加入总数;然后i增加1,i为2,把i加入总数;然后i再增加1,i为3,再把i加入总数;
一直累加,当i为100加入总数后,i还要增加1,到i的值为101,此时条件不满足,循环不再做。
最后的总数就是1加到100的和。33例1.4计算1+2+3+4+……+100的值,用循环的方法,画出程序的流程图。分析:和的初始值sum为0,循环变量i的变化从1到100。当i值为1时,把i加入sum,然后判断i的值是否小于100,如果是,i增1,再把i加入sum;然后判断i的值是否小于100,如此反复循环,当i的值大于100时,停止循环,最后输出sum。sum为什么要置0?34具体的过程描述为:程序开始定义变量sum,i,并分别赋值0、1判断i是否小于等于100如是,把i加入sum,i增加1否则停止循环输出sum程序结束
开始
定义变量sum、ii<=100
sum=sum+ii=i+1输出sum
结束YN35#include<stdio.h>intmain(){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf("从1加到100的和为%d:\n",sum);return0;}例1_4.c:计算1+2+3+4+……+100的值(P10)
这一行定义i,
sum为整型变量(integer),并赋初值.
(注:局部变量不赋初值,其值为随机值).这一行是sum+i的值赋给变量sum.i的值自增1.这是一个循环结构.36#include<stdio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一下学期班主任工作年度计划
- 小学生培优补差教学计划
- 后进生阅读能力提升计划
- 工程技术部系统维护职责
- 教科版2025版六年级上册科学重点复习计划
- 蔚县供热管理办法
- 薄改项目管理办法
- 煤厂人员管理办法
- 船舶抵押管理办法
- 豆薯田间管理办法
- GB 34914-2021净水机水效限定值及水效等级
- 中学田径基础校本课程教材
- 新外研版新教材高中英语选择性必修一全册课文及翻译(中英Word精编)
- 河北省邯郸市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- GFG涂油机操作控制台用户手册翻译
- 城市规划原理课件(完整版)
- 400T汽车吊主臂起重性能表
- 大信审计执业问题解答-存货监盘审计指引
- 西学中试题库及答案
- 人力行政部工作流程图
- 基于UC3844的反激开关电源设计
评论
0/150
提交评论