第4章c语言谭浩强版顶级讲义

合集下载

C语言谭浩强完整课件

C语言谭浩强完整课件
2020/12/15
1.3 C语言的发展及其特点
➢C语言是国际上广泛流行的计算机高级
语言。 ➢C语言的发展:
具有多种数据类型
BCPL语言
B语言
C语言
2020/12/15
精练、接近硬件,但 过于简单, 无数据类型
1.3 C语言的发展及其特点
• 最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。
2020/12/15
函数体
1.4.1 最简单的C语言程序举 例
#include <stdio.h>
int main( )
{
printf (”This is a C program.\n”);
return 0;
输出函数
}
2020/12/15
输出语句
1.4.1 最简单的C语言程序举 例
#include <stdio.h> int main( ) {
2020/12/15
1.3 C语言的发展及其特点
• C语言主要特点: • 运算符丰富。 • 有34种运算符 • 把括号、赋值、强制类型转换等都作为运算符处理 • 表达式类型多样化
2020/12/15
1.3 C语言的发展及其特点
• C语言主要特点: • 数据类型丰富。 • 包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型 • C99又扩充了复数浮点类型、超长整型(long long)、布尔类型(bool) • 指针类型数据,能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。
会自动地、有条不紊地进行工作 ➢计算机的一切操作都是由程序控制的,
离开程序,计算机将一事无成
2020/12/15

清华大学C语言谭浩强第4章精品文档

清华大学C语言谭浩强第4章精品文档

if(a[i]<min)
/* 如果当前数小于最小数 */
{ min=a[i];
/* 记录新的最小数和下标 */
min_m=i;
x=a[min_m]; /* 交换最小数和第m个数的位置 */
a[min_m]=a[m]; a[m]=x; } for(i=0;i<n;i++)
printf("%d ",a[i]); printf("\n"); }
• 第1步、在m个数中找出最小数,然后和第一个数交换, 前1个数已经排好序。
• 第2步、在m-1个数中找出最小数,然后和第2个数交 换,前2个数已经排好序。
• …… • 第k步、在m-k+1个数中找出最小数,然后和第k个数
交换,前k个数已经排好序。 • 这样一值到第m-1步结束。
#include<stdio.h>
4.3.1二维数组的定义
• 1. 二维数组定义的一般形式 • 2. 对二维数组的说明 • 3. 多维数组的扩展
1.二维数组定义的一般形式
• 二维数组定义的一般形式为:
类型说明符 数组名[行数][列数]
• 其中“行数”表示第一维下标的长度,“列数” 则表示第二维下标的长度。
• 例如:
int m[4][5];
• 在定义数组的同时给数组元素赋予初值称为数组 的初始化。
• 初始化赋值的一般形式为:
类型说明符 数组名[常量表达式]={数据值1, 数据值2,…,数据值n};
• 其中在{ }中的各数据值即为各元素的初值,各值 之间用逗号间隔。
• C语言对数组的初始化赋值还有以下几点规定: (1)可以只给部分元素赋初值。没有赋初值的元素:

谭浩强 c语言程序设计(第四章)

谭浩强 c语言程序设计(第四章)
格式: scanf("格式控制串 格式控制串" 地址表) 格式: scanf( 格式控制串",地址表) 功能:按指定格式从键盘读入数据, 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中, 存储单元中,并按回车键结束 地址表:变量的地址,常用取地址运算符& 地址表:变量的地址, 地址表 格式字符 格式字符:d,i,o,x,u,c,s,f,e 格式字符
例4.1 main( )
{ int a; ★ b 的 用 作 { int b; 域只在内 层大 号 括 b=3; //复合语句(分程序) 复合语句(分程序) 这样一个 printf("%d\n",a+b); 局部 } 是复合语句中定义的, 由于 b是复合语句中定义的,在 是复合语句中定义的 b=1; } 它之外使用是错误的
例 scanf("%d",&a); 输入: 输入:10
a=10
例 scanf("%x",&a); 输入: 输入:11
a=17
16
Hale Waihona Puke 第四章 顺序程序设计附加格式说明符(修饰符)
修饰符 功 能 h 用于d,o,x前 指定输入为short型整数 用于d,o,x前,指定输入为short型整数 d,o,x short l m * 用于d,o,x前 指定输入为long型整数 用于d,o,x前,指定输入为long型整数 d,o,x long 用于e,f前 指定输入为double型实数 用于e,f前,指定输入为double型实数 e,f double 指定输入数据宽度,遇空格或不可转换字符则结束 指定输入数据宽度, 抑制符, 抑制符,指定输入项读入后不赋给变量
2

C语言第4章(谭浩强)

C语言第4章(谭浩强)
26
总结:
用于长整型整数,可加在格式符 d,o,x,u 前面; m 代表数据的最小宽度,超出就按原数据 宽度输出; n 对于实数,代表小数的位数;对于字符 串,代表截取的字符个数; - 输出的字符或数字向左靠,右边补空格。 l
注意:
(1)除了xX,eE,gG以外,都不可以使用大写,只可以用 小写表示。 (2)可以在printf函数中的格式控制字符串中包含转义字 符。 (3)格式符号以%开头,以上述9种格式符之一结束。 如:printf(“c=%cf=%fs=%s”,c,f,s);
25
总结:
%d 以带符号十进制形式输出整数。 %f 以小数形式输出单、双精度数,有6 位小数。 %c 以字符形式输出,只有一个字符。 %o 以无符号的八进制形式输出整数。 %x 以无符号十六进制形式输出整数。
%u 以无符号十进制形式输出整数。 %s 以字符串形式输出。 %e 以标准指数形式输出单、双精度数。 %g 选取%f或%e格式中输出较短的一种 格式输出,不输出0。
14
§4.5 格式输入与输出
一、printf函数(格式输出函数) 这个函数我们在前面见过很多 次了。它的作用是向终端输出任意 类型的数据。 printf() 函数的使用格式为:
printf(格式控制,输出表列);
1、格式控制符: 是用双引号括起来的字符串, 包括两种信息:
15
1)普通字符进行原样输出:如空格、逗号 printf(“this is my book!”); printf(“x=%d,y=%d”,x,y);
<stdio.h>”
11
例如:
#include <stdio.h> main() { char a , b , c ; a = ‟B‟ ; b = ‟O‟ ; c = ‟Y‟ ; putchar (a) ; putchar (b) ; putchar (c) ; }

谭浩强C程序设计第三版清华课件第4章简单程序

谭浩强C程序设计第三版清华课件第4章简单程序

21
4.5 格式输入与输出
(1) d格式符。用来输出十进制整数。
几种用法: ① %d:按十进制整型数据的实际长度输出。 ② %md:m为指定的输出字段的宽度。如果数据的位数小于m,
则左端补以空格,若大于m,则按实际位数输出。 例: printf(″%4d,%4d″,a,b);
若a=123,d=12345,则输出结果为 123,12345 ③ %ld:输出长整型数据。 例: long a=135790;/* 定义a为长整型变量*/ printf(″%ld″,a);
9
4.2 赋值语句
•赋值语句是由赋值表达式加上一个分号构成 例:a=100 赋值表达式
a=100; 赋值语句
•条件中不能含有赋值符号,但是赋值表达式可以
包含于条件表达式中
例:if(a=b)
t=a;
错误
if((a=b)>0) t=a;
正确
C程序设计(第三版)
10
4.2 赋值语句
问题:c语言中的赋值语句于其他高级语言 的赋值语句有什么不同点
C程序设计(第三版)
13
4.3 数据输入输出的概念及在C 语言中的实现
(三).在使用系统库函数时,要用预编译命令 “#include”将有关的“头文件”包括到用户源 文件中.
例如:在调用标准输入输出库函数时,文件开头应
该有:
头文

#include “stdio.h”
或:
#include <stdio.h>
右侧,左补空格。 ⑤ %-m.ns,n个字符输出在m列的左侧,右补空格,若n〉m,m自
动取n值。
C程序设计(第三版)
28
4.5 格式输入与输出

2022年C语言程序设计教程(第3版) 谭浩强 课件 最新 4

2022年C语言程序设计教程(第3版) 谭浩强 课件 最新 4
double func (double x, int y, char z); /* 注意末尾的分号 */
4.1.4 虚实结合与传值调用
一个函数中的函数体,只有在该函数 被调用时才会执行。在函数被调用时,将 要进行如下两个操作: • 将函数调用中的实际参数值传送给函数定 义中的形式参数; • 将流程从调用处转到被调用的函数的开头, 开始执行函数体中的代码。
{ 函数体
}
1. 函数头函数类型 函数名(形式参数表列)
一个函数的函数头的结构如下: (1)函数类型。指定函数值的类型,即函数返 回值的类型。 (2)函数名。函数名必须采用合法的用户标识 符。 (3)圆括号:在函数名后面的一对圆括号是 “函数运算符”,表示进行函数运算,函数运算符 具有很高的运算优先级别 (4)形式参数表。形式参数表由写在一对圆括 号(函数运算符)中的一系列参数组成。每一个参数 由一个类型符和一个参数名组成。参数名也应当是 合法的用户关键字。函数可以没有参数,这时在函 数运算符内写一个“void”,也可以空允白。
c
no1 no2 no3
第一步:先把上面的n-1个盘子设法借助b杆放到c杆, 如图4.8中的箭头①所示,记做hanoi(n-1, a,c,b)。
第二步:把第n个盘子从a杆直接移到b杆,如图4.8中的 箭头②所示。
第三步:把c杆上的n-1个盘子借助a杆移到b杆,如图4.8 中的箭头③所示,记做hanoi(n-1,c,b,a)。
递归计算n!的函数rfact( )。 通常,n的阶乘可以描述为: n!=1·2·…·n 但是,也可以描述为: n!= n·(n-1)·…·2·1 或者可以写为: n!= n·(n-1)! 更一般的形式是:
1
(x≤1)
n!= n·(n-1)! (x>1)

C程序设计(第四版)(谭浩强编)教程-第4章_选择结构程序设计

C程序设计(第四版)(谭浩强编)教程-第4章_选择结构程序设计


==
!=
等于
不等于
a==b
x!=0
低 (赋值运算符)
Lecture Notes
12
Liu Yong, USTC © 2010
关系表达式
用关系运算符将两个表达式连接起来 a+b>c+d, (a=3)>x
注意区分等于(==)和赋值运算符(=)

a=b, a==b
关系表达式的值是逻辑值—“真”或“假”
if(exp1)
语句1
else
语句1}
else
语句2
Lecture Notes 8
语句2
Liu Yong, USTC © 2010
例:
#include <stdio.h>
int main() {
int result;
printf(“input your score:”); scanf(“%d”,&result);
case 6: printf("Sat.\n"); break;
default:printf("Sun.\n"); }
Lecture Notes 27 Liu Yong, USTC © 2010
Lecture Notes
18
Liu Yong, USTC © 2010
逻辑表达式求值特点
逻辑表达式中的运算符,只有会影响表
达式求值时,才会执行
a&&b&&c a||b||c
若a为“假”,则不再判断b和c 若a为“真”,则不再判断b和c
举例,(m=a>b)&&(n=c>d)

第四章 谭浩强版C教程

第四章 谭浩强版C教程
SOUTHWEST UNIVERSITY OF SCIENCE AND TECHNOLOGY
说明: 1、break语句只用于循环语句或switch语句中。 在循环语句中,break常常和if语句一起使用, 表示当条件满足时,立即终止循环。注意break 不是跳出if语句,而是循环结构。 2、循环语句可以嵌套使用,break语句只能跳出 (终止)其所在的循环,而不能一下子跳出多 层循环。要实现跳出多层循环可以设置一个标 志变量,控制逐层跳出。
for语句最简单的应用形式也就是最易理解的如 下形式:
for(循环变量赋初值;循环条件;循环变量增值) for
例如: for(i=1;i<=100;i++) sum=sum+i; 它相当于以下语句: i=1; while(i<=100) { sum=sum+i; i++; }
SOUTHWEST UNIVERSITY OF SCIENCE AND TECHNOLOGY
例:输入5个成绩数据求平均成绩。对非法成绩(不 在[0,100]之间)数据要求重新输入。
void main() { float x,s=0; int i=1; while(i<=5) { printf("输入第%d个成绩:",i); scanf("%f",&x); if(x<0 || x>100) continue; s+=x; i++; } printf("平均成绩为 %5.1f\n",s/5); }
SOUTHWEST UNIVERSITY OF SCIENCE AND TECHNOLOGY
break语句和continue语句
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

① if()~else~ (条件语句)
② for()~
(循环语句)
③ while()~
(循环语句)
④ do~while()
(循环语句)
⑤ continue
(结精品束课件 本次循环语句)
⑥ break (中止执行switch或循环语句)
⑦ switch
(多分支选择语句)
⑧ goto
(转向语句)
⑨ return
精品课件
图4.1
精品课件
在第2章中已经说明,程序应该包括数据描述(由声 明部分来实现)和数据操作(由语句来实现)。数据 描述主要定义数据结构(用数据类型表示)和数据 初值。数据操作的任务是对已提供的数据进行加 工。
C语句可以分为以下5类:
(1) 控制语句,完成一定的控制功能。c只有9种控 制语句,它们是:
(3) 循环结构,有两种循环结构: ① 当型循环结构,见图4.4。当p条件成立(“真”)
时,反复执行a操作。直到p为“假”时才停止循 环。 ② 直到型循环结构,见图4.5。先执行a操作,再判断 p是否为“假”,若p为“假”,再执行a,如此反复, 直到p为“真”为止。
精品课件
图4.4
图4.5
精品课件
精品课件
(3) 表达式语句。 由一个表达式构成一个语句, 最典型的是,由赋值表达式构成一个赋值语句。
a=3
是一个赋值表达式,而
a=3;
是一个赋值语句。可以看到一个表达式的最后加一 个分号就成了一个语句。一个语句必须在最后出 现分号,分号是语句中不可缺少的一部分(而不 像pascal语言那样,分号只是语句间的分隔符 号)。例如:
第4章 最简单的c程序设计—顺序程序设计
4.1 C语句概述 4.2 程序的三种基本结构 4.3 赋值语句 4.4 数据输入输出的概念及在C语言中的实现 4.5 字符数据的输入输出 4.6 格式输入与输出 4.7 顺序结构程序设计举例 习题
精品课件
在上一章介绍了程序中用到的一些基本要素 (常量、变量、运算符、表达式等),它们是 构成程序的基本成分。在第1章中已经介绍 了几个简单的c程序。本章将介绍为编写简 单的程序所必需的一些内容。
由选择结构可以派生出另一种基本结构: 多分支选 择结构,见图4.6。
根据k的值(k1,k2,…,kn)不同而决定执行 a1,a2,…,an之一。
已经证明,由以上基本结构组成的程序能处理任何 复杂的问题。上面图4.2~图4.7中方框中的 a,b,a1,…,an等可以是一个简单的语句,也可以又 是一个基本结构。例如,图4.7是一个顺序结构,它 由两个操作顺序组成。虚线框内是一个当型循环 结构,可以用“b”表示,因此图4.7就可以理解为 图4.2(a)所示的顺序结构。
精品课件
图4.6
精品课件
图4.7
关于三种基本结构的特征以及结构化程序设计方法, 读者可能已在学习其他高级语言程序设计时学习 过,在此不再重复。只是应当强调说明,在今后的 程序设计中应当采用结构化程序设计方法。在本 章中,我们将介绍几种最基本的语句,以及用它们 构成顺序结构的程序。在第4、第5章介绍选择结 构和循环结构的程序设计。
i=i+1
(是表达式,不是语句)
i=i+1;
(是语句)
精品课件
任何表达式都可以加上分号而成为语句,例如i++; 是一语句,作用是使i值加1。又如x+y;也是一 个语句,作用是完成x+y的操作,它是合法的, 但是并不把x+y的和赋给另一变量,所以它并无 实际意义。
表达式能构成语句是c语言的一个重要特色。其实 “函数调用语句”也是属于表达式语句,因为函 数调用(如sin(x))也属于表达式的一种。只是为 了便于理解和使用,我们把“函数调用语句”和 “表达式语句”分开来说明。由于c程序中大多 数语句是表达式语句(包括函数调用语句),所以 有人把c语言称作“表达式语言”。
精品课件
(4) 空语句。下面是一个空语句: ;
即只有一个分号的语句,它什么也不做。有时用来 做被转向点,或循环语句中的循环体(循环体是 空语句,表示循环体什么也不做)。
(5) 可以用 {}把一些语句括起来成为复合语句, 又称分程序。如下面是一个复合语句。 {z=x+y; t=z/100; printf("%f",t); }
(从函数返回语句)
上面9种语句中的括号()表示其中是一个条件,~ 表示内嵌的语句。例如:“if()~else~”的具 体语句可以写成:
if(x>y) z=x;else z=y;
(2) 函数调用语句。由一次函数调用加一个分号构 成一个语句,例如:printf("this is a c statem ent.");
精品课件
4.1 C语句概述个语句经编译后产生若干条机器指 令。一个实际的程序应当包含若干语句。应当指出, c语句都是用来完成一定操作任务的。声明部分的内 容不应称为语句。如:int a;不是一个c语句,它不产 生机器操作,而只是对变量的定义。从第1章已知, 一个函数包含声明部分和执行部分,执行部分即由语 句组成。c程序结构可以用图4.1表示。即一个c程序 可以由若干个源程序文件(分别进行编译的文件模块) 组成,一个源文件可以由若干个函数和预处理命令以 及全局变量声明部分组成(关于“全局变量”见第7章, “预编译命令”见第8章),一个函数由数据定义部分 和执行语句组成。
精品课件
注意:复合语句中最后一个语句中最后的分号不能 忽略不写(这是和pascal不同的)。
C语言允许一行写几个语句,也允许一个语句拆开 写在几行上,书写格式无固定要求(fortran、 cobol有严格要求)。
4.2 程序的三种基本结构
为了提高程序设计的质量和效率,现在普遍采用结 构化程序设计方法。结构化程序由若干个基本结 构组成。每一个基本结构可以包含 一个或若干个 语句。有三种基本结构:
(1) 顺序结构,见图4.2。先执行a操作,再执行b操作, 两者是顺序执行的关系。图中(b)是ns结构化流 程图(下同)。
精品课件
图4.2
精品课件
图4.3
(2) 选择结构,见图4.3。p代表一个条件,当p条件成 立(或称为“真”)时执行a,否则执行b。注意,只 能执行a或b之一。两条路径汇合在一起然后出口。
相关文档
最新文档