第三章顺序程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2.1 字符数据的输入输出
字符输出函数putchar
语法:putchar(字符常量或字符变量); 功能:将括号内的字符常量或字符变量的值显示在屏幕上。
如:
#include <stdio.h>
main( )
c
{ char c;
c=‘A’; putchar(‘c’);
A
putchar(‘\n’); putchar(c);}
{ char使c用; 时,一般用一个字ma符in变( )量接收getchar( )获得
c=g的etc字ha符r(。);
{
putchar(c);
putchar(getchar( ));
}
}
3.2.2 格式化输入与输出
格式化输出函数printf
例句如::若已知功整型能变:量向a的显值为示6屏5,输整出型变数量据b的。值为97,程序中有输出语
算法描述(算法3.1) (1)将A杯子中的酒倒入C中 (2)将B杯子中的醋倒入A中 (3)将C杯子中的酒倒入B中
例2:依次将20个数输入,要求将其中最大的数输出。 分析:我们可以定义20个变量a1,a2,a3,a4,…,a20, 分别用于存储这20个将要被输入的数,再定义一个变量max, 用于存储最大值,然后对这20个变量的值进行比较,求出最 大值输出。
若输入语句为printf(“%c%c%c”,&a,&b,&c); 又希望 用户输入后a,b,c变量的值分别是‘a’、’A’、’d’, 正确的输入格式应是什么?
3.3 顺序结构程序设计举例
例1:输入一个华氏温度,要求输出对应的 摄氏温度(保留两位小数),转换公式为 c=5/9(f-32)。
分析问题,找出求解问题的方法和步骤(简称 问题求解的算法)。
若输入语句格式控制为“%d%d”,那么在输入两个 整数时,在数据之间以一个或多个空格间隔,也可 以用回车键、tab键间隔。
若输入语句格式控制为“%d,%d”,那么在输入两个 整数时,在数据之间必须以“,”间隔。
若输入语句格式控制为“a=%d,#%d”,那么在输入 时,应首先输入:a=,再输入一个整数,接着输 入,#,然后输入下一个整数。
printf(语“a法=例:%如pd:ri,n%ptfr(icn格\tnf式(x“%=控%d制,%d,\d输n”,”x出,,ya表);,列b);, a+b);
说明:
输出结果为( 格式控制部分是)用。双引号括起来的字符串,用 于描述输出时的格式要求,其中包含两种信息
a=65,a x=162
(1)普通字符和转义字符常量,普通字符原样 输出,转义字符按所表示的字符含义输出;
算法描述(算法3.2.1) (1)从键盘输入20个数,分别送入a1~a20中存放 (2)将a1和a2进行比较,取得较大值,放在max中 (3)将max与a3进行比较,取得他们的较大值,再放入max中,
此时,max里存放的是前三个数a1,a2,a3的最大值。 (4)将max与a4进行比较,取得他们的较大值,放入max中,
此时,max里存放的是前四个数的最大值 (5)将max与a5进行比较,……
……
(20)将max与a20进行比较,取得较大值放入max中。 (21)输出max.
利用一组数,检验算法的正确性。
如:2 23 45 43 32 56 54 32 34 6
通过上组数据的检验,说明了算法的可行性,但这个算法描述 起来过于麻烦,共分为了21个步骤,并且,使用了21个变量, 使得以后的程序书写很麻烦,也在一定程度上存在存储空间和 运行时间的浪费。
流程图符号
利用传统流程图表示算法3.1,3.2.1和算法3.2.2
注意:算法只是说明完成一项工作的步骤,只 有将算法中的每个步骤用C语言的语句描述出 来,才是程序。
3.1 C语言的基本语句
一个实际的C程序是一系列语句的集合,每一条语句都用来完成 一定的操作任务,C程序的每一条语句都要有分号结束,但变量 声明部分不算严格意义上的C语句。
(2)格式说明:如%d,%c等形式的字符串, 指定输出表列中相应的变量或表达式的值的输 出形式。
输出表列其实就是输出内容,可以是变量、常量或 者例是如表:达式。当有多个对象需要输出时,用“,”间 隔。
注意ma:in一( )个正确的输出语句要求输出列表中的输出
对象{ i和nt格a,式b;控制中的格式说明符一一对应(即数目 相同且类型一致)。 当然c,lrspcrri(nt)f;函/*数清也屏可*/以用于输出一个字符串常量; 如:a=123,b=12345;
(4)将max和a进行比较,较大值放入max中,转到(2)
(5)输出max
也可以用较少的数据验证算法3.2.2的可行性
算法的特性:
有穷性 确定性 零个和多个输入 一个和多个输出 可行性
算法的表示
用自然语言描述,如算法3.1,3.2.1,3.2.2等
用流程图表示(P7)
C程序三种基本结构:顺序结构、选择结构、循环结构 (算法3.1只用到顺序结构形式,3.2.1同时用到顺序结构 和选择结构形式,算法3.2.2中3种基本结构都有涉及到)
预备知识(P5)
算法:描述某一问题求解的有限步骤。
也可以表述如下:算法是为解决一个问题采取的 方法和步骤。
简单的算法举例:
例1:设有两个杯子A和B,分别盛放了酒和醋,要求将 两个杯子的内容互换。
分析:直接交换A、B杯子的内容会使得酒和醋掺 在一起,显然不符合要求。在这儿,我们应首先 拿来一个空杯子C,利用它来帮助完成工作。
{float f=123.375;
printf(“%f,%10f,%10.2f\n”,f,f,f);
printf(“%.2f,%-10.2f\n”,f,f);
}
注意:整型数据不能以%f形式输入或输出,同样,实 型数据也不能用%d格式输入输出。
格式化输入函数scanf
用于在程序运行时,由用户自行输入数值送入相应 变量保存。
main( ) { int a,b;
严格说来,应不称为语句。
a=2; b=++a; printf(“%d,%d\n”,a,b);}
C语句分为以下几类: (1)控制语句 (2)函数调用语句 (3)表达式语句 (4)空语句 (5)复合语句
3.2 数据输入与输出
数据的“输入”和“输出”是相对于计算机主机而言的。 C语言本身不提供输入输出语句,输入输出操作是通过
%c、%mc、%-mc 以字符形式输出。 例:main( ) { char c=‘\101’; printf(“%c\n”,c);printf(“%d\n”,c); printf(“%3c\n”,c);}
%f 以小数形式输出实型(包括单、双精度)数 据值
(1)%f 不指定输出宽度,由系统自动指定,使整数 部分全部如数输出,并输出6位小数。 例: main( )
printf(“%ld\n”,l); printf(“%d\n”,l); }
main( ) { long l=32000;
printf(“%ld,%-3ld\n”,l,l); printf(“%8ld,%-8ld,%d\n”,l,l,l); } 注意:基本整型数据用%ld格式输出,也会出错。 如: main( ) {
调用库函数来实现的,例如:printf和scanf就是c语言中 用于实现数据输入、输出的库函数之一。 因为c语言的输入输出库函数都位于一个名为stdio.h的 头文件中,所以,每一个c语言程序的开始都要用下面 的编译预处理命令将该头文件包括到用户编辑的文件中 去。 #include “stdio.h” 或 #include <stdio.h>
}
说明:
c语言程序执行时,首先会找到main函数,然后按顺 序执行main函数内部的每条语句,当遇到scanf语句 时,程序会暂停,等待用户输入数据后按回车,才继 续向下运行,运行到main函数的最后一条语句后, 运行结束,可以看结果了。
用户输入时应按格式控制部分要求的格式输入,否则 会出错。
(3)%-md m是正整数,指明数据输出所占列数, 若数据位数小于m,则右端补空格,若数据实际位 数大于m,则按实际位数输出。
main( ) { int a,b; a=123,b=12345;
printf(“%-2d,%-10d,%d\n”,a,b,b); }
(4)%ld 用于输出长整型数据。也可使用%mld、 %-mld形式。 main( ) { long l=65536;
eg2:main( ) { int a=012,b=0x34; printf(“%x,%x,%d”,a,b,b);}
%u 一般用于输出无符号整数,但一个有符号 整数也可以用%u格式输出,同样,一个无符号 整数也可以用%d格式输出。 例:main( ) { unsigned u=65535; int a=-1; printf(“%u,%u\n”,u,a); printf(“%d,%d\n”,u,a);}
该问题的求解步骤很简单,首先要从键盘输入一个华 氏温度,存储在一个变量里,供以后做华氏温度向摄 氏温度的转换用;接着,使用转换公式,将转换后的 摄氏温度值保存在另一变量中,等待输出;然后输出 该摄氏温度值。
字符输入函数getchar
语法:getchar( ); 注意:( )内为空
例: 功能:要求用户在程序执行时从键盘上输入一个字 #includ符e <,s输tdi入o.的h>字符先放在例缓:冲区中,等待用户按回车
main( )键入确的认字,符用 ,户同敲时入将回输车入#in键的cl后字ud,符e 该显<s函示td数在io.才屏h>真幕正上获。得输
语法:scanf(格式控制,地址表列); 说明:格式控制含义与printf中的相同,地址表列 一般是由若干个变量的地址组成的。 例:用scanf函数输入数据,并用printf函数输出。 main( )
{ int a,b; float f,d; scanf(“%d%d”,&a,&b); scanf(“%f,%f”,&f,&d); printf(“%d##%d##%f##%f\n”,a,b,f,d);
将上述算法进行简化(算法3.2.2)
首先定义变量a,用于接收每次输入的数;再定义变量x, 用于控制输入的次数,定义变量max,存放最大值
(1)从键盘输入一个数,送入a中,因为已经输入了一次, 设置x的值为1,并将a的值赋给max
(2)再输入一个数,送入a中,x增1
(3)判断x的值是否小于等于20,如果是,转到(4),否 则,转到(5)
{ float f1=3.54,f2=3.54678892;
printf(“%f,%f\n”,f1,f2); }
注:double类型的数据用%lf格式输出,也可以用 %f格式输出。
(2)%m.nf 指定输出的数据共占m列,其中有n位小 数。如果(整数部分位数+1+n)<m,则左端补空格。
小数点
若(整数部分位数+1+n)>=m ,输出占(整数部 分位数+1+n)列。 例:main( )
int a=12; printf(“%ld\n”,a); }
%o、%mo、%-出长整型整数 %x、%mx、%-mx 以十六进制形式输出基本整
型整数 %lx 以十六进制形式输出长整型整数
如:
eg1:main( ) { int a=012 , b=34; printf(“%d,%d,%o,%o”,a,b,a,b);}
printpf(r“ihnetfl(lo“%kidtt,y%\n2”d);,%d,%10d\n”,a,a,b,b);
格式说} 明部分介绍
%d 用来输出十进制有符号整数。 结果: (1)%d 按整型数据的实际长度输出。
123,123(,122)34%5,md 12m3是45正整数,指明数据输出所占列 数,若数据实际位数小于m,则左端补空格,若 数据实际位数大于m,则按实际位数输出。
(1)格式控制部分若有普通字符,按原样输入。
(注:scanf函数的格式控制部分中,不应该出现转 义字符。)
(2)格式控制部分若有格式说明符,如%d,%f等, 要求输入相应格式的数据。
思考:
像上例的scanf(“%d%d”,&a,&b); 语句,格式说明部分只要求输入 两个十进制整数,并且两个%d相 连,之间没有任何间隔符,那么 在输入的时候是不是直接输入两 个相连的整数呢?
相关文档
最新文档