版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 基本输入、输出和顺序程序设计学习的意义 程序对数据的处理流程: 程序的主要功能就是对数据的处理,其整个流程主要包括数据的输入、数据的处理、数据的输出。数据处理数据输入数据输出C程序中如何实现数据输入?C程序中如何实现数据输出? 程序的结构: 写文章有文章的结构 建房子有房子的结构 制造机械产品由机械产品的结构 那么编写程序是否有程序的结构呢?学习的意义 程序结构顺序结构选择结构循环结构YES!本章讨论第5章讨论第6章讨论 格式化输出printf 格式化输入scanf 字符数据的非格式化输入、输出 程序的控制结构 顺序程序设计举例 本章小结学习目标 掌握各种类型数据的格式化输入输出方法;
2、 掌握字符数据的非格式化输入输出方法; 理解三种程序控制结构的流程图; 学会简单顺序程序的设计; 养成良好的程序设计习惯;学习内容 4.1 格式化输出printf 一般格式printf (格式控制字符串,表达式1,表达式2,表达式n); 功能 按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在计算机屏幕上。 说明 格式控制字符串用于指定输出格式。它包含两类字符: 常规字符:包括可显示字符和用转义字符表示的字符。 格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:%修饰符格式转换字符例: long int x = 0 x8AB6;
3、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 * 3 = %d, 5 + 3,
5、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以十六进制形式输出一个无符号整型数据。例如:int a = 164
6、;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函数中的格式转换字符及其含义 格式转换符含 义对应的表达式数据类型%s输出一个字符串。例
7、如: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中输出宽度比较短的一种格式输出。浮点型%p以主机的格式显示指针,即变量的地址。例
8、如:int a = 2;printf (“%p”, &a); /BC下输出FFD8, VC下 0012FF7C指针类型1. 整数的输出 有符号整数的输出 一般形式: :表示可选项,可缺省。 :表示输出的数据左对齐,缺省时是右对齐。 :输出正数时,在数的前面加上号。 数字0:右对齐时,如果实际宽度小于width,则在左边的空位补0。 width:无符号整数,表示输出整数的最小域宽(即占屏幕的多少格)。若实际宽度超过了width,则按照实际宽度输出。 .precision:无符号整数,表示至少要输出precision位。若整数的位数大于precision,则按照实际位数输出,否则在左边的空位上补0
9、。 字母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=%+6d-(a=%+6d)n, a);
10、 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); 12345678901234567
11、890a=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辅助格式控制字符(修饰符) 2. 实数的输出 一般形式: :表示可选项,可缺省。 | :表示互斥关系。 #:必须输出小数点。 .pr
13、ecision:规定输出实数时,小数部分的位数。 l:输出double型数据(缺省时也是输出double型数据)。 L:输出long double型数据。 其它字段的含义与前面介绍的相同。 说明:%- + # 0 width .precision l | L f | e | E | g | G辅助格式控制字符(修饰符) 【例】实数的格式化输出 #include void main ( ) double f = 2.5e5; printf ( 12345678901234567890n); printf (f=%15f-(f=%15f)n, f); printf (f=%015f-(f=%015
14、f)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-(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.50
15、00E+005-(f=%#15.4E)运行结果:3. 字符和字符串的输出 一般形式: :表示可选项,可缺省。 .precision:表示只输出字符串的前precision个字符。 其它字段的含义与前面介绍的相同。 说明: 输出字符: %- 0 width c 辅助格式控制字符(修饰符) 输出字符串: %- 0 width .precision s 辅助格式控制字符(修饰符) 【例】字符及字符串的格式化输出 #include void main ( ) char ch = A; printf ( 12345678901234567890n); printf (ch=%c-(ch=%c)n, ch
16、); 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.3s)n, CCNU); 12345678901234567890ch=A-(ch=%c)ch= A-(ch=%4c)ch=A -(ch=%-4c)ch=000A-(ch=%04c)st=CCNU-(st=%s)st=
17、CCNU-(st=%6s)st=000CCN-(st=%06.3s)运行结果:4. 辅助格式控制符(修饰符)小结 修饰符功 能例 子width输出数据域宽,数据长度width,补空格;否则按实际输出%4d:表示输出至少占4格.precision对于整数:表示至少要输出precision位,当数据长度小于precision,左边补0%6.4d:表示至少要输出4位数对于实数:指定小数点后位数(四舍五入)%6.2f:表示输出2位小数对于字符串:表示只输出字符串的前precision个字符%.3s:表示输出字符串前3个字符输出数据在域内左对齐(缺省右对齐)%-16d:表示输出数据左对齐+输出有符号正数
18、时,在其前面显示正号(+)%+d:表示输出整数的正负号0输出数值时,指定左边不使用的空格自动填0%08X:表示输出十六进制无符号整数,不足8位时左补04. 辅助格式控制符(修饰符)小结 修饰符功 能例 子#对于无符号数:在八进制和十六进制数前显示前导0,0 x或0X%#X:表示输出的十六进制前显示前导0X对于实数:必须输出小数点%#10.0f:表示输出的浮点数必须输出小数点h在d、o、x、u前,指定输出为短整型数%hd:表示输出短整型数l在d、o、x、u前,指定输出为long int型%ld:表示输出长整型数在e、f、g前,指定输出精度为double型(缺省也为double)%lf:表示输出为
19、double型数L在e、f、g前,指定输出精度为long double型%Lf:表示输出为long double型数此外,在使用printf函数时还要注意以下几点: 格式控制字符串后面表达式的个数一般要与格式控制字符串中的格式控制符的个数相等。 格式转换符中,除了X、E、G以外,其它均为小写。 表达式的实际数据类型要与格式转换符所表示的类型相符,printf函数不会进行不同数据类型之间的自动转换。象整型数据不可能自动转换成浮点型数据,浮点型数据也不可能自动转换成型数数据 【例】错误的格式化输出 #include void main ( ) int a = 10, b = 100; float
20、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.000000, b = -192a = 6553720, b = -28770实际的运行结果(BC3.1下):a = 0, b = 1073741824a = 0.000000, b = 2012780960a = 12
21、0, b = 100实际的运行结果(VC6.0下):Why?输出float型数据f,却使用了%d, a的不正常输出会影响到下一个表达式的正常输出 输出int型数据a,却使用了%f , a的不正常输出会影响到下一个表达式的正常输出 输出int型数据120,却使用了%ld。 在BC3.1下,因为整型和长整型所占内存单元的大小不同(整型占2字节,长整型占4字节),整型不会自动转换成长整型,所以不会正常输出120,同时也会影响到下一个表达式的输出。 但在VC6.0下,因为整型和长整型所占内存单元的大小相同(均占4字节),且都是整型数据,数据类型基本是相同的,所以输出的结果正确 如何修改?printf
22、(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);4.2 格式化输入scanf 一般格式scanf (“格式控制字符串”,变量1的地址,变量2的地址,变量n的地址); 功能 第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、变量n中 。 int a;scanf (%d, &a); 取地址运算符(与按位“与”同符号),只能作用于变量! 格式控制
23、符与后续参数中的变量地址的对应关系 已 知: int a , b;函数调用: scanf (%d%d, &a , &b);假设输入: 1020 变量的值: a的值是10,b的值是20 scanf函数的格式控制符 %* width l | h Type 一般形式: 说明: :表示可选项,可缺省。|表示互斥关系。 width:指定输入数据的域宽,遇空格或不可转换字符则结束。 Type:各种格式转换符(参照printf)。 *:抑制符,输入的数据不会赋值给相应的变量。 l:用于d、u、o、x|X前,指定输入为long型整数;用于e|E、f前,指定输入为double型实数。 h:用于d、u、o、x|X
24、前,指定输入为short型整数。 使用scanf函数注意事项 (1) 如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。 (2) 格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。 (3) 为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf( )函数输出一个提示信息,再用scanf( )函数进行数据输入 。 (4) 当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量
25、,多余部分被舍弃。 例如: 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,正确的输入操作为: 12:30:10 例如: scanf (num1=%d, num2=%dn, &num1, &num2); 假设给num1输入12,给num2输入36,正确的输入操作为: num1=12,num2=36n例如:
26、 将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;将读取的def中的d赋给变量ch2。 使用scanf函数注意事项 (5) 当格式控制字符串中含有抑制符*时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。 (6) 使用格式控制符%c输入单个字符时,空
27、格和转义字符均作为有效字符被输入。 (7) 输入数据时,遇到以下情况,系统认为该数据结束: 遇到空格,或者回车键,或者Tab键。 遇到输入域宽度结束。例如“%3d”,只取3列。 遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。 (8) 当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。例如: scanf (%2d%*2d%3d, &num1, &num2); printf (num1=%d, num2=%dn, num1, num2); 假设输入12
28、3456789 输出结果为: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); 如果输入为:12a34,那么a的值将是12,b的值将无法预测。 正确的输入是:12,34 【例】数据的格式化输入 输入一学生的学号(8位数字)、生日(年-月-日)、性别(M:男,F:女)及三门功课(语文、数学、英语)的成绩,现要求计算该学生的
29、总分和平均分,并将该学生的全部信息输出(包括总分、平均分)。#include void main ( ) unsigned long no; /学号 unsigned int year, month, day; /生日(年、月、日) unsigned char sex; /性别 float chinese, math, english; /语文、数学、英语成绩 float total, average; /总分、平均分 printf (input the students NO: ); scanf (%8ld, &no); printf (input the students Birthday
30、(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, math, english): ); scanf (%f,%f,%f, &chinese, &math, &english); total = chinese + math + english; /计算总分 average = t
31、otal / 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, math, english, total, average);假设输入 :input the students NO:20040101input the students Birthday(yyyy-mm-dd):1987-9-
32、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 86.74.3 字符数据的非格式化输入、输出 1. 字符数据的非格式化输入int getchar ( void ); /应包含的.h文件为stdio.h 与输入字符数据有关的常用库函数主要有: getchar、getc、ge
33、tche、getch等。 getchar 功能:从键盘读一字符 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:以回车符为输入结束条件;输入多个字符时,返回第一个字符的值;输入字符回显。【例】利用getchar输入字符 #include #include void main ( ) char ch1, ch2; int a; ch1 = getchar ( ); ch2 = getchar ( ); scanf (%d, &a); printf (ch1 = %c, ch2 = %cn, ch1, ch2); printf (a = %dn, a);ch1 = 1,
34、 ch2 = 2a = 34运行结果(假设输入为:1234): int getc ( FILE *stream ); /应包含的.h文件为stdio.h getc 功能:从流文件stream中读取一个字符信息,它的返回值是所读取字符的ASCII码。 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:该函数带有一个参数stream,它是一文件指针(第12章介绍),表示流文件,当流文件是stdin时,getc函数的功能与getchar函数的功能完全相同。也就是说,getc(stdin)与getchar( )是等价的。int getche ( void ); /应包含的.h
35、文件为conio.h getche 功能:与getchar的功能基本相同 。 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:直接从键盘获取键值,不等待用户按回车键;输入字符回显。 getch int getch ( void ); /应包含的.h文件为conio.h 功能:与getche的功能基本相同 。 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。 说明:直接从键盘获取键值,不等待用户按回车键;输入字符不回显。 【例】getch与getche的差异 #include #include void main ( ) char ch1, ch2
36、; printf (please press two keyn); ch1 = getche ( ); /回显 ch2 = getch ( ); /不回显 printf (nyouve pressed %c and %cn, ch1, ch2);please press two keyayouve pressed a and b运行结果(假设依次按下a键和b键): 库函数名功 能函数原型所在头文件getchar接受一字符输入,以回车键结束,回显stdio.hgetc从输入流中接受一字符,以回车键结束,回显stdio.hgetche接受一字符输入,输入字符后就结束,回显conio.hgetch接
37、受一字符输入,输入字符后就结束,不回显conio.h与输入字符数据有关的库函数功能比较: 2. 字符数据的非格式化输出int putchar ( int c ); /应包含的.h文件为stdio.h 与输出字符数据有关的常用库函数主要有: putchar、putc、puts等。 putchar 功能:在显示器上输出字符c。 返值:正常,返回字符的代码值;出错,返回EOF(-1)。 说明:该函数带有一个参数c,它为要显示字符的ASCII码值,有一个int型返回值 。 putc int putc ( int c, FILE *stream ); /应包含的.h文件为stdio.h 功能:将字符c输
38、出到流文件stream。如果流文件为stdout,则功能与putchar完全相同,所以putc(c, stdout)等价于putchar(c) 返值:正常,返回字符的代码值;出错,返回EOF(-1)。 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
39、 as ”); /自动回车 putc (b, stdout); Ais as good asB运行结果: 4.4 程序的控制结构 1. 算法的基本概念 程序 = 数据结构 + 算法。 算法:简而言之,就是解决问题的方法与步骤。 程序设计语言:是程序开发工具,即是将算法转化为程序的开发工具。 程序:算法的具体实现。 学习C语言,不仅要熟练掌握其语言本身的特点、语法规则等意外,更重要的就是掌握分析问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。 2.算法设计举例 【例1】输入三个数,然后输出其中最大的数 。 总体思路: 首先,得先有个地方装这三个数,我们定义三个变量A、B、C,
40、将三个数依次输入到、B、C中,另外,再准备一个MAX装最大数。 由于计算机一次只能比较两个数,我们首先把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中大的一个放入M
41、AX中,若C MAX,则MAX C。 算法最后可以写成: (1) 输入A,B,C。 (2) 若A B,则MAX A;否则MAXB。 (3) 若C MAX,则MAX C。 (4) 输出MAX,MAX即为最大数 3. 算法的描述方法 自然语言描述如前面表示的那样,自然语言就是人们日常使用的语言,可以是汉语、英语,或其他语言。优点:用自然语言表示通俗易懂;缺点:(1) 文字冗长,容易出现歧义性。自然语言表示的含义往往不太严格,要根据上下文才能判断其正确含义。假如有这样一句话:“张先生对李先生说他的孩子考上了大学”。请问是张先生的孩子考上了大学还是李先生的孩子考上了大学呢?光从这句话本身难以判断。(2
42、) 用自然语言来描述包含分支和循环的算法,不很方便。因此,除了那些很简单的问题以外,一般不用自然语言描述算法。 3. 算法的描述方法 流程图流程图是一种传统的算法表示法,利用几何图形的框来代表各种不同性质的操作,用流程线来指示算法的执行方向。由于其简单直观,所以应用广泛,特别是在早期语言设计阶段,只有通过流程图才能简明地表述算法,流程图成为程序员们交流的重要手段,直到结构化的程序设计语言出现,对流程图的依赖才有所降低 起止框判断框输入、输出框注释框处理框连接点流程线_常见流程图符号【例2】的算法的流程图开 始i = 9a1 = 1i 1i = i - 1a0 = 2*(a1+1)a1 = a0
43、输出a0结 束T【例1】的算法的流程图MAX AMAX BA B输入A, B, C开 始MAX C输出MAX结 束C MAXTTFF3. 算法的描述方法 伪码描述伪码是指介于自然语言和计算机语言之间的一种代码,是帮助程序员制定算法的智能化语言,它不能在计算机上运行,但是使用起来比较灵活,无固定格式规范,只要写出来自己或别人能看懂即可,由于它与计算机语言比较接近,因此易于转换为计算机程序。用伪码描述【例1】的算法 input A, B, C if A B then MAX = A else MAX = B if C MAX then MAX = C print MAX 用伪码描述【例2】的算法
44、i = 9 a1 = 1 LOOP: while i 1 a0 = 2 * (a1 + 1) a1 = a0 i = i1 goto LOOP print a0 4. 算法的基本结构 (1) 顺序结构ABCA条件ABTF(2) 分支结构条件TF(3) 循环结构ATF条件A条件TF4.5 顺序程序设计举例 【例1】任意从键盘输入一个三位整数,要求正确地分离出它的个位、十位和百位数,并分别在屏幕上输出。 程序设计的分析: 本例要求设计一个从三位整数中分离出它的个位、十位和百位数的算法。例如,输入的是456,则输出的分别是4、5、6,最低位数字可用对10求余的方法得到,如456%10=6,最高位的百
45、位数字可用对100整除的方法得到,如456/10=4,中间位的数字既可通过将其变换为最高位后再整除的方法得到,如(456-4*100)/10=5,也可通过将其变换为最低位再求余的方法得到,如(456/10)%10=5。 根据以上的分析,这个程序应这样设计: (1) 定义一个整型变量x,用于存放用户输入的一个三位整数;再定义三个整型变量b0、b1、b2,用于存放计算后个位、十位和百位数。 (2) 调用scanf函数输入该三位整数。 (3) 利用上述计算方法计算该数的个位、十位和百位数。 (4) 输出计算后的结果。#include void main ( ) int x, b0, b1, b2;
46、/变量定义 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 顺序程序设计举例 【例2】小写字母转盘(如下图所示)。 这个程序要求用户输入一个小写字母字符,求出该字母字符的前驱和后继字符,例如,c字符的前驱和后继分别是b和d,a字符的前驱和后继分别是z和b,z字符的前驱和后继分别是y和a。 abcdefzyx. 程序设计的分析: 求一个字母的前驱字母
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 登幽州台歌课件
- 《综合布线各子系统安装与调试 》理论习题二
- 殡仪馆新建(迁建)项目建议书
- (部编版八年级《政治》课件)第1课时-网络改变世界
- 《人体寄生虫学蚊》课件
- 知识产权战略规划与实施案例
- 社区服务服务器租赁合同
- 企业食堂管理总经理聘用书
- 大学学院院长聘用合同协议
- 医院装饰石膏线条施工协议
- 【世界睡眠日】3.21主题班会(3月21日)良好睡眠健康作息-课件
- 就医陪诊服务计划书
- 酒店办公室主任岗位职责
- 口腔缺牙修复科普知识讲座
- 人教鄂教版(2023秋)小学科学-四年级上册-期末试题(含答案)
- 内外部环境因素分析表
- 110~750KV架空输电线路施工及验收规范
- 平面设计收费价格表
- 兰州大学2009-2010学年度第一学期《分析化学》期末考试试卷(B)(含答案)
- 植物新品种权申请代理机构
- 科技成果转化与应用推广
评论
0/150
提交评论