教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4...

47
教教教教5.1 教教教教教教 5.2 教教教教教教教教 5.3 教教教教教教教教 5.4 教教教教教教教教教教教教 教教教教1. 教教教教教教教教教教教教教教教2. 教教教教教教教教教教教教教3. 教教 scanf 教 printf 教教教教教5 教教教教教教教教

Upload: zenia-hensley

Post on 14-Mar-2016

121 views

Category:

Documents


7 download

DESCRIPTION

第 5 章 顺序结构程序设计. 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。 2. 掌握字符输入输出函数的使用。 3. 掌握 scanf 和 printf 函数的使用。. 在顺序结构程序中,各语句是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。 一、简单顺序结构程序组成 1 .程序头部分 ( 1 )程序功能的注释。 ( 2 )编译预处理命令,一般包括文件包含编译预处理命令,以及宏定义命令。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。 2. 掌握字符输入输出函数的使用。 3. 掌握 scanf 和 printf 函数的使用。

第 5 章 顺序结构程序设计

Page 2: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

在顺序结构程序中,各语句是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。

一、简单顺序结构程序组成 1 .程序头部分 ( 1)程序功能的注释。( 2 )编译预处理命令,一般包括文件包含编译预处

理命令,以及宏定义命令。 2 .顺序结构程序函数主体 函数体内主要包括以下一些成分。 ( 1)变量的说明部分。 ( 2)数据输入部分。 ( 3)运算部分。 ( 4 )运算结果输出部分。

5.1 顺 序 结 构 程 序

Page 3: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.1 从键盘输入圆的半径,求圆的周长和面积。程序如下:/* 求圆的周长和面积 */#include <stdio.h># define PI 3.14159main(){ int r; /* 算法步骤① */ float s, area; /* 算法步骤② */ scanf("%d",&r); s=PI*2*r; /* 算法步骤③ */ area = PI*r*r; printf(" s=%f",s); /* 算法步骤④ */ printf("area =%f", area );}

程序算法: ① 定义圆半径、圆周长、面积的变量; ② 从键盘输入圆半径数值; ③ 按照计算公式计算求出圆的周长和面积; ④ 输出圆的周长和面积的数值;

Page 4: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

一、 单个字符的输入函数 1 . getchar() 函数的格式: getchar(); 2 . getchar() 函数的作用: 从系统隐含的输入设备(如键盘)输入一个字符。 3 .说明: ( 1 ) getchar() 函数只能用于单个字符的输入,一

次输入一个字符。 ( 2 )程序中要使用 getchar() 函数,必须在程序

(或文件)的开头加上编译预处理命令: # include "stdio.h"

5.2 字 符 输 入 输 出 函 数

Page 5: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.2 getchar() 函数的使用。 #include "stdio.h" /*文件包含 */ main(){ char ch; printf("Please input a character: "); ch=getchar(); /*输入 1个字符并赋给 ch */ printf("%c", ch ); /*输出一个字符 */ printf('\n');} 程序运行情况如下: Please input a characters: b↙ b

Page 6: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

二、单个字符的输出函数 1 . putchar() 函数的格式: putchar(ch); 其中 ch 可以是一个字符变量或常量,也可以是一个

转义字符。 2 . putchar() 函数的作用:向终端输出一个字符。 3 .说明: ( 1) putchar() 函数只能用于单个字符的输出,且

一次只能输出一个字符。 ( 2)在程序中使用 putchar() 函数,务必牢记:在

程序(或文件)的开头加上编译预处理命令(也称文件包含命令): #include "stdio.h"

表示要使用的函数,包含在标准输入输出( stdio .h )头文件中。

Page 7: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.3 putchar() 函数的格式和使用方法。#include "stdio.h" /*文件包含命令 */main() { char ch1='N', ch2='E', ch3='W'; putchar(ch1); putchar(ch2); putchar(ch3); putchar('\n'); putchar(ch1); putchar('\n'); putchar('E'); putchar('\n'); putchar(ch3); putchar('\n'); } 程序运行结果如下: NEW N E W

Page 8: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

5.3 格 式 输 入 输 出 函 数 一、 printf() 函数 1 . printf() 函数的一般格式

printf(" 格式字符串 " [ ,输出项表 ]) ;2. 函数的作用:输出一个或多个任意类型的数据。 3 .格式字符串 “格式字符串”也称“转换控制字符串”,可以包含

三种字符:格式指示符、转义字符、普通字符 ( 1 )格式指示符 一般形式如下:

%[ 标志符 ][ 宽度 ][. 小数宽度 ][ 类型修饰符 ]

Page 9: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 2 )转义字符 printf() 函数中的‘ \n’ 就是转义字符,输出时产生

一个“换行”操作。 还有: \t 、 \r 、 \b 等。 ( 3 )普通字符 除格式指示符和转义字符之外的其它字符。 普通字符原样输出。 4 .输出项表 输出项表内容:常量,变量,表达式 。 输出项表是可选的。若输出的数据不止 1 个,相邻 2

个之间用逗号分开。

Page 10: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

下面的 printf() 函数都是合法的:( 1 ) printf("I am a student.\n"); 普通字符 转义字符( 2 ) printf("%d",3+2); 格式指示符 表达式( 3 ) printf("a=%f b=%5d\n", a, b+3);( 4 ) printf(“%d,%c\n”, 56,56); 2 个输出项之间用逗号分开

此处逗号也是普通字符

Page 11: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

5. 格式指示符%d 以十进制输出整数。%md 以十进制输出整数,数据最小宽度占 m 位。 若数值长度 <m ,则 靠右输出,左边补空格。 若数值长度 >m, 输出原整数。% _ md 以十进制输出整数,数据最小宽度占 m 位。 若数值长度 <m ,则 靠左输出,右边补空格。 若数值长度 >m, 输出原整数。 例如: printf(“%5d,% - 5d\n”,456,567); 输出结果: □□ 456,567□□%ld 以十进制形式输出长整型数据。

Page 12: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

%o 以八进制无符号形式输出整数 , 不输出前导符 0 。 printf("%o \n",128); 输出结果: 200%lo 以八进制无符号形式输出长整型数 不输出前导符 0 。 %x 以十六进制无符号形式输出整数, 不输出前导符 0x 。%lx 以十六进制无符号形式输出长整型数, 不输出前导符 0x 。 %u 以无符号十进制形式输出整数。 printf(“%u\n”, - 2); 输出结果: 65534%lu 以无符号十进制形式输出长整型数。

Page 13: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

%c 用来输出 1 个字符。 %s 用来输出一个字符串。%ms 按 m 宽度输出字符串。 若串长 >m ,则照字符串原样输出; 若串长 <m ,则左边补空格。%- ms 类似 %ms , 若串长 <m ,则字符串向左靠,右边补空格。%m.ns 靠右输出字符串左边的 n 个字符,左补空格。 (n m)%-m.ns 靠左输出字符串左边的 n 个字符,右补空格。 (n m)

Page 14: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

%f 以小数形式输出实数。%m.nf 输出宽度为 m ,其中小数为 n 位。 若数值长度 <m ,则 靠右输出,左边补空格。%-m.nf 同类似,“ - ” 表示靠左输出,右边补空格。 %e 以指数形式输出实数。%m.ne 此处 m 、 n 、 同 f 格式。%-m.ne 此处 m 、 n 、 - 同 f 格式。%g 根据数值大小自动选择 f 格式或 e 格式中占用宽 度小的一种

Page 15: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

6. 使用说明 ( 1 )格式控制中的格式说明符,必须按从左到右的顺

序,与输出项表中的每个数据一一对应,否则出错。例如 : 下面使用格式是错误的。printf("str=%s, f=%d, i=%f\n", "Internet", 1.0 / 2.0, 3 + 5, "CHINA");( 2 )格式字符 x 、 e 、 g 可以用小写字母,也可以用大

写字母。使用大写字母时,输出数据中包含的字母也大写。 除了 x 、 e 、 g 格式字符外,其它格式字符必须用小写

字母。 例如, %f 不能写成 %F 。

Page 16: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 3 )格式字符紧跟在“ %” 后面就作为格式字符,否则将作为普通字符使用(原样输出)。

例如, printf(”c=%c, f=%f\n“, c, f); 中的第一个 c 和 f ,都是普通字符 ( 4 )所谓无符号形式是指,不论正数还是负数,

系统一律当作无符号整数来输出。 unsigned int a=65535

printf(“a=%u\n”,a);

输出结果: 65535

Page 17: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

7. 格式字符使用实例(1) % d ─ 以带符号的十进制整数形式输出。main() { int n1=123; long int n2=123456; printf("%d,%5d,% - 5d,%2d\n",n1,n1,n1,n1); printf("%ld,%8ld,%5ld\n",n2,n2,n2); printf("n1=%ld\n",n1); } 程序运行结果: 123,□□123,123□□,123 123456,□□123456,123456 n1=16908411

Page 18: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

(2) % d % o % x % 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); }

Page 19: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

(3) % f ─ 以小数形式、按系统默认的宽度, 输出单精度和双精度实数。main( ){ float f=123.456; double d1, d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf("%f,%12f,%12.2f\n",f,f,f); printf("%-12.2f,%.2f\n",f,f); printf("d1+d2=%f\n",d1+d2); }

Page 20: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

程序运行结果如下: 123.456001,□□123.456001,□□□□□□123.46 123.46□□□□□□,123.46 d1+d2=3333333333333.333010 本程序的输出结果中,超出了有效数字的范围的数据

是无意义。例如: 数据 123.456001 中的 001 是无意义的 数据 3333333333333.333010 中的 010 是无意义, 因为它们超出了有效数字的范围。

Page 21: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

(4) %e -- 以标准指数形式输出实数 指数形式尾数中的整数部分大于等于 1 、小于 10 , 小数点占一位,尾数中的小数部分占 6 位; 指数部分占 5 位(如 e-003 ),其中 e 占一位,指数符号占一位,指数占 3 位, 标准指数形式共计 13 位。 (5) %g -- 让系统根据数值的大小,自动选择 %f 或 %e格式、且不输出无意义的零。 例如: float a=123.468; printf( “ %f,%e,%g\n”,a,a,a ); 输出结果: 123.468000,1.234680e+002,123.468

Page 22: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

(6) % c ─ 输出一个字符(只占一列宽度)。 main() { char c='A'; int i=65; printf("c=%c,%5c,%d\n",c,c,c); printf("i=%d,%c",i,i); } 程序运行结果如下: c=A,□□□□A,65 i=65,A C语言中,整数以字符形式输出时,系统首先求该数与256 的余数,然后将余数作为 ASCII 码,转换成相应的字符输出。字符数据也可以整数形式输出。

Page 23: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

(7) % s ─ 输出一个字符串。 main() { printf("%s,%5s","Internet","Internet"); printf("%-10s\n","Internet"); printf("%10.5s,”,"Internet"); printf("%%-10.5s,”,"Internet"); printf(“%4.5s\n","Internet");} 程序运行结果如下:Internet,Internet,Internet□□,□□□□□Inter,Inter□□□□□,Inter 说明: 系统输出字符和字符串时,不输出单引号和双引号。

Page 24: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.4 输出格式控制符的作用#include <stdio.h>main(){ int a =3102; long int b =74228; short int c =625; printf("a1=%d\n",a); printf("a2=%o\n",a); printf("a3=%x\n",a); printf("b=%ld\n",b); printf("c=%d\n",c);} 运行结果: a1=3102 a2=6036 a3=c1e b=74228 c=625

Page 25: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.5 输出格式控制符的作用#include <stdio.h>main(){ unsigned int d =65433; float f =2.34679865858988; double g =2.34679865858988; printf("d=%u\n",d); printf(“f1=%e\n",f); printf("f2=%f\n",f); printf("g=%f\n",g); printf("\n"); getch();} 运行结果: d=65433 f1=2.34680e+00 f2=2.346799 g=2.346799

Page 26: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.6 已知圆柱体的底半径 (radius) 1.5 ,高 (high) 2.0 ,求其体积。 main() {

float r=1.5, h=2.0, vol; vol= 3.14159 * r * r * h; /* 求体积 */ printf(“vol=%7.2f\n”,vol); } 在程序中给计算机提供数据,可以用赋值语句,也可

以用输入函数。在 C语言中,可使用 scanf() 函数,通过键盘输入,给计算机主机同时输入多个、任意的数据

二、格式化输入函数

Page 27: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

1. scanf() 函数的一般格式 scanf(" 格式字符串 ", 输入项首地址表 );( 1 )格式字符串 格式字符串可以包含 3 种类型的字符: 格式指示符、空白字符(空格、 Tab 键和回车

键)和非空白字符(又称普通字符)。格式指示符与 printf() 函数的相似,空白字符作为相邻 2 个输入数据的缺省分隔符,非空白字符(又称普通字符)在输入有效数据时,

必须原样一起输入。

Page 28: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 2 )输入项首地址表 输入项首地址表由若干个输入项首地址组成,相邻 2个输入项首地址之间,用逗号分开。 变量首地址的表示方法: & 变量名 其中“ &” 是地址运算符。 例如, “ &r” 是指变量 r在内存中的首地址 输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。 int a1, a2; scanf("%d%d",&a1,&a2); 输入项首

地址表

Page 29: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

2. 格式指示符 ( 1 )格式指示符的形式为: % [*] [ 宽度 ] [h|l] 类型字符类型字符有: d 、 u 、 o 、 x 、 c 、 s 、 f 、 e 、 g 以上类型字符代表的数据类型与 printf() 中的相同。 例如,格式字符串 “ %f %f ” 。 ( 2 ) 类型修饰符 类型修饰符 : h 、 l 其含义与 printf() 中的一样, h 短整型 l 为长整型。

Page 30: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 3 )宽度 n 指定该项输入数据所占列数为 n ,读取输入数据

中相应的 n 位,但按需要的位数赋给相应的变量,多余部分被舍弃。

例如, scanf("%3c%3c",&ch1,&ch2); 设输入:“ abcdefg” , 则系统将读取的“ abc” 中的“ a”赋给变量 ch1 ; 将读取的“ def” 中的“ d”赋给变量 ch2 , 则: printf("ch1=%c,ch2=%c\n",ch1,ch2); 输出结果为: ch1=a,ch2=d 。

Page 31: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 4 )赋值抑制字符 * 赋值抑制字符 *,表示本输入项对应的数据读入后,

不赋给相应的变量(该变量由下一个格式指示符输入)。 例如, scanf("%2d%*2d%3d",&n1,&n2); 设输入 123456789 则系统将读取“ 12”并赋值给 n1 ; 读取“ 34” 、但舍弃掉(“ *” 的作用); 读取“ 567”并赋值给 n2 。 则: printf("n1=%d,n2=%d\n",n1,n2); 输出结果为: n1=12,n2=567

Page 32: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

3. 数据输入操作 ( 1 )如果相邻 2 个格式指示符之间,不指定数据分隔符(如逗号、冒号等),则相应的 2 个输入数据之间,至少用一个空格分开,或者用 Tab 键分开,或者输入 1 个数据后,按回车,然后再输入下 1 个数据。设给 n1输入 12,给 n2 输入 36;则执行以下命令, scanf("%d%d",&n1,&n2); 正确的输入操作为: ① 12□36↙ ② 12 Tab 36↙ ③ 12↙ 36↙ 注:使用“↙”符号表示按回车键操作,在输入数据

操作中的作用是,通知系统输入操作结束。

Page 33: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 2 )“格式字符串”中出现的普通字符(包括转义字符形式的字符),务必原样输入。

例如, scanf("%d,%d",&n1,&n2); 设给 n1 输入 12 ,给 n2 输入 36 , 正确的输入操作为: 12,36↙另外, scanf() 函数中、格式字符串内的转义字符 ( 如 \

n) ,系统并不把它当转义字符来解释,从而产生一个控制操作,而是将其视为普通字符,所以也要原样输入。

例如: scanf("n1=%d,n2=%d\n",&n1,&n2); 正确的输入操作为: n1=12,n2=36\n↙

一般不使用转义字符

Page 34: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

在设计输入操作时,为了改善人机交互性,使得输入操作简单明了,可以在用 scanf() 函数进行数据输入时,一般先用 printf() 函数输出一个提示信息,再用 scanf() 函数进行数据输入。

例如, scanf("n1=%d,n2=%d\n",&n1,&n2 ) ;改为: printf("n1="); scanf("%d",&n1); printf("n2="); scanf("%d",&n2);

Page 35: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

( 3 )用 scanf() 函数进行数据输入时,输入数据遇到以下情况,系统认为该数据结束: ① 遇到空格,或者回车键,或者 Tab 键。 ② 遇到输入域宽度结束。 例如: scanf(“%3d %3d”,&a1,&a2 ) ; “%3d” ,只取 3 列,第 3 列结束,第 4 列以后无效。 ③ 遇到非法输入。 例如,在输入数值数据时,遇到字母等非数值符号 ( 数值符号仅由数字字符 0-9 、小数点和正负号构成 ) 。 scanf(“%d”,&a); 输入数值 : 234a12 ↙ 变量 a 的数值为 234

Page 36: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

4 .使用格式说明符“ %c” 输入单个字符时,空格和转义字符均作为有效字符被输入。

例如, scanf("%c%c%c",&ch1,&ch2,&ch3);设输入: A□BC ↙,则系统将 字母 'A'赋值给 ch1 空格 '□' 赋值给 ch2 字母 'B'赋值给 ch3 执行: printf("%c %c %c\n ",ch1 ,ch2 , ch3); 运行结果: A□B

Page 37: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.7 从键盘输入两个整型数,输出其中的一个大数的程序也可以写成如下程序:

int max(int x, int y) { return( x>y ? x : y ); } main( ){ int a, b c ; printf(“Input the first integer number: ”); scanf( “%d”, &a ); printf(“Input the second integer number: ”); scanf( “%d”, &b ); c= max( a, b ); printf(“max=%d\n”, c ); }

表达式的表达式的应用应用输出提示信息

Page 38: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

运行窗口及程序运行情况: 第一次运行程序情况及结果

第二次运行程序,进入运行窗口,先显示第一个提示信息,光标停在提示信息后,等待用户从键盘输入一个整数,再显示第二个提示信息,输入一个整数,返回程序窗口。

Page 39: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

运行上述程序,一次输入两个整型数,输出其中的一个大数;

若要进行几组两个整型数的比较,并输出其中的一个大数,那么就要多次运行上述程序。

若要在一个程序中完成几组两个整型数的比较,并输出其中的一个大数,就要编写一个循环程序。

Page 40: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.8 从键盘输入梯形的上下底和高的实数值,求梯形的面积。 算法: ① 定义存放梯形的上、下底和高,以及梯形的面积的变量; ② 从键盘输入梯形的上下底和高的实数值; ③ 按照计算公式 0.5 * (a+b) * h 求出梯形的面积; ④ 输出梯形的上、下底和高的实数值; ⑤ 输出梯形的面积。

5.4 顺序结构程序设计应用实例

Page 41: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

程序如下:main(){ float a,b,h,s; ① printf("please input a,b,h:\n"); scanf("%f%f%f",&a,&b,&h); s=0.5 * (a+b) * h; ③ printf("a=%5.2f b=%5.2f h=%5.2f",a,b,h); ④ printf("s=%7.4f",s); ⑤}

Page 42: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.9 输入任意三个整数,求它们的和及平均值 main()

{ int n1, n2, n3, sum; float aver; printf("Please input three nbers:"); scanf("%d,%d,%d",&n1,&n2,&n3);

sum=n1+n2+n3; /* 求累计和 */ aver=sum/3.0; /* 求平均值 */ printf("%d, %d, %d\n",n1,n2,n3); printf("sum=%d,aver=%7.2f\n",sum,aver);}

Page 43: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.10 从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的 ASCII码值#include "stdio.h"main(){char c1,c2; printf("Input a lowercase letter: "); c1=getchar(); putchar(c1); printf(",%d\n",c1); c2=c1-32; /* 小写字母转换为大写字母 */ printf("%c,%d\n",c2, c2);} 程序运行情况如下: Input a lowercase letter: a↙ a,97 A,65

Page 44: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.11 求方程 ax2+bx+c=0 的实数根。 a , b , c由键盘输入, a≠0 且 b2-4ac>0 。#include “math.h” /*函数 sqrt() 包含于 math.h 头文件 */main(){ float a, b, c, disc, x1, x2; printf("Input a, b, c: "); scanf("%f,%f,%f",&a,&b,&c); disc=b*b-4*a*c; /* 求判别式的值赋给 disc*/ x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);}

Page 45: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

例 5.12 复数减法运算#include <stdio.h>main(){ float a1, b1, a2, b2; char ch; printf("please input the first complex:\n"); printf("realpart:"); scanf("%f",&a1); printf("virtualpart:"); scanf("%f",&b1); printf("first complex is:%5.2f +i %5.2f\n",a1,b1);

Page 46: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

printf("\n please input the second complex:\n"); printf("realpart:"); scanf("%f",&a2); printf("virtualpart :"); scanf("%f",&b2); printf("second complex is:%5.2f +i %5.2f\n",a2,b2); printf("\n The result is :"); printf("%6.3f +i %6.3f\n",a1-a2,b1-b2); ch=getchar();}

Page 47: 教学内容: 5.1 顺序结构程序 5.2 字符输入输出函数 5.3 格式输入输出函数 5.4 顺序结构程序设计应用实例 教学要求: 1. 掌握编写顺序结构程序的基本方法。

同 学 们 再 见