第4章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
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章精品文档
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语言程序设计(第四章)
格式: 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
例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章(谭浩强)
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) ; }
总结:
用于长整型整数,可加在格式符 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章简单程序
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
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)
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章_选择结构程序设计
高
==
!=
等于
不等于
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教程
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、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语句
C语言程序设计-谭浩强-第4章 顺序结构程序设计
程序运行结果为: x=3, y=2 x=2, y=2 x=1, y=2
5/38
4.2 字符数据的输入与输出
C语言本身不提供输入/输出语句。 C语言的输入/输出功能由C语言的标准I/O库 函数提供。 #include <stdio.h>
C语言的输入/输出库函数名称不是保留字 (或称关键字)。如printf,scanf。
第4章 顺序结构程序设计
4.1 4.2 4.3 4.4 C语言的基本语句 字符数据的输入与输出 格式输入与输出 顺序程序设计举例
1/38
4.1 C语言的基本语句
C程序结构
C程序 源程序文件1 源程序文件2 源程序文件n
预处理命令
数据声明
函数首部
函数1
函数体
函数n
数据声明
执行语句
• C是模块化程序设计语言
1 0 0 . 76 5 6 1 00 . 0 1 . 0 0 76 5 1 . 0 0 76 5
4 7 4 4
3 6 e 3
2 5 +0 02 2 1 e +0 0 2
19/38
例 m.n
例 int a=1234; float f=123.456; char ch=„a‟; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);
例:
#include <stdio.h> /*说明函数getchar的原型包含在哪个文件中*/ void main() 从键盘输入字符, 该字 { int a; 符的ASCII编码值赋给 char b; a a=getchar(); b=getchar(); printf("a=%c\ta=%d\tb=%c\tb=%d\n",a,a,b,b); } 程序运行情况如下:
第4章c语言谭浩强版顶级讲义
4.5 字符数据的输入输出
我们先介绍c标准i/o函数库中最简单的、也是最容易理 解的字符输入输出函数putchar()和getchar(),再介绍 格式输入输出函数printf()和scanf()函数。
4.5.1 putchar函数(字符输出函数)
putchar函数的作用是向终端输出一个字符:例如 putchar(c);它输出字符变量c的值。c可以是字符型 变量或整型变量。 例4.1输出单个字符。
#include <studio.h>
或
#include "studio.h"
studio.h是standard input & output的缩写,它包含了 与标准i/o库有关的变量定义和宏定义(有关预编译
命令见第7章)。考虑到printf和scanf函数使用频繁, 系统允许在使用这两个函数时可不加#include命令。
if((a=b)>0)t=a;
按语法规定if后面的( )内是一个条件,例如可以 是:“if(x>0)…”。现在在x的位置上换上一个赋 值表达式“a=b”,其作用是:先进行赋值运算 (将b的值赋给a),然后判断a是否大于0,如大于0, 执行t=a。在if语句中的“a=b”不是赋值语句而是 赋值表达式,这样写是合法的。如果写成 if((a=b;)>0)t=a;就错了。在if的条件中不能包 含赋值语句。由此可以看到,c把赋值语句和赋 值表达式区别开来,增加了表达式的种类,使表 达式的应用几乎“无孔不入”,能实现其他语言 中难以实现的功能.
4.5.2 getchar函数(字符输入函数) 此函数的作用是从终端(或系统隐含指定的输入设
备)输入一个字符。getchar函数没有参数,其一 般形式为 getchar() 函数的值就是从输入设备得到的字符。例如: 例4.2输入单个字符 #include <stdio.h>
我们先介绍c标准i/o函数库中最简单的、也是最容易理 解的字符输入输出函数putchar()和getchar(),再介绍 格式输入输出函数printf()和scanf()函数。
4.5.1 putchar函数(字符输出函数)
putchar函数的作用是向终端输出一个字符:例如 putchar(c);它输出字符变量c的值。c可以是字符型 变量或整型变量。 例4.1输出单个字符。
#include <studio.h>
或
#include "studio.h"
studio.h是standard input & output的缩写,它包含了 与标准i/o库有关的变量定义和宏定义(有关预编译
命令见第7章)。考虑到printf和scanf函数使用频繁, 系统允许在使用这两个函数时可不加#include命令。
if((a=b)>0)t=a;
按语法规定if后面的( )内是一个条件,例如可以 是:“if(x>0)…”。现在在x的位置上换上一个赋 值表达式“a=b”,其作用是:先进行赋值运算 (将b的值赋给a),然后判断a是否大于0,如大于0, 执行t=a。在if语句中的“a=b”不是赋值语句而是 赋值表达式,这样写是合法的。如果写成 if((a=b;)>0)t=a;就错了。在if的条件中不能包 含赋值语句。由此可以看到,c把赋值语句和赋 值表达式区别开来,增加了表达式的种类,使表 达式的应用几乎“无孔不入”,能实现其他语言 中难以实现的功能.
4.5.2 getchar函数(字符输入函数) 此函数的作用是从终端(或系统隐含指定的输入设
备)输入一个字符。getchar函数没有参数,其一 般形式为 getchar() 函数的值就是从输入设备得到的字符。例如: 例4.2输入单个字符 #include <stdio.h>
C程序设计(第四版)(谭浩强编)教程-第4章_选择结构程序设计
每周一句:想跟同学们说的话 每周一句 想跟同学们说的话
健康、青春和自由可以说是人生的三大财宝, 健康、青春和自由可以说是人生的三大财宝, 和自由可以说是人生的三大财宝 但当我们拥有它时,却毫无所觉,一旦丧失后,才 但当我们拥有它时,却毫无所觉,一旦丧失后, 意识到它们的可贵。 意识到它们的可贵。 ---- Arthur Schopenhauer(德) Schopenhauer(
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
在现实生活中 在现实生活中,需要进行判断和选择的 情况是很多的 处理这些问题,关键在于进行条件判断 处理这些问题, 这些问题 由于程序处理问题的需要, 由于程序处理问题的需要,在大多数程 序中都会包含选择结构, 序中都会包含选择结构,需要在进行下 一个操作之前先进行条件判断
4.1 选择结构和条件判断
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) 如果 b>c,将b和c对换 , 和 对换 { t=b; b=c; c=t; } b是三者中的次小者 是三者中的次 中的 printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
健康、青春和自由可以说是人生的三大财宝, 健康、青春和自由可以说是人生的三大财宝, 和自由可以说是人生的三大财宝 但当我们拥有它时,却毫无所觉,一旦丧失后,才 但当我们拥有它时,却毫无所觉,一旦丧失后, 意识到它们的可贵。 意识到它们的可贵。 ---- Arthur Schopenhauer(德) Schopenhauer(
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
在现实生活中 在现实生活中,需要进行判断和选择的 情况是很多的 处理这些问题,关键在于进行条件判断 处理这些问题, 这些问题 由于程序处理问题的需要, 由于程序处理问题的需要,在大多数程 序中都会包含选择结构, 序中都会包含选择结构,需要在进行下 一个操作之前先进行条件判断
4.1 选择结构和条件判断
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) 如果 b>c,将b和c对换 , 和 对换 { t=b; b=c; c=t; } b是三者中的次小者 是三者中的次 中的 printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
C语言谭浩强版第4章PPT教学课件
第四章 最简单的C程序设计—— 顺序程序设计
4.1 C语句概述 4.3 数据输入输出的概念及在C语言中的实现 4.4 字符数据的输入输出 4.5 格式输入 与 输出 4.6 顺序结构程序设计举例
2020/12/10
1
4.1 C 语 句 概 述
C语句可以分为以下5类:
1) 控制语句,完成一定的控制功能:if( ) ~ else ~ , for( ) ~ …
2) 函数调用语句: printf(“ This is a C program”);
3) 表达式语句: a=3; x=a+b;
4) 空语句:
;
5) 5) 可用 { } 把一些语句括起来成为复合语句。
main() { int i=1,j=0,a[6];
for(;i<=5;i++) { scanf(“%d”,&a[i]); j=j+a[i]; }
%d 按整型数据的实际长度输出。
printf(“%d,%d”,a,b)
123,456
%md m为指定的输出字段的宽度。
printf(“%8d,%2d”,a,b)
123,456
%ld 输出长整型数据。
long a=135790;
printf(“%ld”,a); printf(“%8ld”,a)
135790
ffff,-1,177777
2020/12/10
8
(4) u 格式符。用来输出无符号数,以十进制形式输出。
main() { unsigned int a=65535;
int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“b=%d,%o,%x,%u\n”,b,b,b,b); }
4.1 C语句概述 4.3 数据输入输出的概念及在C语言中的实现 4.4 字符数据的输入输出 4.5 格式输入 与 输出 4.6 顺序结构程序设计举例
2020/12/10
1
4.1 C 语 句 概 述
C语句可以分为以下5类:
1) 控制语句,完成一定的控制功能:if( ) ~ else ~ , for( ) ~ …
2) 函数调用语句: printf(“ This is a C program”);
3) 表达式语句: a=3; x=a+b;
4) 空语句:
;
5) 5) 可用 { } 把一些语句括起来成为复合语句。
main() { int i=1,j=0,a[6];
for(;i<=5;i++) { scanf(“%d”,&a[i]); j=j+a[i]; }
%d 按整型数据的实际长度输出。
printf(“%d,%d”,a,b)
123,456
%md m为指定的输出字段的宽度。
printf(“%8d,%2d”,a,b)
123,456
%ld 输出长整型数据。
long a=135790;
printf(“%ld”,a); printf(“%8ld”,a)
135790
ffff,-1,177777
2020/12/10
8
(4) u 格式符。用来输出无符号数,以十进制形式输出。
main() { unsigned int a=65535;
int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“b=%d,%o,%x,%u\n”,b,b,b,b); }
谭浩强C语言配套课件C语言第四次课
THANKS
感谢观看
03 贪心算法
理解贪心算法的原理,掌握其实现方法,并通过 案例分析了解贪心算法的应用。
项目实战案例分析
学生信息管理系统
设计并实现一个学生信息管理系统,包括学生信息的录入、查询、修改和删除 等功能。通过该案例分析,掌握数据结构的处理和算法的应用。
文本编辑器
设计并实现一个简单的文本编辑器,能够实现文本的输入、编辑、保存和打开 等功能。通过该案例分析,深入了解数据结构和算法在实际项目中的应用。
03 图
了解图的基本概念,掌握图的表示方法(邻接矩 阵、邻接表),以及图的遍历(深度优先搜索、 广度优先搜索)。
算法实现与应用
01 排序算法
理解各种排序算法(冒泡排序、选择排序、插入 排序、快速排序等)的原理,掌握其实现方法, 并比较其时间复杂找、二分查找等)的 原理,掌握其实现方法,并比较其时间复杂度。
单步执行
逐行执行代码,观察程序的执行过程和变量 的变化。
设置断点
在代码中设置断点,以便在程序执行到该点 时暂停,检查变量的值和执行流程。
检查变量和内存
使用调试工具检查变量的值和内存状态,以 便找出问题所在。
错误处理机制
错误码
在程序中定义错误码, 用于标识不同的错误
类型。
异常处理
使用异常处理机制来 捕获和处理运行时错
谭浩强C语言配套课 件:C语言第四次课
目录
• C语言基础回顾 • 函数进阶 • 数组与指针 • 程序调试与错误处理 • 综合练习与挑战
01 C语言基础回顾
数据类型
整型
包括int,short,long, long long等,用于存储整 数。
浮点型
包括float,double等,用 于存储小数。
谭浩强C程序设计四PPT课件
❖C语句分类:
➢控制语句 ➢函数调用语句(第八章讲) ➢表达式语句 ➢空语句 ➢复合语句,又称分程序
高级语言程序设计
第四章顺序程序设计
控制语句
作用:完2、for()~ 3、while()~ 4、do~while() 5、continue 6、break 7、switch () 8、goto 9、return
(条件语句) (循环语句) (循环语句) (循环语句) (结束本次循环语句) (中止执行switch或循环语句) (多分支选择语句) (转向语句) (从函数返回语句)
高级语言程序设计
第四章顺序程序设计
表达式语句
用法:由一个表达式构成一个语句
弄清表达式和表达式语句的区别
表达式:a=3 //无分号 表达式语句:a=3; //有分号
第四章顺序程序设计
修饰符
功
能
m 输出数据域宽,数据长度<m,左补空格;否则按实际输出
.n
对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数
-
输出数据在域内左对齐(缺省右对齐)
+
指定在有符号数的正数前显示正号(+)
0
输出数值时指定左面不使用的空位置自动填0
#
在八进制和十六进制数前显示前导0,0x
输出表:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息
格式说明: %[修饰符]格式字符 ,用于指定输出格式 普通字符或转义序列:原样输出 格式字符
高级语言程序设计
第四章顺序程序设计
格式字符:
d,i 十进制整数
int a=-1;printf ( “%d”,a);
-1
x,X o u c s e,E f g %%
➢控制语句 ➢函数调用语句(第八章讲) ➢表达式语句 ➢空语句 ➢复合语句,又称分程序
高级语言程序设计
第四章顺序程序设计
控制语句
作用:完2、for()~ 3、while()~ 4、do~while() 5、continue 6、break 7、switch () 8、goto 9、return
(条件语句) (循环语句) (循环语句) (循环语句) (结束本次循环语句) (中止执行switch或循环语句) (多分支选择语句) (转向语句) (从函数返回语句)
高级语言程序设计
第四章顺序程序设计
表达式语句
用法:由一个表达式构成一个语句
弄清表达式和表达式语句的区别
表达式:a=3 //无分号 表达式语句:a=3; //有分号
第四章顺序程序设计
修饰符
功
能
m 输出数据域宽,数据长度<m,左补空格;否则按实际输出
.n
对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数
-
输出数据在域内左对齐(缺省右对齐)
+
指定在有符号数的正数前显示正号(+)
0
输出数值时指定左面不使用的空位置自动填0
#
在八进制和十六进制数前显示前导0,0x
输出表:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息
格式说明: %[修饰符]格式字符 ,用于指定输出格式 普通字符或转义序列:原样输出 格式字符
高级语言程序设计
第四章顺序程序设计
格式字符:
d,i 十进制整数
int a=-1;printf ( “%d”,a);
-1
x,X o u c s e,E f g %%
谭浩强C语言__第4章_选择PPT教学课件
else printf("您输入的是其它字符\n"); system("pause");
10
}
if语句的嵌套
匹配规则:
Else总是与它上面的,最近的,统一复合语句中的,未配
对的if语句配对。
例:
例:
If()
If()
if() 语句1
{if() 语句1}
else
else
if() 语句2
if() 语句2
!a的值为0
a&&b的值为1
a||b的值为1
!a||b的值为1
4&&0||2的值为1
逻辑表达式
例:5>3&&8<4-!0
自左向右运算
5>3逻辑值为1
!0逻辑值为1
4-1值为3
表达式值为0
1&&0逻辑值为0 8<3逻辑值为0
逻辑表达式
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时
复习
顺序结构程序设计
从键盘输入一个大写字母,要求改用小写字母输出
int main() {
char c1,c2; scanf("%c",&c1); printf("您输入的字符是:%c,%d\n",c1,c1); c2=c1+32; printf("转换为小写字母是:%c,%d\n",c2,c2); system("pause");
else 语句3
else 语句3
10
}
if语句的嵌套
匹配规则:
Else总是与它上面的,最近的,统一复合语句中的,未配
对的if语句配对。
例:
例:
If()
If()
if() 语句1
{if() 语句1}
else
else
if() 语句2
if() 语句2
!a的值为0
a&&b的值为1
a||b的值为1
!a||b的值为1
4&&0||2的值为1
逻辑表达式
例:5>3&&8<4-!0
自左向右运算
5>3逻辑值为1
!0逻辑值为1
4-1值为3
表达式值为0
1&&0逻辑值为0 8<3逻辑值为0
逻辑表达式
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时
复习
顺序结构程序设计
从键盘输入一个大写字母,要求改用小写字母输出
int main() {
char c1,c2; scanf("%c",&c1); printf("您输入的字符是:%c,%d\n",c1,c1); c2=c1+32; printf("转换为小写字母是:%c,%d\n",c2,c2); system("pause");
else 语句3
else 语句3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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之一。两条路径汇合在一起然后出口。