版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 输入输出与简单程序设计格式化输入方法格式化输出方法字符数据的非格式化输入、输出 学习的意义 程序对数据的处理流程: 程序的主要功能就是对数据的处理,其整个流程主要包括数据的输入、数据的处理、数据的输出。数据处理数据输入数据输出C程序中如何实现数据输入?C程序中如何实现数据输出? 程序的结构: 写文章有文章的结构 建房子有房子的结构 制造机械产品由机械产品的结构 那么编写程序是否有程序的结构呢?学习的意义 程序结构顺序结构选择结构循环结构YES!本章讨论第5章讨论第6章讨论 格式化输出printf 格式化输入scanf 字符数据的非格式化输入、输出 程序的控制结构 顺序程序设计举例 本章
2、小结学习目标 掌握各种类型数据的格式化输入输出方法; 掌握字符数据的非格式化输入输出方法; 理解三种程序控制结构的流程图; 学会简单顺序程序的设计; 养成良好的程序设计习惯; 学习内容 格式化输出printf P53printf (格式控制字符串,表达式1,表达式2,表达式n); 按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在计算机屏幕上。 格式控制字符串可以包含如下三类字符: 常规字符:会原样显示在屏幕上,起注释作用。 格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。 转义字符:如n(回车换行)等,用于对输出控制。%修饰符格式转换字
3、符例: long int x = 0 x8AB6; printf (“The Value of x is %ldn”, x);常规字符转义符格式控制符(修饰符)格式控制符(格式转换符) printf使用时的注意事项(1) 格式控制字符串可以不包含任何格式控制符。(2) 当格式控制字符串中既含有常规字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:从左到右的格式控制符对应从左到右的表达式。(3) 如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将是不确定的。(4) 不同
4、类型的表达式要使用不同的格式转换符,同一表达式如果按照不同的格式转换符来输出,其结果可能是不一样的。 printf (“how are you?n”); /只有一个字符串参数, 输出为:how are you?printf (“how old are you?n”, 20); /带有两个参数,20没有意义, 输出为:how old are you?已 知: int a = 2;函数调用: printf(a * a = %d, a + 5 = %dn, a * a, a + 5);实际输出: a * a = 4, a + 5 = 7 printf (5 + 3 = %d, 5 - 3 = %d,
5、 5 * 3 = %d, 5 + 3, 5 - 3); 输出结果将是:5 + 3 = 8,5 3 = 2,5 * 3 = -28710输出随机char ch = A;printf (ch = %c, ch); /输出结果:ch = A (以字符形式输出)printf (ch = %d, ch); /输出结果:ch = 65 (以A字符的ASCII码形式输出) printf函数中的格式转换字符及其含义 格式转换符含 义对应的表达式数据类型%d 或 %i以十进制形式输出一个整型数据。例如:int a = 20;printf (%d, a); /输出20有符号整型%x,%X以十六进制形式输出一个无符
6、号整型数据。例如:int a = 164;printf (%x, a); /输出a4printf (%X, a); /输出A4无符号整型%o ( 字母o )以八进制形式输出一个无符号整型数据。例如:int a = 164;printf (%o, a); /输出244无符号整型%u以十进制形式输出一个无符号整型数据。例如:int a = -1;printf (%u, a); /BC下输出65535,VC下4294967295无符号整型%c输出一个字符型数据。例如:char ch = A;printf (%c, ch); /输出A字符型 printf函数中的格式转换字符及其含义 格式转换符含 义对
7、应的表达式数据类型%s输出一个字符串。例如:printf (my name is %s, wangjinghua); /输出my name is wangjinghua字符串%f以十进制小数形式输出一个浮点型数据。例如:float f = -12.3;printf (%f, f); /输出-12.300000浮点型%e,%E以指数形式输出一个浮点型数据。例如:float f = 1234.8998;printf (%e, f); /输出1.234900e+003printf (%E, f); /输出1.234900E+003浮点型%g,%G按照%f或%e中输出宽度比较短的一种格式输出。浮点型%
8、p以主机的格式显示指针,即变量的地址。例如:int a = 2;printf (“%p”, &a); /BC下输出FFD8, VC下 0012FF7C指针类型1. 整数的输出 有符号整数的输出 一般形式: :表示可选项,可缺省。 :表示输出的数据左对齐,缺省时是右对齐。 :输出正数时,在数的前面加上号。 数字0:右对齐时,如果实际宽度小于width,则在左边的空位补0。 width:无符号整数,表示输出整数的最小域宽(即占屏幕的多少格)。若实际宽度超过了width,则按照实际宽度输出。 .precision:无符号整数,表示至少要输出precision位。若整数的位数大于precision,则
9、按照实际位数输出,否则在左边的空位上补0。 字母l:如果在d的前面有字母l(long),表示要输出长整型数据。 字母h:如果在d的前面有字母h(short),表示要输出短整型数据。 说明:%- + 0 width .precision l h d辅助格式控制字符(修饰符) 【例】有符号整数的格式化输出 #include void main ( ) int a = 123; long L = 65537; printf ( 12345678901234567890n); printf (a=%d-(a=%d)n, a); printf (a=%6d-(a=%6d)n, a); printf (a
10、=%+6d-(a=%+6d)n, a); printf (a=%-6d-(a=%-6d)n, a); printf (a=%-06d-(a=%-06d)n, a); printf (a=%+06d-(a=%+06d)n, a); printf (a=%+6.6d-(a=%+6.6d)n, a); printf (a=%6.6d-(a=%6.6d)n, a); printf (a=%-6.5d-(a=%-6.5d)n, a); printf (a=%6.4d-(a=%6.4d)n, a); printf (L=%ld-(L=%ld)n, L); printf (L=%hd-(L=%hd)n, L
11、); 12345678901234567890a=123-(a=%d)a= 123-(a=%6d)a= +123-(a=%+6d)a=123 -(a=%-6d)a=123 -(a=%-06d)a=+00123-(a=%+06d)a=+000123-(a=%+6.6d)a=000123-(a=%6.6d)a=00123 -(a=%-6.5d)a= 0123-(a=%6.4d)L=65537-(L=%ld)L=1-(L=%hd)运行结果:L是一长整型数65537,其值为十六进制0X00010001,所以要将其转换成短整型,即取低16位0 x0001,将其输出,故输出为1。 Why?1. 整数的输出
12、 无符号整数的输出 一般形式: :表示可选项,可缺省。 | :表示互斥关系。 # :表示当以八进制形式输出数据(%o)时,在数字前输出0;当以十六进制形式输出数据(%x或%X)时,在数字前输出0 x或0X。 .precision的含义与前面介绍的相同,但要注意,在TC和BC下,precision所指定的位数也包含了0 x或0X所占的位数,可在VC下,则不包含0 x或0X所占的位数。 其它字段的含义与前面介绍的相同。 说明:%- # 0 width .precision l h u | o | x | X辅助格式控制字符(修饰符) 【例】无符号整数的格式化输出 #include void mai
13、n ( ) int a = -1; unsigned u = 32767; unsigned long L = -32768; printf (a=%d, a=%u-(a=%d, a=%u)n, a, a); printf (a=%hx, a=%X-(a=%hx, a=%X)n, a, a); printf (u=%o, u=%X-(u=%o, u=%X)n, u, u); printf (u=%#010X-(u=%#010X)n, u); printf (u=%#10.10X- (u=%#10.10X)n, u); printf (L=%lX- (L=%lX)n,L); printf (L=
14、%-#14.10X- (L=%-#14.10X)n, L); a=-1, a=65535-(a=%d, a=%u)a=ffff, a=FFFF-(a=%hx, a=%X)u=77777, u=7FFF-(u=%o, u=%X)u=0X00007FFF-(u=%#010X)u=0X00007FFF-(u=%#10.10X)L=FFFF8000-(L=%lX)L=0X00008000 -(L=%-#14.10X)运行结果(在BC3.1下):a=-1, a=4294967295-(a=%d, a=%u)a=ffff, a=FFFFFFFF-(a=%hx, a=%X)u=77777, u=7FFF-(
15、u=%o, u=%X)u=0X00007FFF-(u=%#010X)u=0X0000007FFF-(u=%#10.10X)L=FFFF8000-(L=%lX)L=0X00FFFF8000 -(L=%-#14.10X)运行结果(在VC6.0下):111111111111111111111111111111111111111111111111宽度包含0X宽度不包含0X111111110111111111111111011111110000000000000000000000001000000011111111111111110000000010000000111111111111111100000
16、000100000001111111111111111000000001000000011111111111111112. 实数的输出 一般形式: :表示可选项,可缺省。 | :表示互斥关系。 #:必须输出小数点。 .precision:规定输出实数时,小数部分的位数。 l:输出double型数据(缺省时也是输出double型数据)。 L:输出long double型数据。 其它字段的含义与前面介绍的相同。 说明:%- + # 0 width .precision l | L f | e | E | g | G辅助格式控制字符(修饰符) 【例】实数的格式化输出 #include void ma
17、in ( ) double f = 2.5e5; printf ( 12345678901234567890n); printf (f=%15f-(f=%15f)n, f); printf (f=%015f-(f=%015f)n, f); printf (f=%-15.0f-(f=%-15.0f)n, f); printf (f=%#15.0f-(f=%#15.0f)n, f); printf (f=%+15.4f-(f=%+15.4f)n, f); printf (f=%15.4E-(f=%15.4E)n, f); 12345678901234567890f= 250000.000000-(
18、f=%15f)f=00250000.000000-(f=%015f)f=250000 -(f=%-15.0f)f= 250000.-(f=%#15.0f)f= +250000.0000-(f=%+15.4f)f= 2.5000E+005-(f=%#15.4E)运行结果:3. 字符和字符串的输出 一般形式: :表示可选项,可缺省。 .precision:表示只输出字符串的前precision个字符。 其它字段的含义与前面介绍的相同。 说明: 输出字符: %- 0 width c 辅助格式控制字符(修饰符) 输出字符串: %- 0 width .precision s 辅助格式控制字符(修饰符)
19、【例】字符及字符串的格式化输出 #include void main ( ) char ch = A; printf ( 12345678901234567890n); printf (ch=%c-(ch=%c)n, ch); printf (ch=%4c-(ch=%4c)n, ch); printf (ch=%-4c-(ch=%-4c)n, ch); printf (ch=%04c-(ch=%04c)n, ch); printf (st=%s-(st=%s)n, CCNU); printf (st=%6s-(st=%6s)n, CCNU); printf (st=%06.3s-(st=%06
20、.3s)n, CCNU); 12345678901234567890ch=A-(ch=%c)ch= A-(ch=%4c)ch=A -(ch=%-4c)ch=000A-(ch=%04c)st=CCNU-(st=%s)st= CCNU-(st=%6s)st=000CCN-(st=%06.3s)运行结果:4. 辅助格式控制符(修饰符)小结 修饰符功 能例 子width输出数据域宽,数据长度width,补空格;否则按实际输出%4d:表示输出至少占4格.precision对于整数:表示至少要输出precision位,当数据长度小于precision,左边补0%6.4d:表示至少要输出4位数对于实数:指定
21、小数点后位数(四舍五入)%6.2f:表示输出2位小数对于字符串:表示只输出字符串的前precision个字符%.3s:表示输出字符串前3个字符输出数据在域内左对齐(缺省右对齐)%-16d:表示输出数据左对齐+输出有符号正数时,在其前面显示正号(+)%+d:表示输出整数的正负号0输出数值时,指定左边不使用的空格自动填0%08X:表示输出十六进制无符号整数,不足8位时左补04. 辅助格式控制符(修饰符)小结 修饰符功 能例 子#对于无符号数:在八进制和十六进制数前显示前导0,0 x或0X%#X:表示输出的十六进制前显示前导0X对于实数:必须输出小数点%#10.0f:表示输出的浮点数必须输出小数点h
22、在d、o、x、u前,指定输出为短整型数%hd:表示输出短整型数l在d、o、x、u前,指定输出为long int型%ld:表示输出长整型数在e、f、g前,指定输出精度为double型(缺省也为double)%lf:表示输出为double型数L在e、f、g前,指定输出精度为long double型%Lf:表示输出为long double型数此外,在使用printf函数时还要注意以下几点: 格式控制字符串后面表达式的个数一般要与格式控制字符串中的格式控制符的个数相等。 格式转换符中,除了X、E、G以外,其它均为小写。 表达式的实际数据类型要与格式转换符所表示的类型相符,printf函数不会进行不同数
23、据类型之间的自动转换。象整型数据不可能自动转换成浮点型数据,浮点型数据也不可能自动转换成型数数据 【例】错误的格式化输出 #include void main ( ) int a = 10, b = 100; float f = 2; printf (a = %d, b = %dn, f, b); printf (a = %f, b = %dn, a, b); printf (a = %ld, b = %dn, 120, b);a = 2.000000, b = 100a = 10.000000, b = 100a = 120, b = 100期望的运行结果:a = 0, b = 0a = 0
24、.000000, b = -192a = 6553720, b = -28770实际的运行结果(BC3.1下):a = 0, b = 1073741824a = 0.000000, b = 2012780960a = 120, b = 100实际的运行结果(VC6.0下):Why?输出float型数据f,却使用了%d, a的不正常输出会影响到下一个表达式的正常输出 输出int型数据a,却使用了%f , a的不正常输出会影响到下一个表达式的正常输出 输出int型数据120,却使用了%ld。 在BC3.1下,因为整型和长整型所占内存单元的大小不同(整型占2字节,长整型占4字节),整型不会自动转换成
25、长整型,所以不会正常输出120,同时也会影响到下一个表达式的输出。 但在VC6.0下,因为整型和长整型所占内存单元的大小相同(均占4字节),且都是整型数据,数据类型基本是相同的,所以输出的结果正确 如何修改?printf (a = %f, b = %dn, f, b);printf (a = %f, b = %dn, (float)a, b);printf (a = %ld, b = %dn, 120L, b);或printf (a = %d, b = %dn, 120, b);返回格式化输入scanf P59 一般格式scanf (“格式控制字符串”,变量1的地址,变量2的地址,变量n的地址
26、); 功能 第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、变量n中 。 int a;scanf (%d, &a); 取地址运算符(与按位“与”同符号),只能作用于变量! 格式控制符与后续参数中的变量地址的对应关系 已 知: int a , b;函数调用: scanf (%d%d, &a , &b);假设输入: 1020 变量的值: a的值是10,b的值是20 scanf函数的格式控制符 %* width l | h Type 一般形式: 说明: :表示可选项,可缺省。|表示互斥关系。 width:指定输入数据的域宽,遇空格或不可转换字符则结束。
27、Type:各种格式转换符(参照printf)。 *:抑制符,输入的数据不会赋值给相应的变量。 l:用于d、u、o、x|X前,指定输入为long型整数;用于e|E、f前,指定输入为double型实数。 h:用于d、u、o、x|X前,指定输入为short型整数。 使用scanf函数注意事项 (1) 如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。 (2) 格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。 (3) 为改善人机交互性,同时简化输入操作,在设计
28、输入操作时,一般先用printf( )函数输出一个提示信息,再用scanf( )函数进行数据输入 。 (4) 当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量,多余部分被舍弃。 例如: scanf (%d%d, &num1, &num2); 假设给num1输入12,给num2输入36,则正确的输入操作为: 1236 或者 12 36 使用“”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。例如: scanf (%d:%d:%d, &h, &m, &s); 假设给h输入12,给m输入30,给s输入10,正确
29、的输入操作为: 12:30:10 例如: scanf (num1=%d, num2=%dn, &num1, &num2); 假设给num1输入12,给num2输入36,正确的输入操作为: num1=12,num2=36n例如: 将scanf (num1=%d, num2=%dn, &num1, &num2); 改为: printf (num1=); scanf (%d, &num1); printf (num2=); scanf (%d, &num2);例如: scanf (%3c%3c, &ch1, &ch2); 假设输入abcdefg,则系统将读取的“abc”中的a赋给变量ch1;将读取的
30、def中的d赋给变量ch2。 使用scanf函数注意事项 (5) 当格式控制字符串中含有抑制符*时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。 (6) 使用格式控制符%c输入单个字符时,空格和转义字符均作为有效字符被输入。 (7) 输入数据时,遇到以下情况,系统认为该数据结束: 遇到空格,或者回车键,或者Tab键。 遇到输入域宽度结束。例如“%3d”,只取3列。 遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。 (8) 当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,
31、那么,这种非法输入将影响后面数据的输入,导致数据输入失败。例如: scanf (%2d%*2d%3d, &num1, &num2); printf (num1=%d, num2=%dn, num1, num2); 假设输入123456789 输出结果为:num1=12, num2=567。 例如: scanf (%c%c%c, &ch1, &ch2, &ch3); 假设输入:ABC,则系统将字母A赋值给ch1,空格赋值给ch2,字母B赋值给ch3。 例如: scanf (%d, a); 如果输入为:12a3,a的值将是12。例如: scanf (%d,%d, &a, &b); 如果输入为:12
32、a34,那么a的值将是12,b的值将无法预测。 正确的输入是:12,34 【例】数据的格式化输入 输入一学生的学号(8位数字)、生日(年-月-日)、性别(M:男,F:女)及三门功课(语文、数学、英语)的成绩,现要求计算该学生的总分和平均分,并将该学生的全部信息输出(包括总分、平均分)。#include void main ( ) unsigned long no; /学号 unsigned int year, month, day; /生日(年、月、日) unsigned char sex; /性别 float chinese, math, english; /语文、数学、英语成绩 float
33、 total, average; /总分、平均分 printf (input the students NO: ); scanf (%8ld, &no); printf (input the students Birthday(yyyy-mm-dd): ); scanf (%4d-%2d-%2d, &year, &month, &day); fflush (stdin); /清除键盘缓冲区 printf (input the students Sex(M/F): ); scanf (%c, &sex); printf (input the students Scores(chinese, ma
34、th, english): ); scanf (%f,%f,%f, &chinese, &math, &english); total = chinese + math + english; /计算总分 average = total / 3; /计算平均分 printf (n=NO=birthday=sex=chinese=math= english=total=averagen); printf (%08ld %4d-%02d-%02d %c %-5.1f %-5.1f %-5.1f %-5.1f %-5.1fn, no, year, month, day, sex, chinese, m
35、ath, english, total, average);假设输入 :input the students NO:20040101input the students Birthday(yyyy-mm-dd):1987-9-8input the students Sex(M/F):Minput the students Scores(chinese, math, english):90,80,90输出结果 :=NO=birthday=sex=chinese=math=english=total=average20040101 1987-09-08 M 90.0 80.0 90.0 260.0
36、 86.7字符数据的非格式化输入、输出 P501. 字符数据的非格式化输入int getchar ( void ); /应包含的.h文件为stdio.h 与输入字符数据有关的常用库函数主要有: getchar、getche、getch等。 getchar 功能:从键盘读一字符 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:以回车符为输入结束条件;输入多个字符时,返回第一个字符的值;输入字符回显。【例】利用getchar输入字符 #include #include void main ( ) char ch1, ch2; int a; ch1 = getchar (
37、 ); ch2 = getchar ( ); scanf (%d, &a); printf (ch1 = %c, ch2 = %cn, ch1, ch2); printf (a = %dn, a);ch1 = 1, ch2 = 2a = 34运行结果(假设输入为:1234): int getche ( void ); /应包含的.h文件为conio.h getche 功能:与getchar的功能基本相同 。 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:直接从键盘获取键值,不等待用户按回车键;输入字符回显。 getch int getch ( void ); /应
38、包含的.h文件为conio.h 功能:与getche的功能基本相同 。 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:直接从键盘获取键值,不等待用户按回车键;输入字符不回显。 【例】getch与getche的差异 #include #include void main ( ) char ch1, ch2; printf (please press two keyn); ch1 = getche ( ); /回显 ch2 = getch ( ); /不回显 printf (nyouve pressed %c and %cn, ch1, ch2);please pre
39、ss two keyayouve pressed a and b运行结果(假设依此按下a键和b键): 库函数名功 能函数原型所在头文件getchar接受一字符输入,以回车键结束,回显stdio.hgetche接受一字符输入,输入字符后就结束,回显conio.hgetch接受一字符输入,输入字符后就结束,不回显conio.h与输入字符数据有关的库函数功能比较: 2. 字符数据的非格式化输出int putchar ( int c ); /应包含的.h文件为stdio.h 与输出字符数据有关的常用库函数主要有: putchar、puts等。 putchar 功能:在显示器上输出字符c。 返值:正常,
40、返回字符的代码值;出错,返回EOF(-1)。 说明:该函数带有一个参数c,它为要显示字符的ASCII码值,有一个int型返回值 。 putsint puts ( char *string ); /应包含的.h文件为stdio.h 功能:将字符串string的所有字符输出到屏幕上,输出时将自动回车换行。 【例】利用字符输出函数输出字符 #include void main ( ) int a = 65; char b = B; putchar (a); /不自动回车 putchar (n); puts (“is as good as ”); /自动回车 putc (b, stdout); Ais
41、 as good asB运行结果: 返回4.4 程序的控制结构 1. 算法的基本概念 程序 = 数据结构 + 算法。 算法:简而言之,就是解决问题的方法与步骤。 程序设计语言:是程序开发工具,即是将算法转化为程序的开发工具。 程序:算法的具体实现。 学习C语言,不仅要熟练掌握其语言本身的特点、语法规则等意外,更重要的就是掌握分析问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。 2. 设计算法举例 【例1】输入三个数,然后输出其中最大的数 。 总体思路: 首先,得先有个地方装这三个数,我们定义三个变量A、B、C,将三个数依次输入到、B、C中,另外,再准备一个MAX装最大数。
42、由于计算机一次只能比较两个数,我们首先把A与B比,大的数放入MAX中,再把MAX与C比,又把大的数放入MAX中。 最后,把MAX输出,此时MAX中装的就是、C三数中最大的一个数。 具体步骤: (1) 输入A、B、C。 (2) A与B中大的一个放入MAX中。 (3) 把C与MAX中大的一个放入MAX中。 (4) 输出MAX,MAX即为最大数。 其中的(2)、(3)两步仍不明确,无法直接转化为程序语句,可以继续细化: (2) 把A与B中大的一个放入MAX中,若A B,则MAX A;否则MAX B。 (3) 把C与MAX中大的一个放入MAX中,若C MAX,则MAX C。 算法最后可以写成: (1)
43、 输入A,B,C。 (2) 若A B,则MAX A;否则MAXB。 (3) 若C MAX,则MAX C。 (4) 输出MAX,MAX即为最大数 2. 设计算法举例 【例2】猴子吃桃问题:有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? 总体思路: 假设第一天开始时有a1只桃子,第二天有a2只,第9天有a9只,第10天是a10只,在a1,a2,,a10中,只有a10 = 1是知道的,现要求a1,而我们可以看出,a1,a2,,a10之间存在一个简单的关系: a9 =
44、 2 * ( a10 + 1 ) a8 = 2 * ( a9 + 1 ) a1 = 2 * ( a2 + 1 ) 也就是:ai = 2 * ( ai+1 + 1) i = 9,8,7,6,1 这就是此题的数学模型。 再考察上面从a9,a8直至a1的计算过程,这其实是一个递推过程,这种递推的方法在计算机解题中经常用到。另一方面,这九步运算从形式上完全一样,不同的只是ai的下标而已。由此,我们引入循环的处理方法,并统一用a0表示前一天的桃子数,a1表示后一天的桃子数。 算法最后可以写成: (1) a1 = 1 第10天的桃子数,a1的初值 i = 9 计数器初值为9 (2) a0 = 2 * (
45、a1+ 1 ) 计算当天的桃子数 (3) a1 = a0 将当天的桃子数作为下一次计算的初值 (4) i = i - 1 (5) 若i = 1,转(2) (6) 输出a0的值 其中(2) (5)步为循环 3. 流程图与算法的结构化描述 流程图起止框判断框输入、输出框注释框处理框连接点流程线_常见流程图符号【例2】的算法的流程图开 始i = 9a1 = 1i 1i = i - 1a0 = 2*(a1+1)a1 = a0输出a0结 束T【例1】的算法的流程图MAX AMAX BA B输入A, B, C开 始MAX C输出MAX结 束C MAXTTFF4.5 顺序程序设计举例 【例1】任意从键盘输入
46、一个三位整数,要求正确地分离出它的个位、十位和百位数,并分别在屏幕上输出。 程序设计的分析: 本例要求设计一个从三位整数中分离出它的个位、十位和百位数的算法。例如,输入的是456,则输出的分别是4、5、6,最低位数字可用对10求余的方法得到,如456%10=6,最高位的百位数字可用对100整除的方法得到,如456/10=4,中间位的数字既可通过将其变换为最高位后再整除的方法得到,如(456-4*100)/10=5,也可通过将其变换为最低位再求余的方法得到,如(456/10)%10=5。 根据以上的分析,这个程序应这样设计: (1) 定义一个整型变量x,用于存放用户输入的一个三位整数;再定义三个
47、整型变量b0、b1、b2,用于存放计算后个位、十位和百位数。 (2) 调用scanf函数输入该三位整数。 (3) 利用上述计算方法计算该数的个位、十位和百位数。 (4) 输出计算后的结果。#include void main ( ) int x, b0, b1, b2; /变量定义 printf (please input an integer x: ); /提示用户输入一个整数 scanf (%d, &x); /输入一个整数 b2 = x / 100; /用整除方法计算最高位 b1 = (x - b2 * 100) / 10; /计算中间位 b0 = x % 10; /用求余数法计算最低位 printf (bit2 = %d, bit1 = %d, bit0 = %dn, b2, b1, b0); /输出结果 具体程序如下:please input an integer x: 456bit2 = 4, bit1 = 5, bit0 = 6 运行结果: 4.5 顺序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年四川省成都市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2023年甘肃省酒泉市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024年湖北省孝感市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2022年青海省西宁市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2024年广东省韶关市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 颁奖晚会发言稿
- 个人借条范本整合
- 霸气押韵的班级口号
- 湖北省省直辖行政单位(2024年-2025年小学六年级语文)部编版质量测试(下学期)试卷及答案
- 广东省阳江市(2024年-2025年小学六年级语文)部编版阶段练习(上学期)试卷及答案
- 人教版小学数学五年级上册七单元《数学广角-植树问题》单元集体备课整体设计
- 中国超重肥胖医学营养治疗指南
- 严重精神障碍患者家属护理教育
- 汽车4S店市场部工作计划
- 现代营销学原理课件
- 德语语言学导论智慧树知到期末考试答案2024年
- 拒绝早恋主题班会 课件(34张)2023-2024学年主题班会
- 离婚协议书完整版Word模板下载
- 招标代理机构内部监督管理制度
- 初中周末安全教育课件
- 2024年度医院骨肌肉康复科医务人员述职报告课件
评论
0/150
提交评论