Presentation is loading. Please wait.

Presentation is loading. Please wait.

第四章 顺序结构程序设计.

Similar presentations


Presentation on theme: "第四章 顺序结构程序设计."— Presentation transcript:

1 第四章 顺序结构程序设计

2 4.1 语句 4.2 输出函数 4.3 输入函数 4.4 常用的数学函数 4.5 顺序结构程序设计举例

3 §4.1 语句 定义:用来向计算机系统发出操作的指令。 分类: (1)控制语句 (2)函数调用语句 (3)表达式语句 (4)空语句:;
(5)复合语句 { 语句1; 语句2; 语句n; }

4 几个知识点: 赋值表达式后加一个分号既为一个赋值语句 赋值表达式可以放在其他表达式中,而赋值语句不可以放在其他表达式中 (a=3)+4 
if ((a=b)>0) t=a

5 几个知识点: 即 C语言无I/O语句,I/O操作由函数实现 #include <stdio.h>
输入:从输入设备(鼠标、键盘、扫描仪等)向计算机输入数据。 输出:从计算机向输出设备(显示屏、打印机等)输出数据。 C不提供输入输出语句,输入输出数据是由系统提供的函数来完成的,输入输出函数在系统文件stdio.h中定义,在主函数前用预处理命令将其包含: #include <stdio.h> C语言无I/O语句,I/O操作由函数实现 #include <stdio.h>

6 §4.2 格式输入/输出函数 #include <stdio.h> main() { int num;
printf(“input a number:"); scanf("%d",&num); printf(" \nthe square of the %d is %d \n", num,num*num); } 输入/输出函数 (printf/scanf) 用于接受和显示数据或信息 格式字符 转义字符

7 printf 函数4-1 int visitor_count = 150; printf (" %d" , visitor_count);
将一些信息按照指定的格式送到标准输出(显示器) 将按指定的格式显示该变量的值 转换字符串 说 明 %d 将参数按整数形式转换输出,对应参数应是int 类型 %ld 将参数按长整数形式转换输出,对应参数应是long 类型 %c 输出一个字符,对应参数应该是一个字符 %s 输出一个字符串,对应参数应该是一个字符串 %f 将参数按带小数点数形式输出,对应参数应是double 类型,默认情况下精确到 6 位小数 %o, %x, %u %e, %g

8 printf 函数4-2 输出结果:150 int visitor_count = 150;
printf (" %d" , visitor_count); 输出结果:150

9 printf 函数4-3 输出结果: 5500 int salary = 5500; printf (" %10d" , salary);
输出结果: 输出结果的左边显示了 6 个空格

10 printf 函数4-4 输出结果:78.530000 9.478679 float circumference = 78.53;
printf (" %f" , circumference); ; 输出结果: 默认情况下精确到六位小数

11 printf 函数5-5 输出结果: 168.23 double mercury_level = 168.2251074;
printf ("%7.2f" , mercury_level); " %7.2f" 输出结果: 宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。 精度(精确到小数点后多少位)

12 转义序列 转义序列 名称 描述 输出结果: Name: Audrey Hepburn Movie: ‘Roman Holiday’ 代码:
警告 产生一则警告。 \b 退格 将光标回退一格。 \f 换页 将光标移到下一页的第一格。 \n 换行 将光标移到下一行的第一格。 \r 回车 将光标移到当前行的第一格。 \t 水平制表 将光标移到下一个水平制表位置。 \v 垂直制表 将光标移到下一个垂直制表位置。 \' 单引号 产生一个单引号。 \" 双引号 产生一个双引号。 \? 问号 产生一个问号。 \\ 反斜线 产生一条反斜线。 \0 产生一个空字符。 输出结果: Name: Audrey Hepburn Movie: ‘Roman Holiday’ 代码: printf(“Name: Audrey Hepburn \n Movie: \‘Roman Holiday\’”); 转义序列允许在输出结果中包括特殊字符

13 printf 函数使用示例 #include <stdio.h> void main() {
float radius=1.5, high=2.0; float pi= , vol; /*计算体积*/ vol=pi*radius*radius*high; /*输出体积的值*/ printf("vol=%7.2f\n",vol); } 内存 radius pi high 1.5 2.0 vol 14.14 输出: vol=

14 printf 函数总结 2.一般格式:printf("格式控制串",输出表) 普通字符:原样输出 转义字符:原义输出 格式说明:%格式字符
1.作用:向计算机系统默认的输出设备(一般指终端或显示器)输出若干个任意类型的数据。 2.一般格式:printf("格式控制串",输出表) 说明: ①格式控制串:包含三种信息 普通字符:原样输出 转义字符:原义输出 格式说明:%格式字符 ②输出表:要输出的常量或变量、表达式,相邻的两个输出项用逗号分隔 例: printf("a=%d,c=%c\n",5,'a'); printf("a=%d,c=%c\n",a,c); printf("a=%d,c=%c\n",3*5,97);

15 printf 函数总结 格式字符 不同类型的数据用不同的格式字符(%d、%f、%c、%s) 格式字符要用小写输出(除了X,E,G外)
格式字符的个数与输出项的个数应相同,类型相一致,按先后顺序一一对应; 输出字符%应写成printf("%%");

16 scanf 函数 scanf("%d",&num);
变量的名称 &符号(附在读取的每个变量上)用于指明变量在内存中的位置 转换字符串 转换字符串 参数变量的类型 要求的实际输入 %d int 十进制数字序列 %ld long %f float 十进制数,可以有小数点及指数部分 %lf double

17 scanf float tax_rate; scanf (" %f" , &tax_rate); 在内存中分配一块 32 位存储空间
提示用户输入一个值 输入的值存储在变量中(因为 scanf 提供此变量的地址) 12.234

18 scanf 函数使用示例 #include <stdio.h> void main() {
double radius,high,vol; printf("请输入圆柱体底面积的半径和圆柱体的高: "); scanf("%lf%lf",&radius,&high); vol=3.14*radius*radius*high; printf("radius=%7.2f, high=%7.2f, vol=%7.2f\n", radius,high,vol); } 内存 radius high 5 10 vol 785 请输入圆柱体底面积的半径和圆柱体的高: radius= , high= , vol=

19 §4.3 字符输入/输出函数 getchar函数 putchar函数

20 接受并显示字符 字符型数据 getchar() 字符型数据 putchar() 字符型变量

21 getchar() 函数 getchar() char variablename; variablename = functionname;
语法: char variablename; variablename = functionname; 例如: char c; c=getchar(); getchar()

22 getchar()和putchar()示例
内存 #include <stdio.h> void main() { char a,b; printf(" 请输入两个字符:\n"); a=getchar(); b=getchar(); putchar(a); putchar(b); putchar('\n'); } a b O K 输出: 请输入两个字符: O K

23 § 常用的数学函数

24 § 4.5 顺序结构程序设计 在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。
§ 顺序结构程序设计 在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。 例: 输入任意三个整数,求它们的和及平均值。 main() {int num1,num2,num3,sum; float aver; printf("Please input three numbers:"); scanf("%d,%d,%d",&num1,&num2,&num3);/*输入三个整数*/ sum=num1+num2+num3; /*求累计和*/ aver=sum/3.0; /*求平均值*/ printf("num1=%d,num2=%d,num3=%d\n",num1,num2,num3); printf("sum=%d,aver=%7.2f\n",sum,aver); } [程序演示] 思考题:能否将"aver=sum/3.0;"中"3.0"改为"3"?

25 <例>求方程ax2+bx+c=0的实数根。要求a,b,c由键盘输入,a≠0且b2-4ac>0。
#include "math.h" main() { float a,b,c,disc,x1,x2; printf("enter coefficient: "); scanf("%f,%f,%f",&a,&b,&c); disc=b*b-4*a*c; x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("x1=%7.2f\nx2=%7.2f\n",x1,x2); }

26 练习 运行结果示例: please input two letter: A,B↙ the lower is a,b
输入一个华氏温度,要求输出摄氏温度。公式为c=5/8(F-32)。输出要有文字说明,取2位小数。 从键盘输入一小写字母,(1)输出对应的大写字母;(2)输出其前导字母与后续字母。 从键盘任意输入一个三位整数,编程将它逆序输出。例如输入127,输出为721。 从键盘输入x和y的值,求数学公式 的值。 从键盘输入用逗号隔开的两个大写字母,输出两个与之相应的小写字母及其ASCII码值。 运行结果示例: please input two letter: A,B↙ the lower is a,b the ascii is 97,98

27 总结 及补充 printf中出现的各种格式符 scanf的注意事项 字符型数据的输入输出

28 printf的各种格式符 (1)d格式符:用来输出十进制整数 ①%d:按整型数据的实际长度输出 ②%md:按m所指定的长度输出。
例:int a=123,b=12345; printf("a=%4d,a=%-4d,b=%4d",a,a,b); 结果:a=123,a=123,b=12345 ③%ld:输出长整型数据 %mld或%-mld :按m指定的长度输出长整型数 例:long a= ; printf("a=%ld\n",a); printf("a=%8ld",a); 结果:a= a= 

29 printf的各种格式符 (2)o格式符:以八进制形式输出整数 将整数的补码转换成八进制,输出的数值不带符号
形式:①%o②%mo或%-mo ③%lo④%mlo或%-mlo 例:int a=1,b=-1; printf("a=%d,b=%d\n",a,b); printf("a=%o,b=%o\n",a,b); printf("a=%4o,b=%4o",a,b); 结果:a=1,b=-1 a=1,b=177777 a=   1,b=177777

30 printf的各种格式符 (3)x格式符:以十六进制形式输出整数 将整数的补码转换成十六进制,输出数值不带符号
形式:①%x②%mx或%-mx ③%lx④%mlx或%-mlx (若x为大写则输出的十六进制数中的字母也为大写) 例:int a=-1; printf("%d,%o,%x,%X",a,a,a,a); 结果: -1,177777,ffff,FFFF

31 printf的各种格式符 (4)u格式符:以十进制形式输出无符号型(unsigned)整数
形式:①%u②%mu或%-mu ③%lu④%mlu或%-mlu 例:unsigned int a=65535; printf("%u,%d",a,a); 结果: 65535,-1

32 printf(“x=%d, y=%d”, x, y); }
main() { int x, y; x=32767; y = x + 1; printf(“x=%d, y=%d”, x, y); } x=32767, y=-32768

33 unsigned int a, b; a=65535; b=a + 1; printf(“b=%u\n”, b);
0 ~ 65535 1 1 unsigned int a, b; a=65535; b=a + 1; printf(“b=%u\n”, b); To understand: “ 无符号整型 ”

34 printf(“k=%d, k=%o, k=%x\n”, k,k,k); }
main() { int k=11; printf(“k=%d, k=%o, k=%x\n”, k,k,k); } A) k=11,k=12,k= B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b

35 main() { int k=011; printf(“k=%d, k=%o, k=%x\n”, k,k,k); } k=9,k=11,k=b

36 printf(“%d, %u, %o\n”, x,x,x); }
EXAMPLE: main() { int x= -1; printf(“%d, %u, %o\n”, x,x,x); } A) -1, -1, B) -1, 32767, C) -1, 32768, D) -1, 65535,

37 printf(“%d, %u, %o\n”, x,x,x); }
main() { int x=-1; printf(“%d, %u, %o\n”, x,x,x); } 原码 反码 从前面的内容中我们已经知道,补码的作用在于化减法为加法,实现类似于代数中 。。。 。。。 运算。 补码 -1 65535 177777

38 printf(“%d, %u, %o\n”, x,x,x); }
main() { int x=-1; printf(“%d, %u, %o\n”, x,x,x); } A) -1, -1, B) -1, 32767, C) -1, 32768, D) -1, 65535,

39 printf的各种格式符 (5)c格式符:输出字符型数据 在0~255范围内的整数可以用字符形式输出
字符型数据也可以用整数形式(ASCII值)输出 形式:①%c②%mc或%-mc 例:char c='a'; putchar(c); printf("%4c,%5d",c,c); 结果: aa,97

40 printf的各种格式符 (6)s格式符:输出一个字符串 形式:①%s:按字符串实际长度输出 ②%ms或%-ms:按m指定的宽度输出
③%m.ns:共占m列,取字符串左端n个字符,左补空格 %-m.ns:共占m列,取字符串左端n个字符,右补空格 ④%.ns:没指定m,m自动取n的值 例: printf("%3s,%7.2s\n","china","china"); printf("%.4s,%-5.3s\n","china","china"); 结果: china,ch chin,chi

41 (7)f格式符:以小数形式输出单、双精度实数 形式:①%f:不指定宽度,整数部分全部输出,小数部分隐含保留6位
printf的各种格式符 (7)f格式符:以小数形式输出单、双精度实数 形式:①%f:不指定宽度,整数部分全部输出,小数部分隐含保留6位 ②%m.nf:共占m列,小数部分占n列,左补空格 %-m.nf:共占m列,小数部分占n列,右补空格 (8)e格式符:以指数形式输出 形式: ①%e:不指定宽度,按规范化指数形式输出,本书保留6位小数,5位指数部分(如e+002) ②%m.ne或%-m.ne (若e为大写则输出的指数中的字母也为大写E) 例:float f= ; printf("%f,%E,%10.2e,%.2e,%-10.2f\n",f,f,f,f,f); 运行结果: , E+002,1.23e+002,1.23e+002,123.46

42 printf的各种格式符 (9)g格式符:输出实数,自动选用%f和%e格式中输出宽度较短的一种格式,不输出无意义的0 形式:①%g或%G
例: float f= ; printf("%f,%e,%g\n",f,f,f); 结果: , e+002, 10列 13列 7列

43 scanf的主意事项 1.一般格式:scanf("格式控制串",地址表列) scanf(“%d",&radius)
2.输入长整型数据或double型数据在格式字符前加l(%ld、%lo、%lx、%lf、) scanf(“%ld",&radius) 3. 如果相邻2个格式符之间,不指定数据分隔符(如逗号、冒号等),则相应的2个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入1个数据后,按回车,然后再输入下1个数据。 4. “格式字符串”中出现的普通字符(包括转义字符形式的字 符),务必原样输入。

44 scanf("%d%d",&num1,&num2);
12 35<回车> 12 <回车> 35 <回车> scanf("%d,%d",&num1,&num2); 12 ,35<回车>

45 5。使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符被输入。
例如: scanf("%c%c%c",&ch1,&ch2,&ch3); printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3); 假设输入:ABC↙ 则系统将字母'A'赋值给ch1,空格''赋值给ch2,字母'B'赋值给ch3。 结果:ch1=A,ch2=,ch3=B

46 输入数据时,遇到以下情况,系统认为该数据结束:
(a)遇到空格,或者回车键,或者Tab键。 (b)遇到输入域宽度结束。例如"%3d",只取3列。 (c)遇到非法输入。例如,在输入十进制数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。 例:scanf("%d%c%f",&a,&b,&c); 如输入:1234a123o.45

47 6。如果在%后有一个“*”号,表示跳过它所指定的列数,该
输入项在读入后不赋给任何变量 例: scanf("%2d%*3d%2d",&a,&b); printf("a=%d,b=%d",a,b); 输入:1234567 结果:a=12,b=67 7。输入数据时不能规定精度 scanf("%7.2f",&a); 


Download ppt "第四章 顺序结构程序设计."

Similar presentations


Ads by Google