C语言教程基础篇全免费.ppt

上传人:wj 文档编号:18695327 上传时间:2023-09-17 格式:PPT 页数:185 大小:1.20MB
下载 相关 举报
C语言教程基础篇全免费.ppt_第1页
第1页 / 共185页
C语言教程基础篇全免费.ppt_第2页
第2页 / 共185页
C语言教程基础篇全免费.ppt_第3页
第3页 / 共185页
C语言教程基础篇全免费.ppt_第4页
第4页 / 共185页
C语言教程基础篇全免费.ppt_第5页
第5页 / 共185页
C语言教程基础篇全免费.ppt_第6页
第6页 / 共185页
C语言教程基础篇全免费.ppt_第7页
第7页 / 共185页
C语言教程基础篇全免费.ppt_第8页
第8页 / 共185页
C语言教程基础篇全免费.ppt_第9页
第9页 / 共185页
C语言教程基础篇全免费.ppt_第10页
第10页 / 共185页
C语言教程基础篇全免费.ppt_第11页
第11页 / 共185页
C语言教程基础篇全免费.ppt_第12页
第12页 / 共185页
C语言教程基础篇全免费.ppt_第13页
第13页 / 共185页
C语言教程基础篇全免费.ppt_第14页
第14页 / 共185页
C语言教程基础篇全免费.ppt_第15页
第15页 / 共185页
C语言教程基础篇全免费.ppt_第16页
第16页 / 共185页
C语言教程基础篇全免费.ppt_第17页
第17页 / 共185页
C语言教程基础篇全免费.ppt_第18页
第18页 / 共185页
C语言教程基础篇全免费.ppt_第19页
第19页 / 共185页
C语言教程基础篇全免费.ppt_第20页
第20页 / 共185页
亲,该文档总共185页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言教程基础篇全免费.ppt

《C语言教程基础篇全免费.ppt》由会员分享,可在线阅读,更多相关《C语言教程基础篇全免费.ppt(185页珍藏版)》请在冰点文库上搜索。

C语言教程基础篇全免费.ppt

一、教学对象计算机科学与技术系新生(第二学期)二、教学目标程序设计的重要性程序设计的基本概念与基本方法编程解题的思路与典型方法数学模型简介算法及算法步骤程序结构与相应语句编码与上机调试,绪论,三、教学重点1.程序设计的基本概念,基本方法;2.在C语言的环境下,学会如何针对问题进行分析,得出数学模型,理出算法并编程实现;3.有条有理有根有据的编程实践;4.养成良好的编程风格与习惯;5.重在思维方法的学习,鼓励创新。

绪论,四、指导思想1.立足改革,以培养高素质有创造精神的人才为这门课的教学目标。

2.以学生为中心,采用与现实生活贴切和具有趣味性的实例进行讲解,有利于调动学生学习的积极性,引导学生主动学习。

3.强化实践,这门课主张程序设计是高强度的脑力劳动,不是听会的、也不是看会的,而是练会的。

引导学生在解题编程的实践中探索其中带规律性的认识。

将感性认识升华到理性高度。

绪论,五、学习方法1.动手动脑,理论指导下的实践有条有理的实践。

2.在编写大量程序之后,才能感到运用自如。

绪论,六、教学内容安排1.简单C程序设计;2.分支结构程序设计;3.循环结构程序设计;4.数组;5.函数;6.递归及其实现方法7.指针;8.结构体与链表。

绪论,1.1认识C语言程序1.程序实例#include/预编译命令,将标准输入输出函数/作为头文件包扩到用户源文件中#include/预编译命令,将系统提供的数学函数/作为头文件包扩到用户源文件中main()/主函数,名为main,/函数体.开始floata,b,c;/声明部分.定义变量类型b=30.0;/执行部分.赋值语句a=sin(b*3.14159/180);/执行部分.赋值语句printf(“%fn”,a);/执行部分.输出语句/函数体.结束,第一讲简单的C程序设计,1.2实例总结1.C程序结构,预编译命令,主函数main()函数体开始声明部分执行部分函数体结束,第一讲简单的C程序设计,2.变量的类型整型:

int长整型:

long浮点型:

float双精度型:

double字符型:

char用户自定义类型,第一讲简单的C程序设计,3.声明的作用为变量分配内存单元,变量名作为内存单元的符号地址,这件事是在程序编译链接时完成的。

4.变量其值可以改变的量,是内存单元的符号地址。

通过符号b可以找到相应的存储单元地址,假设为1000。

语句b=30.0;是将值30.0存放在地址为1000的存储单元。

第一讲简单的C程序设计,5.对变量的赋值赋值符号“=”b=30.0;/读作将表达式的值30.0赋给变量ba=sin(b*3.14159/180);/读作将表达式(正弦函数)的值赋给变量a,第一讲简单的C程序设计,6.变量赋值特点

(1)先定义,后使用intd,e,f;定义三个变量为整数类型如未定义,则在编译时被查出,认为非法

(2)变量未被赋值前,值为未知(3)对变量赋值过程是“覆盖”过程,用新值去替换旧(4)读出变量的值,该变量保持不变(5)参与表达式运算的所有变量都保持原来的值不变,第一讲简单的C程序设计,变量赋值过程def未赋值前执行d=7执行e=d执行f=d+e执行d=d+1000,第一讲简单的C程序设计,7.输出语句printf函数(格式输出函数)一般形式为printf(参数1,参数2,参数3,参数n)其中参数1格式控制参数2,参数3,参数n输出表列举例:

floata;intb;a=85.56;b=100;printf(%f%d,a,b);,第一讲简单的C程序设计,格式控制是用双引号括起来的字符串,称“转换控制字符串”%f第一个输出表列的格式说明,以小数形式输出单、双精度实数,隐含输出6位小数%d第二个输出表列的格式说明,以带有符号的十进制形式输出整数(正数不输出符号)显然,%f是控制实数a的;%d是控制整数b的,第一讲简单的C程序设计,为了醒目,格式控制项中除格式说明之外可以有普通字符例:

printf(“a=%fb=%d,a,b);输出结果为:

a=85.560000b=100换行符号例:

printf(“a=%fnb=%d”,a,b);输出结果为:

a=85.560000b=100域宽和精度例:

printf(”%5.3f”,a);,第一讲简单的C程序设计,8.数学函数sin(x)x为弧度,doublex,doublesin(x)cos(x)cos(x)exp(x)exlog(x)logexlog10(x)log10xfabs(x)xfmod(x,y)整除x/y的余数floor(x)求不大于x的最大整数pow(x,y)xysqrt(x)x1/2,第一讲简单的C程序设计,9.算术运算符加减*乘/除%模(取余数),第一讲简单的C程序设计,1.3作业,第一讲简单的C程序设计,我们在日常生活中经常需要处理具有两个分支的问题,例如,如果明天下雨,则在教室内组织活动,否则去野游。

在C语言中,这类问题需要使用if语句解决,而判断操作通常使用关系运算符。

关系运算符和关系表达式大于=大于等于=小于等于=等于!

=不等于,第二讲分支结构,2.1掌握if语句的使用方法【实例】编写程序,判断输入的整数是否为6,若是,显示“Right!

”和“Great!

”,否则显示“Wrong!

”和“Sorry!

”。

1编程思路:

要显示“Right!

”和“Great!

”,应执行两条语句“printf(”Right!

n“);”和“printf(”Great!

n“);”,要显示“Wrong!

”和“Sorry!

”,执行两条语句“printf(”Wrong!

n“);”和“printf(”Sorry!

n“);”。

本题需要根据所输入的值(假设赋给a)是否为6来选择执行相应的两条语句。

在C语言中判断a中的值是否为6,使用“if(a=6)”形式。

第二讲分支结构,本实例的流程图如图所示,第二讲分支结构,本实例的N-S流程图如图所示,第二讲分支结构,2程序代码:

#includemain()inta=0;printf(Inputa:

);scanf(%d,/*if语句结束*/,第二讲分支结构,3运行结果:

第1次运行结果:

Inputa:

6a=6Right!

Great!

第2次运行结果:

Inputa:

5a=5Wrong!

Sorry!

第二讲分支结构,4归纳分析:

(1)程序中的“a=6”是关系表达式。

用关系运算符把两个C语言表达式连接起来的表达式称为关系表达式。

关系运算的判断结果只有“真”或“假”两种可能,关系成立时为“真”,不成立时为“假”。

关系表达式的值只能是1或0,当关系运算的判断结果为“真”时,关系表达式的值为1,否则,关系表达式的值为0。

例如,当a的值为6时,关系表达式“a=6”的值为1,当a的值为5时,关系表达式“a=6”的值为0。

第二讲分支结构,

(2)程序中的“if(a=6)”是if语句的开始部分。

本例题需要根据“a=6”是否为“真”来选择执行不同的两个输出语句。

处理两个分支的问题时常使用if语句。

if语句根据其后面括号中表达式的结果,选择执行某个分支程序段。

if语句的一般形式如下:

if(表达式)语句组1else语句组2“if”和“else”是关键字。

当表达式结果为“真”(即不等于0)时,执行语句组1,表达式结果为“假”(即等于0)时,执行语句组2。

在语句组1和语句组2中只能选择执行一组,而后执行整个if语句后面的语句。

第二讲分支结构,(3)C语言中允许程序中的if语句不带else部分。

省略else的if语句一般形式如下:

if(表达式)语句组此if语句的执行过程:

当表达式结果为“真”时,执行语句组,表达式结果为“假”时,不处理。

第二讲分支结构,2.2学会使用逻辑运算符处理问题时经常需要同时判断多个条件。

例如,在某学生数学和英语成绩中判断是否至少有一门课程是不及格。

这时使用逻辑运算符。

逻辑运算符共有三种:

&逻辑与|逻辑或!

逻辑非这3个运算符按高到低的优先级顺序是“!

”、“&”、“|”一般而言,单目运算符优先级较高,赋值运算符优先级低。

算术运算符优先级较高,关系和逻辑运算符优先级较低。

第二讲分支结构,【实例】编写程序,判断某人的体重是否在50公斤至55公斤之间,若在此范围之内,显示“Ok”,否则显示“No”。

1编程思路:

先将体重存放在变量w中,要使w的值在50至55范围内,应同时满足“w=50”和“w=50&w=50”和“w=55”。

第二讲分支结构,2程序代码:

#includemain()floatw=0.0;printf(Inputw:

);scanf(%f,第二讲分支结构,3.运行结果:

第1次运行结果:

Inputw:

53.5w=53.5Ok第2次运行结果:

Inputw:

60.7w=60.7No,第二讲分支结构,4归纳分析:

程序中的“w=50&w=55”是逻辑表达式。

用逻辑运算符把两个C语言表达式连接起来的表达式称为逻辑表达式。

逻辑运算的判断结果也只有“真”或“假”两种可能,逻辑运算的规则如下:

逻辑与:

1&1=1,其它为0逻辑或:

0|0=0,其它为1逻辑非:

0为1,!

1为0,!

2为0,!

a为0(当a不为0时)逻辑表达式的值也只能是1或0,当逻辑运算的判断结果为“真”时,逻辑表达式的值为1,否则,逻辑表达式的值为0。

第二讲分支结构,2.3学会使用嵌套的if语句有些问题必须在满足某种条件后,再继续分支处理。

例如,某单位男职工60岁退休,女职工55岁退休,为了判断某职工是否应退休,首先要判断该职工是男职工还是女职工,然后再根据职工性别判断年龄是否到规定年龄。

这时需要使用嵌套的if语句。

第二讲分支结构,【实例】编写程序,判断若输入的体重大于0且小于200,再判断该体重是否在50公斤至55公斤之间,若在此范围之内,显示“Ok”,否则显示“No”;若所输入的体重不大于0或不小于200,则显示“Dataover!

”。

1编程思路:

在上实例中,输入w的值后立刻用if语句实现选择执行“printf(“Okn);”或“printf(Non);”的功能,但由于本题目是在w的值大于0且小于200的情况下,才能执行此if语句,所以在此if语句外面还需要套另一个if语句。

第二讲分支结构,本实例的程序流程图:

课堂作业:

请根据此图画出其N-S流程图。

第二讲分支结构,2程序代码:

main()floatw=0.0;printf(Inputw:

);scanf(%f,/*外嵌if语句结束*/,第二讲分支结构,3运行结果:

第1次运行结果:

Inputw:

53.5w=53.5Ok第2次运行结果:

Inputw:

60.7w=60.7No第3次运行结果:

Inputw:

201.7w=201.7Dataover!

第二讲分支结构,4归纳分析:

(1)本程序在一个if语句中包含了另一个if语句。

在if语句的语句组1或语句组2中又包含另一个分支结构的if语句称为嵌套的if语句。

(2)本程序中出现了两次else。

C语法规定,在if语句中,若多次出现else,则每一个else总是与前面最近的if配对,所以本例题中第一个else与内嵌的if配对,第二个else与最上面的if配对。

程序中由于采用了缩进格式,if与else的配对关系一目了然。

第二讲分支结构,2.4学会使用if-elseif形式的嵌套if语句【实例】编写程序,求下面分段函数的值,要求x的值从键盘输入。

第二讲分支结构,1编程思路:

第二讲分支结构,2程序代码:

#includemain()floatx=0,y=0;printf(Inputx:

);scanf(%f,第二讲分支结构,2.5switch语句在日常生活中经常遇到菜单选择操作,例如,用ATM自动取款机取钱时,从菜单中可以选择语种、取款额;用自动服务系统给手机充值时,可以选择查余额还是充值,对本机充值还是对其他号码充值等。

这些问题一般使用switch语句解决。

总之,这些问题都是多分支情况。

第二讲分支结构,【实例】编写程序,在如下菜单中选择一个运算类型,并进行相应的运算。

如选择了加法,则进行求和运算。

Pleasechoose+:

addition-:

subtraction*:

multiplication/:

division,第二讲分支结构,1程序代码:

#includemain()floata=5.0,b=2.0,c=0.0;charsym=0;printf(Pleasechoosen);printf(+:

additionn);printf(-:

subtractionn);printf(*:

multiplicationn);printf(/:

divisionn);sym=getchar();printf(%f%c%f=,a,sym,b);/*显示算式*/,第二讲分支结构,switch(sym)/*计算算式*/case+:

c=a+b;break;case-:

c=a-b;break;case*:

c=a*b;break;case/:

c=a/b;break;printf(%fn,c);/*显示结果*/,第二讲分支结构,2运行结果:

Pleasechoose+:

addition-:

subtraction*:

multiplication/:

division/5.000000/2.000000=2.500000,第二讲分支结构,3归纳分析:

switch语句的一般形式为:

switch(表达式)case表达式1:

语句组1break;case表达式2:

语句组2break;case表达式n:

语句组nbreak;default:

语句组n+1break;其中switch、case、default和break是关键字,所有表达式均为整型或字符型。

在表达式1、表达式2、表达式n中只能出现常量和运算符,而且每个表达式的值不能相等。

第二讲分支结构,2.6条件运算符及其表达式C语言中条件运算符由“?

”和“:

”组成,例如“ab?

a:

b”。

条件表达式的一般形式为:

表达式1?

表达式2:

表达式3当表达式1的值为非0时,以表达式2的值作为条件表达式的值,否则,以表达式3的值作为条件表达式的值。

例如,当ab成立时,条件表达式“ab?

a:

b”的值为a中的值,否则为b中的值。

使用条件表达式也可以实现分支结构。

第二讲分支结构,课堂讨论:

谁做的好事?

忻州师院有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。

A说:

不是我。

B说:

是C。

C说:

是D。

D说:

C胡说。

已知三个人说的是真话,一个人说的是假话。

现在要根据这些信息,找出做了好事的人。

画出N-S流程图并写出程序。

第二讲分支结构,1、编程思路:

如何找到该人,一定是“先假设该人是做好事者,然后到每句话中去测试看有几句是真话”。

“有三句是真话就确定是该人,否则换下一人再试”。

比如,先假定是A同学,让thisman=A;代入到四句话中A说:

thisman!

=A;A!

=A假,值为0。

B说:

thisman=C;A=C假,值为0。

C说:

thisman=D;A=D假,值为0。

D说:

thisman!

=D;A!

=D真,值为1。

显然,不是A做的好事(四个关系表达式值的和为1),第二讲分支结构,再试B同学,让thisman=B;代入到四句话中A说:

thisman!

=A;B!

=A真,值为1。

B说:

thisman=C;B=C假,值为0。

C说:

thisman=D;B=D假,值为0。

D说:

thisman!

=D;B!

=D真,值为1。

显然,不是B所为(四个关系表达式值的和为2),第二讲分支结构,再试C同学,让thisman=C;代入到四句话中A说:

thisman!

=A;C!

=A真,值为1。

B说:

thisman=C;C=C真,值为1。

C说:

thisman=D;C=D假,值为0。

D说:

thisman!

=D;C!

=D真,值为1。

显然,就是C做了好事(四个关系表达式值之和为3)这时,我可以理出头绪,要用所谓枚举法,一个人一个人地去试,四句话中有三句为真,该人即所求。

第二讲分支结构,循环结构是程序中一种很重要的结构。

其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。

给定的条件称为循环条件,反复执行的程序段称为循环体。

语言提供了三种循环语句,可以组成各种不同形式的循环结构,它们是:

语句语句语句,第三讲循环结构,3.1简单循环【实例】古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21.该数列的规律为a1=1a2=1an=an-1+an-2这里求前20项,第三讲循环结构,i=20,a1=1;a2=1;i=3,an=a1+a2,输出an,i=i+1;a1=a2;a2=an;,Y,end,begin,N,第三讲循环结构,该题目的N-S流程图,a1=1;a2=1;an=0;,i=20,an=a1+a2,输出an,i=i+1,a1=a2,a2=an,第三讲循环结构,2.程序源代码:

方法一:

for循环语句#includestdio.hmain()longa1,a2,an;inti;a1=a2=1;for(i=3;i=20;i+)an=a1+a2;printf(“a%d=%ld”,i,an);a1=a2;a2=an;,可否调换?

第三讲循环结构,方法二:

while循环语句#includestdio.hmain()longa1,a2,an;inti;a1=a2=1;i=3;while(i=20)an=a1+a2;printf(“a%d=%ld”,i,an);a1=a2;a2=an;i+;,第三讲循环结构,方法三:

do-while循环语句#includestdio.hmain()longa1,a2,an;inti;a1=a2=1;i=3;doan=a1+a2;printf(“a%d=%ld”,i,an);a1=a2;a2=an;i+;while(i=20);,第三讲循环结构,3.归纳分析

(1)for语句格式:

for(表达式1;表达式2;表达式3)语句即:

for(循环变量赋初值,循环结束条件,循环变量增值)语句,第三讲循环结构,For语句执行过程,第三讲循环结构,表达式可以省略,但分号不能省略a)省略表达式1i=1for(;i=50;i+)sum=sum+2*ib)省略表达式2产生死循环for(i=1;i+)sum=sum+2*ic)省略表达式3for(i=1;i=50;)sum=sum+2*i;i+;d)省略表达式1,省略表达式3i=1for(;i=50;)sum=sum+2*i;i+;,第三讲循环结构,表达式1,表达式3可以是:

a)简单的表达式b)逗号表达式表达式2一般是关系表达式或逻辑表达式例:

for(sum=0,i=1;i=50;i+,i+)sum=sum+2*i;或:

for(sum=0,i=1;i=50;i=i+2)sum=sum+2*i,第三讲循环结构,

(2)while语句的一般形式为:

while(表达式)语句;其中表达式是循环条件,语句为循环体。

while语句的语义是:

计算表达式的值,当值为真(非0)时,执行循环体语句。

第三讲循环结构,使用while语句应注意以下几点:

1.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。

2.循环体如包括有一个以上的语句,则必须用括起来,组成复合语句。

3.应注意循环条件的选择以避免死循环,一般需要在循环体中动态改变循环条件的值。

第三讲循环结构,(3)do-while语句的一般形式为:

do语句;while(表达式);其中语句是循环体,表达式是循环条件。

do-while语句的语义是:

先执行循环体语句一次,再判别表达式的值,若为真(非0)则继续循环,否则终止循环。

do-while语句和while语句的区别在于do-while是先执行后判断,因此do-while至少要执行一次循环体。

而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。

第三讲循环结构,(4)循环体语句可使用break和continue语句break:

可以用来从循环体内跳出循环体(提前结束循环)continue:

用于跳过循环体中下面尚未执行的语句,接着重新执行循环的判断例:

输出100以内能被7整除的数。

intn;for(n=7;n=100;n+)if(n%7!

=0)continue;printf(%d,n);,第三讲循环结构,练习:

1.有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。

2.求1+2!

+3!

+.+20!

的和。

3.用牛顿切线法求x-sin(x)=0在区间(0,)之间的解。

4.任意输入两个数,求这两个数的最大公约数。

5.从键盘输入一个数判断其是否为素数。

第三讲循环结构,作业:

求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入控制。

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?

第10次反弹多高?

求1+2!

+3!

+.+20!

的和猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少?

第三讲循环结构,3.2循环的嵌套使用【实例】搬砖问题。

36块砖,36人搬,男搬4,女搬3,两个小孩抬一砖,要求一次全搬完,问男、女、小孩各若干?

1.分析:

列方程,得出问题条件:

w+m+c=364*m+3*w+c/2=36可以用枚举的方法,让变量w在09、m在012、c在036的偶数中取值,形成满足上述条件的w、m、c的组合,第三讲循环结构,N-S流程图,第三讲循环结构,2.程序main()intm,w,c;for(m=0;m9;m+)for(w=0;w12;w+)c=36-w-m;if(c%2!

=0)continue;if(4*m+3*w+c/2=36)printf(“m=%d,w=%d,c=%d”,m,w,c);,第三讲循环结构,练习:

1.输出9*9口诀。

2.判断101-200之间有多少个素数,并输出所有素数。

3.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。

第三讲循环结构,作业:

1.将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

2.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=123.编程找出1000以内的所有完数。

第三讲循环结构,课堂讨论:

五位跳水高手将参加十米高台跳水决赛,有好事者让五个人据实力预测比赛结果。

A选手说:

B第二,我第三;B选手说:

我第二,E第四;C选手说:

我第一,D第二;D选手说:

C最后,我第三;E选手说:

我第四,A第一;决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错,请编程解出比赛的实际名次。

第三讲循环结构,思路:

1首先是将五个人的预测写成逻辑表达式:

让关系运算符“=”的含义是“是”。

让数字1、2、3、4、5分

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2