1-C语言程序设计概念_第1页
1-C语言程序设计概念_第2页
1-C语言程序设计概念_第3页
1-C语言程序设计概念_第4页
1-C语言程序设计概念_第5页
已阅读5页,还剩60页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计主讲:牟艳教材、参考书教材丁海军等编著,程序设计基础(C语言),北京航空航天大学出版社参考书C语言程序设计教程谭浩强高等教育出版社C++程序设计教程

钱能清华大学出版社课程要求课前请做好预习保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间实践!实践!再实践!!!学习方法熟悉用C语言编程的基本过程多上机实践程序是调试出来的--调试工具的使用读别人的程序不要相信自已的记忆,随时带上语言参考书准备一本简明英语小词典。以便于编程时读懂每一个错误信息熟记C语言的基本概念(语法、句法)熟悉VC6.0上机操作环境会读、会编、会调试C程序学会算法分析和算法设计课程目标:与我联系muy@计算机系办公室实验楼304#电话:85191955第一章C语言程序设计概念C语言程序概念概念C语言程序组成要素算法与程序设计方法学C程序上机步骤计算机语言、程序与软件的区别软件#include<stdio.h>main(){

printf(“hello,world\n”);}语言语言计算机语言是编写程序、制作软件的工具程序计算机语言、程序与软件的区别计算机语言:是规则和符号的集合,是与计算机交流的工具程序:求解问题的指令序列软件:程序的集合学习语言设计程序制作软件人与计算机的对话两个说不同母语的人的对话方式:一方学另一方的语言双方都学习一种第三方语言人与计算机的对话方式:计算机学习人的语言(自然语言理解)人学习计算机的语言学习第三方语言计算机能读懂的语言?机器语言(MachineLanguage)由一系列二进制0和1组成机器语言编写的1+1程序低级语言101110000000000100000000000001010000000100000000像不像天书?#include<stdio.h>voidmain(){

printf("%d\n",1+1);}人与计算机进行交流的语言C语言编写的1+1程序既不是英语,也非机器语言但更像英语高级语言比写机器语言程序容易,但比使用英语难程序设计语言

(programminglanguage)?

高级语言的魅力易学、易用、易读、易懂、强大、可移植百家争鸣,据不完全统计2500种,绝大多数是高级语言http:///~nkinners/LangList/Extras/langlist.htm可看到其列表和简介影响最大、寿命最长的是C语言流行语言应用编程语言机器语言汇编语言BasicPascalCC++JavaC#

专项编程语言LotusNotesPowerBuilder

Web编程语言HTMLXMLPHPASPJSPJavaScriptVBScript

其他perlPython…….C程序设计语言是一种高级语言高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程历史悠久,战勋卓著诞生于上世纪70年代初,成熟于80年代(C89),修订于90年代(C99)很多重量级软件都是用C写的上天入地,无所不能几乎没有不能用C写出来的软件,没有不支持C的系统很多流行语言、新生语言都借鉴了它的思想、语法从C++,到Java,再到C#,还有php等如何让计算机读懂

程序设计语言?编译程序(编译器,Compiler)的功能读入高级语言编写的程序源代码,将其翻译成在逻辑上与之等价的目标程序,即转换成机器代码(可执行程序)一种程序设计语言对应一种编译器C语言可执行程序编译器1.1.1认识C语言从这里开始例1.1打印单词“Hello,World”/*example1.1ThefirstCProgram*/#include<stdio.h>main(){

printf("Hello,World!");}>注释编译预处理函数语句运行结果:模仿例1.1写一个输出:“学习C语言,其实并不难!”的程序Hello,World!例1.2/*example1.2calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){

int

a,b,sum;

a=10;

b=24;

sum=add(a,b);

printf("sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/int

add(int

x,int

y){

int

z;

z=x+y;

return(z);}运行结果:sum=34函数语句预处理命令注释>..sum=add(a,b)..main函数add函数格式特点习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式<>main(){

……………….………………

…………..…………..

……………….

………………………….

……………….………………..}main(){

inti,j,sum;sum=0;for(i=1;i<10;i++){for(j=1;j<10;j++){sum+=i*j;}}

printf(“%d\n”,sum);}优秀程序员的素质之一:使用TAB缩进{}对齐有足够的注释有合适的空行结构特点函数与主函数(C程序是由函数构成的)程序由一个或多个函数组成必须有且只能有一个主函数main()程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/**/为注释,不能嵌套//单行注释将注释文字放在//后面

不产生编译代码编译预处理命令<>1.2算法与程序设计方法学程序=算法+数据结构算法是用计算机解题的精确描述,算法就是逐步(Step-by-step)执行某类计算的方法,一个算法描述的是有穷的动作的序列或步骤。数据结构:数据的组织方式1.什么是算法互换例将蓝、黑两墨水瓶中的墨水互换。思路:1.将蓝倒入白瓶中;2.将黑倒入原蓝瓶中;3.将原白倒入原黑瓶中。ABC完成一项任务的具体步骤1什么是算法例计算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a思路:1.将a、b、c、x输入到计算机中;

2.判断x≤a,是转3,否则转4;

3.计算bx+a2,转5;

4.计算a(c-x)+c2,转5;

5.输出M(x)的值。

求二个正整数m和n的最大公约数思想方法:设m=na0+r1(0≤r1

<n)就是说m是n的a0倍还多r1,那么m和n的最大公约数与r1的最大公约数相同。若r1=0,则n就是m和n的最大公约数若r1≠0,则再对n和r1重复上面的操作,直到求出rn=0为止。例辗转相除法欧几里德算法求525和231的最大公约数525231×26363×34242×12121×20525与231的最大公约数是21例求两个自然数的最大公约数的算法S1.输入两个自然数M、NS2.求M除以N的余数RS3.使M=N,即用N代换MS4.使N=R,即用R代换NS5.若R≠0,则重复执行S2、S3、S4(循环),否则转S6S6.输出M,M即为M和N的最大公约数M=N*a+R2算法的结构

无论多么复杂的算法,都可以用下面三种流程控制结构来描述

顺序结构选择结构循环结构3算法的表示用流程图来表示算法用程序设计语言表示算法用伪代码表示算法(自然语言+程序设计语言)3算法的表示开始acbacb输入a,b结束输出a,b顺序结构将蓝、黑两墨水瓶中的墨水互换用流程图来表示算法3算法的表示开始输入a,b,c,x输出m结束x≤aYbx+a2→ma(c-x)+c2→mN选择结构例如:计算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a用流程图来表示算法开始例:求两个自然数的最大公约数算法的流程图输入M,N求R=MMODNM=NN=RR≠0?输出M结束是否循环结构用流程图来表示算法3算法的表示Main(){

inta,b,c,m,x;

scanf(“%d”,x);a=6;b=30;c=15;if(x<=a)m=b*x+a*a;elsem=a*(c-x)+c*c;

printf(“m=%d\n”,m;}

例如:计算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a用程序设计语言表示算法3算法的表示Main(){

inta,b,c,m,x;

输入x;a=6;b=30;c=15;if(x<=a)m=b*x+a*a;elsem=a*(c-x)+c*c;

输出m;}

例如:计算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a用伪代码表示算法

算法的特征

1、有穷性

2、确定性

3、有零个或多个输入

4、有一个或多个输出

5、有效性例1:1×2×3×4×5S1:p=1S2:i=2S3:p×ipS4:i+1iS5:i<=5转到S3,否则输出p的值,终止算法。1.2.2算法设计的原则和步骤原则:自顶向下,逐步求精一般步骤明确算法的输入、输出数据自顶向下,逐步求精模块结构1.2.3算法设计基本方法与策略算法设计主要有以下的一些策略和方法和策略:穷举策略;递推与递归策略;分而治之策略;回溯策略;贪心策略;动态规划策略。1.2.4编程解决问题的一般步骤1.分析问题2.概要设计3.详细设计4.算法实现、调试与测试5.整理、编写文档例:求一元二次方程ax2+bx+c=0的实根求根公式输入数据是什么?方程系数:a,b,c

输出数据是什么?如果有实根:x1,x2如果没有实根:提示信息a,b,cx1,x2输入处理输出1.问题分析1.输入a,b,c2.数据变换3.输出x1,x22-1.计算判别式d2-2.根据d的值进行不同处理

2-2-1:ifd>0x1=…x2=…2-2-2:ifd=0x1=x2=…2-2-3:ifd<0….2.概要设计3.详细设计输入a,b,cd=sqrt(b*b-4*a*c)if(d>0)

输出

x1=(-b+d)/(2*a)x2=(-b-d)/(2*a)elseif(d==0)

输出

x1=x2=-b/(2*a)else

输出:无实根提示信息自然语言描述的算法#include<stdio.h>voidmain(){floata,b,c,d,x1,x2;

scanf(“%d%d%d”,&a,&b,&c);d=b*b-4*a*c;if(d>0){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);

printf(“x1=%f,x2=%f\n”,x1,x2);}elseif(d==0){x1=-b/(2*a);printf(“重根x=%f\n”,x1);}elseprintf(“无实根\n“);}4算法实现思考或问答题:1、C程序中是否一定包含注释,注释的作用是什么?2、每个程序至少包含一个什么函数?3、程序中main函数可以含两个以上吗?4、程序的执行次序是怎样的?5、语句的标记是什么?6、C程序的上机步骤?7、什么叫算法8、表示算法的基本结构是哪三种?9、编程解决问题的一般步骤是什么?1、C程序中是否一定包含注释,注释的作用是什么?答案:不一定,是方便阅读程序的。2、每个程序至少包含一个什么函数?答案:主函数main3、程序中main函数可以含两个以上吗?答案:不能,有且只能有一个。4、语句的标记是什么?答案:是结尾用分号即:“;”5、程序的执行次序是怎样的?答案:从主函数main开始执行,在主函数结尾结束。中间可以调用其他函数6、C程序的上机步骤?答案:编辑、编译、连接、执行7、什么叫算法?答案:算法就是解决问题的步骤;8、表示算法的基本结构是哪三种?答案:顺序结构、选择结构、循环结构9、编程解决问题的一般步骤是什么?答案:1.分析问题2.概要设计3.详细设计4.算法实现、调试与测试5.整理、编写文档编辑链接编译执行C程序的开发过程<>程序代码的录入,生成源程序*.c或.cpp语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exeC程序的开发过程1.编辑2.编译

(1)编辑指编辑创建源程序是将编写好的C语言源程序代码录入到计算机中,形成源程序文件。(2)本课程用VisualC++6.0环境提供的全屏幕编辑器。(3)在VC6.0环境中的源程序文件,其扩展名为.cpp。(1)编译源程序就是由C系统提供的编译器将源程序文件的源代码转换成目标代码的过程。(2)编译过程主要进行词法分析和语法分析,在分析过程中如果发现错误,将错误信息显示在屏幕上通知用户。经过编译后的目标文件的扩展名为.obj。

C程序的开发过程3.连接4.运行

(1)连接过程是将编译过程中生成的目标代码进行连接处理,生成可执行程序文件的过程。(2)在连接过程中,时常还要加入一些系统提供的库文件代码。经过连接后生成的可执行文件的扩展名为.exe。运行可执行文件的方法很多,可在C系统下执行“运行”命令。也可以在操作系统下直接执行可执行文件。可执行的程序文件运行后,将在屏幕上显示程序执行的结果。[例1.1]程序演示单击运行输入源程序弹出运行结果窗口运行结果返回例题返回本节目录1.1.1C程序实例(2)2.C程序实例2【例1.2】输入两个整数,输出它们的和。程序名为l1_2.cpp。#include"stdio.h" /*文件包含*/main() /*主函数*/{inta,b,c; /*声明定义变量a,b和c*/

scanf("%d%d",&a,&b); /*输入变量a和b的值*/c=a+b; /*计算c等于a与b的和值*/

printf("c=%d\n",c); /*输出变量c的值*/}运行程序输入:90<CR>7<CR>程序结果:C=97返回本节目录程序演示[例1.2]程序演示单击运行输入源程序弹出运行结果窗口运行结果输入90和7,并以回车作分隔符和输入结束符。返回例题返回本节目录1.1.1C程序实例(3)3.C程序实例3【例1.3】输入两个整数,通过调用函数计算它们的和,然后输出和值。程序名为l1_3.cpp。#include"stdio.h" /*文件包含*/int

sum(int

x,inty) /*定义sum函数*/{intz; /*声明定义变量z*/z=x+y; /*计算z等于x与y的和值*/return(z); /*将z的值返回,通过sum带回调用处*/}main() /*主函数*/{inta,b,c; /*声明定义变量a,b和c*/

scanf("%d%d",&a,&b); /*输入变量a和b的值*/c=sum(a,b); /*调用sum函数,将得到的值赋给c*/

printf("c=%d\n",c); /*输出变量c的值*/}运行程序输入:907<CR>程序结果:C=97返回本节目录程序演示[例1.3]程序演示单击运行输入源程序弹出运行结果窗口返回例题运行结果输入90和7,并以空格作间隔符,以回车作输入结束符。返回本节目录VisualC++6.0集成环境返回本节目录1.启动VisualC++6.0环境2.编辑源程序文件3.编译和连接4.执行利用VisualC++6.0集成环境开发C程序的过程如下:VisualC++6.0集成环境返回本节目录1.启动VisualC++6.0环境

方法:单击“开始”-“程序”-“MicrosoftVisualstudio6.0”-“MicrosoftVisualC++6.0”命令,启动VisualC++,VC6主窗口如下:菜单栏项目工作区标题栏输出区工具栏状态栏文件编辑区返回VisualC++6.0集成环境返回本节目录2.编辑源程序文件(1)建立新工程项目①单击“文件”-“新建”,弹出“新建”对话框。②单击“工程”选项卡;单击“Win32ConsoleApplication”选项;“工程”文件框中输入项目名,如“gc1”和“位置”框输入或选择新项目所在位置,单击“确定”按钮。

弹出“Win32ConsoleApplicationStep1of1”对话框。③单击“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论