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

下载本文档

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

文档简介

2022/12/261C语言程序设计

任课教师介绍

许创

副教授(工学院计算机系)手机:692211E-mail:cxu@网站:/xuFTP:052022/12/261C语言程序设计任课教师介绍2022/12/262上机习题CH1EX3:调试程序,找出其中错误并改正。CH2ABS:a,b是任意输入的两个整数,计算a+|b|,并显示计算结果。CH2CVS:输入一个华氏温度F,输出对应的摄氏温度。公式为:c=5/9(F-32)练习:2022/12/262上机习题CH1EX3:调试程序,找出2022/12/263第1章C语言程序设计基本概念了解C语言的历史和特点熟悉计算机语言的不同类型了解C语言的结构理解C语言程序的开发过程了解算法的概念了解结构化程序设计方法学习目标2022/12/263第1章C语言程序设计基本概念了解2022/12/264C语言的特点语言简洁、紧凑,使用方便、灵活运算符丰富,具有多种运算功能有丰富的数据类型生成代码质量高,程序执行效率高C程序的可移植性好是一种结构化程序设计语言语法限制不严,程序设计自由度大C提供的位运算可直接对硬件操作2022/12/264C语言的特点2022/12/265程序设计语言——人与计算机进行信息交流的工具机器语言汇编语言高级语言面向过程语言(C、PASCAL等)面向对象语言(JAVA、C++等)甚高级语言(尚在开发)2022/12/265程序设计语言2022/12/266机器语言

1、与计算机硬件的设计密切相关(无移植性)

2、是计算机能直接识别的语言

3、由一组二进制0和1序列构成

【例】计算4+8

取数1011000000000100

将4送累加器加00000100000010008与累加器中的4相加停机11110100特点:繁琐、难记、难读、难写、不可移植

2022/12/266机器语言【例】计算4+8特点:繁2022/12/267汇编语言

1、与计算机硬件的设计密切相关

2、计算机不能直接识别

3、计算机基本操作是采用英语缩写的助记符来编写程序

【例】计算4+8MOVEAL,4

将4送累加器

ADDAL,8

8与累加器中的4相加HLT

停机

2022/12/267汇编语言【例】计算4+82022/12/268

汇编程序:将汇编语言程序转换为计算机能识别的机器语言2022/12/268汇编程序:2022/12/269高级语言

基本与计算机的硬件设备无关

【例】计算4+8(用C语言编写)

sum=4+8;编译程序:

高级语言转换为机器语言的翻译程序2022/12/269高级语言【例】计算4+8(用C语言2022/12/2610简单的C程序实例

运行结果:

WelcometoCprogramming.【例1-1】

//第一个C程序#include"stdio.h"voidmain()/*函数头*/{printf("WelcometoCprogramming.\n");}注释头文件主函数、注释

系统提供的输出函数

2022/12/2610简单的C程序实例运行结果:【例1-2022/12/2611

【例1-2】编写求三数中最大值问题的程序#include<stdio.h>intmax_value(inta,intb,intc){intmax;if(a>b)max=a;elsemax=b;if(max<c)max=c;return(max);}voidmain(){intx,y,z,maxx;scanf("%d%d%d",&x,&y,&z);maxx=max_value(x,y,z);printf("max=%d\n",maxx);}

输入:857

输出:max=82022/12/2611【例1-2】编写求三数中最大值问题的2022/12/2612C语言程序的构成C程序由函数组成每个函数完成相对独立的功能C提供了丰富的库函数每个C程序都有一个叫做main的主函数main()后面花括号内的部分叫函数体函数体含“说明部分”和“执行部分”说明部分和执行部分各由若干语句组成语句以分号为结束标记2022/12/2612C语言程序的构成2022/12/2613C函数的一般形式

函数类型函数名(形式参数表){

说明、定义部分函数执行部分

}2022/12/2613C函数的一般形式2022/12/2614NiklausWirth提出的著名公式:

数据结构+算法=程序什么是算法?

——对特定问题求解方法和步骤的一种描述。算法的两大要素:①操作②控制结构算法解决的问题:①做什么②如何做算法2022/12/2614NiklausWirth提出的著2022/12/2615算法的特性:

1.有穷性

2.确定性

3.有效性

4.有零个或多个输入

5.有一个或多个输出描述算法的工具:

自然语言伪代码流程图

NS图等等2022/12/2615算法的特性:2022/12/2616【例】求三个数中最大值问题

自然语言:日常使用的语言

先将a,b进行比较,找出其中的大数;然后再把它和第三个数c进行比较,如果它比c大,则它就是最大数,否则c是最大数。

伪代码:介于自然语言和计算机语言之间的文字和符号进行描述IFa>bTHENmax=aELSEmax=bIFmax>cTHEN输出maxELSE输出c2022/12/2616【例】求三个数中最大值问题自然语言2022/12/2617流程图:传统图语言表示法

ANSI规定了一些常用的流程图符号:起止框输入输出框判断框处理框流程线

连接圈【例】酱油与醋的问题:试用自然语言描述如何将酱油与醋互换位置的过程。

2022/12/2617流程图:传统图语言表示法起止框2022/12/2618三个数中最大值问题的流程图(图1-4)2022/12/2618三个数中最大值问题的流程图(图1-42022/12/2619N-S图(结构化流程图):图语言表示法

三个数中最大值问题的N-S图(图1-5)2022/12/2619N-S图(结构化流程图):图语言表2022/12/2620结构化程序设计方法

结构化程序设计的基本方法:

自顶向下,逐步求精,将复杂问题分解为若干的独立的小问题(小模块)。

【例】求解两个数的平均值1、分解:问题分解为三个模块:

S1:输入两个数a,bS2:求两个数的平均值赋给averS3:输出平均值

2022/12/2620结构化程序设计方法结构化程序设计的基2022/12/26212、实现方法,算法细化

S1:调用输入函数,完成输入S2:设计一个求解平均值的函数averge()S3:调用输出函数,完成输出

3、C语言实现主函数的编程

//求两个数的平均值voidmain()//主函数{floata,b,ave;//声明a、b和ave为实型变量

scanf("%f%f",&a,&b);//输入a、b两个数的值

ave=average(a,b);//调用average函数求平均值

printf("average=%f\n",ave);//输出ave的值}2022/12/26212、实现方法,算法细化3、C语2022/12/26224、逐步求精:设计averag(floatx,floaty)函数的算法(设两个参数为floatx,floaty)S2.1:把x加y的和除2的值送给averS2.2:把aver的值返回给主函数。5、C语言实现averag(floatx,floaty)函数的编程#include<stdio.h>floataverage(floatx,floaty)//求两个数的平均值{floataver;//声明aver为实型变量

aver=(x+y)/2;//计算两个数的平均值赋给averreturn(aver);//aver的值作为函数的的返回值}2022/12/26224、逐步求精:设计averag(fl2022/12/26236、两模块连接成一个完整的求解程序#include<stdio.h>floataverage(floatx,floaty)//求两个数的平均值{floatz,aver;//声明aver为实型变量

aver=(x+y)/2;//计算两个数的平均值赋给averreturn(aver);//aver的值作为函数的的返回值}voidmain()//主函数{floata,b,ave;//声明a、b和ave为实型变量

scanf("%f%f",&a,&b);//输入a、b两个数的值

ave=average(a,b);//调用average函数求平均值

printf("average=%f\n",ave);//输出ave的值}2022/12/26236、两模块连接成一个完整的求解程序2022/12/2624用自然语言描述:S1:输入两个整数x,yS2:交换x,y细化S2:S2.1:将x赋给t

S2.2:将y赋给x

S2.3:将t赋给y相应的程序段://输入x、yscanf("%d%d",&x,&y);//交换x、yt=x;x=y;y=t;【例1-3】设计两整数交换的算法

2022/12/2624用自然语言描述:相应的程序段:【例12022/12/2625两数交换的另一个奇特难懂的算法:S1:输入两个整数x,yS2:将x+y赋给x

S3:将x-y赋给yS4:将x-y赋给x相应的程序段:

scanf("%d%d",&x,&y);//输入x、yx=x+y;//交换x、yy=x-y;x=x-y;2022/12/2625两数交换的另一个奇特难懂的算法:2022/12/2626【例】对于一个大于3的整数,判断它是不是素数(循环之例)算法如下:

1.输入n2.i=23.n被i除,得余数r4.若r=0,则输出n“不是素数”,算法结束

5.i=i+16.若i<n/2,则重新执行3.;否则执行7.7.输出n“是素数”,算法结束2022/12/2626【例】对于一个大于3的整数,判断它是2022/12/2627结构化程序的三种基本控制结构:顺序结构选择结构(if_else)循环结构(while,repeat_until)顺序结构:流程图N-S图

先执行A操作,再执行B操作。2022/12/2627结构化程序的三种基本控制结构:顺序结2022/12/2628选择结构:流程图N-S图

当P条件成立(为真T)执行A

否则(为假F)执行B2022/12/2628选择结构:流程图N-S图当P2022/12/2629循环结构1(while

):流程图N-S图

当P条件成立(为真T)反复执行A,直到P为‘假’时结束。2022/12/2629循环结构1(while):流程图N2022/12/2630循环结构2(repeat_until)流程图N-S图

先执行A操作,再判断P,若为‘假’,再执行A,直到P为‘真’时结束。2022/12/2630循环结构2(repeat_until2022/12/2631三种基本结构的共同特点:1)单入口2)单出口3)无死语句4)无死循环顺序选择循环2022/12/2631三种基本结构的共同特点:顺序选择循环2022/12/2632C程序的编辑、编译和执行编辑:利用编辑器,通过键盘将C源程序输入到计算机,并以文件形成保存到磁盘。编译:利用编译器,将C源程序编译成目标程序。连接:利用连接器,将C已编译的目标程序和库函数连接之后,生成可执行文件,并以文件形成存入到磁盘上,文件扩展名为.exe。运行:

在操作系统下运行可执行文件。2022/12/2632C程序的编辑、编译和执行编辑:利用编2022/12/2633上机实践运行环境——turboC(2.0或3.0)编辑——录入、修改编译——翻译为二进制代码(obj)连接——连接各模块的二进制代码,生成可执行文件(exe)运行——运行程序2022/12/2633上机实践2022/12/2634TurboC2.0上机环境简介四个最主要菜单File

创建新文件、打开文件、保存文件、改变目录、退出系统Edit

切换到编辑状态Compile

编译、连接成目标文件或可执行文件Run

自动编译、连接并运行2022/12/2634TurboC2.0上机环境简介四2022/12/2635TurboC3.0上机环境简介五个最主要菜单File

创建新文件、打开文件、保存文件、改变目录、退出系统Edit

常用编辑命令Compile

编译、连接成目标文件或可执行文件Run

自动编译、连接并运行Windows

窗口切换2022/12/2635TurboC3.0上机环境简介五2022/12/2636可用快捷键打开菜单

如按<Alt>+F可打开文件菜单输入程序前一般应先改变好目录

File/Changedir先编译、后保存、再运行在3.0版本,可用鼠标,在多程序窗口环境下可选[Windows]-[Next]命令作窗口切换2022/12/2636可用快捷键打开菜单2022/12/2637TurboC常用编辑命令<PgUp>--上翻一屏<PgDn>--下翻一屏<Home>--移到行首<End>--移到行尾^QR--移到文件首^QC--移到文件尾2022/12/2637TurboC常用编辑命令<PgU2022/12/2638^QF--查找^I--查找下一个^QA--查找并替换^Y--删除一行^N或<Enter>--插入一行<BackSpace>--向前删一个字符<Del>--向后删一个字符2022/12/2638^QF--查找2022/12/2639^QY--从光标删到行尾<Insert>--插入状态开关^KS--存盘不退出<Esc>--将本次操作作废或退回上级菜单2022/12/2639^QY--从光标删到行尾2022/12/2640TurboC常用块操作命令^KB--定义块首^KK--定义块尾^KC--块复制^KV--块移动^KY--块删除^KH--隐藏/显示块^KW--写块^KR--读块2022/12/2640TurboC常用块操作命令^KB2022/12/2641TurboC常用功能键F2--存盘F5--缩放当前窗口F6--切换编辑窗/信息窗F9--编译并连接F10--返回主菜单<Alt>+F5--切换运行/用户屏幕^F9--编译、连接并运行

2022/12/2641TurboC常用功能键F2--存2022/12/2642C语言程序设计

任课教师介绍

许创

副教授(工学院计算机系)手机:692211E-mail:cxu@网站:/xuFTP:052022/12/261C语言程序设计任课教师介绍2022/12/2643上机习题CH1EX3:调试程序,找出其中错误并改正。CH2ABS:a,b是任意输入的两个整数,计算a+|b|,并显示计算结果。CH2CVS:输入一个华氏温度F,输出对应的摄氏温度。公式为:c=5/9(F-32)练习:2022/12/262上机习题CH1EX3:调试程序,找出2022/12/2644第1章C语言程序设计基本概念了解C语言的历史和特点熟悉计算机语言的不同类型了解C语言的结构理解C语言程序的开发过程了解算法的概念了解结构化程序设计方法学习目标2022/12/263第1章C语言程序设计基本概念了解2022/12/2645C语言的特点语言简洁、紧凑,使用方便、灵活运算符丰富,具有多种运算功能有丰富的数据类型生成代码质量高,程序执行效率高C程序的可移植性好是一种结构化程序设计语言语法限制不严,程序设计自由度大C提供的位运算可直接对硬件操作2022/12/264C语言的特点2022/12/2646程序设计语言——人与计算机进行信息交流的工具机器语言汇编语言高级语言面向过程语言(C、PASCAL等)面向对象语言(JAVA、C++等)甚高级语言(尚在开发)2022/12/265程序设计语言2022/12/2647机器语言

1、与计算机硬件的设计密切相关(无移植性)

2、是计算机能直接识别的语言

3、由一组二进制0和1序列构成

【例】计算4+8

取数1011000000000100

将4送累加器加00000100000010008与累加器中的4相加停机11110100特点:繁琐、难记、难读、难写、不可移植

2022/12/266机器语言【例】计算4+8特点:繁2022/12/2648汇编语言

1、与计算机硬件的设计密切相关

2、计算机不能直接识别

3、计算机基本操作是采用英语缩写的助记符来编写程序

【例】计算4+8MOVEAL,4

将4送累加器

ADDAL,8

8与累加器中的4相加HLT

停机

2022/12/267汇编语言【例】计算4+82022/12/2649

汇编程序:将汇编语言程序转换为计算机能识别的机器语言2022/12/268汇编程序:2022/12/2650高级语言

基本与计算机的硬件设备无关

【例】计算4+8(用C语言编写)

sum=4+8;编译程序:

高级语言转换为机器语言的翻译程序2022/12/269高级语言【例】计算4+8(用C语言2022/12/2651简单的C程序实例

运行结果:

WelcometoCprogramming.【例1-1】

//第一个C程序#include"stdio.h"voidmain()/*函数头*/{printf("WelcometoCprogramming.\n");}注释头文件主函数、注释

系统提供的输出函数

2022/12/2610简单的C程序实例运行结果:【例1-2022/12/2652

【例1-2】编写求三数中最大值问题的程序#include<stdio.h>intmax_value(inta,intb,intc){intmax;if(a>b)max=a;elsemax=b;if(max<c)max=c;return(max);}voidmain(){intx,y,z,maxx;scanf("%d%d%d",&x,&y,&z);maxx=max_value(x,y,z);printf("max=%d\n",maxx);}

输入:857

输出:max=82022/12/2611【例1-2】编写求三数中最大值问题的2022/12/2653C语言程序的构成C程序由函数组成每个函数完成相对独立的功能C提供了丰富的库函数每个C程序都有一个叫做main的主函数main()后面花括号内的部分叫函数体函数体含“说明部分”和“执行部分”说明部分和执行部分各由若干语句组成语句以分号为结束标记2022/12/2612C语言程序的构成2022/12/2654C函数的一般形式

函数类型函数名(形式参数表){

说明、定义部分函数执行部分

}2022/12/2613C函数的一般形式2022/12/2655NiklausWirth提出的著名公式:

数据结构+算法=程序什么是算法?

——对特定问题求解方法和步骤的一种描述。算法的两大要素:①操作②控制结构算法解决的问题:①做什么②如何做算法2022/12/2614NiklausWirth提出的著2022/12/2656算法的特性:

1.有穷性

2.确定性

3.有效性

4.有零个或多个输入

5.有一个或多个输出描述算法的工具:

自然语言伪代码流程图

NS图等等2022/12/2615算法的特性:2022/12/2657【例】求三个数中最大值问题

自然语言:日常使用的语言

先将a,b进行比较,找出其中的大数;然后再把它和第三个数c进行比较,如果它比c大,则它就是最大数,否则c是最大数。

伪代码:介于自然语言和计算机语言之间的文字和符号进行描述IFa>bTHENmax=aELSEmax=bIFmax>cTHEN输出maxELSE输出c2022/12/2616【例】求三个数中最大值问题自然语言2022/12/2658流程图:传统图语言表示法

ANSI规定了一些常用的流程图符号:起止框输入输出框判断框处理框流程线

连接圈【例】酱油与醋的问题:试用自然语言描述如何将酱油与醋互换位置的过程。

2022/12/2617流程图:传统图语言表示法起止框2022/12/2659三个数中最大值问题的流程图(图1-4)2022/12/2618三个数中最大值问题的流程图(图1-42022/12/2660N-S图(结构化流程图):图语言表示法

三个数中最大值问题的N-S图(图1-5)2022/12/2619N-S图(结构化流程图):图语言表2022/12/2661结构化程序设计方法

结构化程序设计的基本方法:

自顶向下,逐步求精,将复杂问题分解为若干的独立的小问题(小模块)。

【例】求解两个数的平均值1、分解:问题分解为三个模块:

S1:输入两个数a,bS2:求两个数的平均值赋给averS3:输出平均值

2022/12/2620结构化程序设计方法结构化程序设计的基2022/12/26622、实现方法,算法细化

S1:调用输入函数,完成输入S2:设计一个求解平均值的函数averge()S3:调用输出函数,完成输出

3、C语言实现主函数的编程

//求两个数的平均值voidmain()//主函数{floata,b,ave;//声明a、b和ave为实型变量

scanf("%f%f",&a,&b);//输入a、b两个数的值

ave=average(a,b);//调用average函数求平均值

printf("average=%f\n",ave);//输出ave的值}2022/12/26212、实现方法,算法细化3、C语2022/12/26634、逐步求精:设计averag(floatx,floaty)函数的算法(设两个参数为floatx,floaty)S2.1:把x加y的和除2的值送给averS2.2:把aver的值返回给主函数。5、C语言实现averag(floatx,floaty)函数的编程#include<stdio.h>floataverage(floatx,floaty)//求两个数的平均值{floataver;//声明aver为实型变量

aver=(x+y)/2;//计算两个数的平均值赋给averreturn(aver);//aver的值作为函数的的返回值}2022/12/26224、逐步求精:设计averag(fl2022/12/26646、两模块连接成一个完整的求解程序#include<stdio.h>floataverage(floatx,floaty)//求两个数的平均值{floatz,aver;//声明aver为实型变量

aver=(x+y)/2;//计算两个数的平均值赋给averreturn(aver);//aver的值作为函数的的返回值}voidmain()//主函数{floata,b,ave;//声明a、b和ave为实型变量

scanf("%f%f",&a,&b);//输入a、b两个数的值

ave=average(a,b);//调用average函数求平均值

printf("average=%f\n",ave);//输出ave的值}2022/12/26236、两模块连接成一个完整的求解程序2022/12/2665用自然语言描述:S1:输入两个整数x,yS2:交换x,y细化S2:S2.1:将x赋给t

S2.2:将y赋给x

S2.3:将t赋给y相应的程序段://输入x、yscanf("%d%d",&x,&y);//交换x、yt=x;x=y;y=t;【例1-3】设计两整数交换的算法

2022/12/2624用自然语言描述:相应的程序段:【例12022/12/2666两数交换的另一个奇特难懂的算法:S1:输入两个整数x,yS2:将x+y赋给x

S3:将x-y赋给yS4:将x-y赋给x相应的程序段:

scanf("%d%d",&x,&y);//输入x、yx=x+y;//交换x、yy=x-y;x=x-y;2022/12/2625两数交换的另一个奇特难懂的算法:2022/12/2667【例】对于一个大于3的整数,判断它是不是素数(循环之例)算法如下:

1.输入n2.i=23.n被i除,得余数r4.若r=0,则输出n“不是素数”,算法结束

5.i=i+16.若i<n/2,则重新执行3.;否则执行7.7.输出n“是素数”,算法结束2022/12/2626【例】对于一个大于3的整数,判断它是2022/12/2668结构化程序的三种基本控制结构:顺序结构选择结构(if_else)循环结构(while,repeat_until)顺序结构:流程图N-S图

先执行A操作,再执行B操作。2022/12/2627结构化程序的三种基本控制结构:顺序结2022/12/2669选择结构:流程图N-S图

当P条件成立(为真T)执行A

否则(为假F)执行B2022/12/2628选择结构:流程图N-S图当P2022/12/2670循环结构1(while

):流程图N-S图

当P条件成立(为真T)反复执行A,直到P为‘假’时结束。2022/12/2629循环结构1(while):流程图N2022/12/2671循环结构2(repeat_until)流程图N-S图

先执行A操作,再判断P,若为‘假’,再执行A,直到P为‘真’时结束。2022/12/2630循环结构2(repeat_until2022/12/2672三种基本结构的共同特点:1)单入口2)单出口3)无死语句4)无死循环

温馨提示

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

评论

0/150

提交评论