第3章(2) 顺序结构程序设计课件_第1页
第3章(2) 顺序结构程序设计课件_第2页
第3章(2) 顺序结构程序设计课件_第3页
第3章(2) 顺序结构程序设计课件_第4页
第3章(2) 顺序结构程序设计课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问题:用程序解决问题的一般过程包括哪几步?例1:将用户给出的华氏温度转换成摄氏温度。分析问题:(1)数据定义:设f表示华氏温度,c表示摄氏温度。(2)算法描述:输入华氏温度f;按照转换公式c=5/9*(f-32)计算;

输出结果。编写程序:#include<stdio.h>intmain(){ floatf,c; printf("enteraFahrenheit:"); scanf(“%f”,&f);//输入华氏温度 c=5.0/9*(f-32);//计算 printf(“f=%f,c=%f”,f,c);//输出结果 return0;}简单程序流程分析:数据定义数据处理:数据的输入计算处理结果的输出提出问题:如何实现数据的输入和结果的输出呢?主要内容简单的输入输出顺序结构程序设计要求:

学会根据要处理的数据的类型不同合理选用合适的输入/输出函数和格式。Ch3-2顺序结构程序设计3.4数据的输入/输出例3.1中用scanf()实现了数据的输入,用printf()实现了数据的输出。输入输出:是相对于计算机的主机而言的。

输入是指从计算机的外部设备将数据读入主机,

输出是指将数据从主机送到外设(显示器、打印机、磁盘等)。输入设备(如键盘)主机输出设备(如显示器)输入输出3.4数据的输入/输出输入输出的实现:C语言本身没有专门的输入输出语句,输入输出操作是通过函数调用来实现的。输入输出函数的使用:编程时必须先将输入输出函数所在的头文件:stdio.h包含进本程序中。使用命令:

#include<stdio.h>

约定:C语言中的标准输入输出设备约定为用户终端,即键盘和显示器。输入/输出函数使用提示:调用输入函数时应该明确:数据从哪儿输入(省略为键盘)、以什么格式输入、输入的数据存放在哪里;调用输出函数时应该明确:

要输出什么内容、按什么格式输出、输出到哪个设备(省略为显示器)。3.4.3格式输出函数1.printf()函数的一般调用格式:

printf(格式控制字符串,输出表列);如前面例题中:

printf(“\nenteraFahrenheit:");printf(“f=%f,c=%f”,f,c);提示:格式控制串包含两部分,即格式控制符、普通字符。其中,普通字符原样输出,而每个格式控制符控制输出表列中的一个数据的输出格式。格式字符的使用例2输入三角形的三边长(设为整数),求三角形的面积。

要求:输出三条边、面积,并且每个数据占7列宽度、小数点后保留2位。分析:首先定义变量保存要处理的数据和结果;然后设计算法:输入、计算、输出结果;最后编写程序。/*输入三角形的三边,求面积*/#include<stdio.h>#include<math.h>intmain(){ inta,b,c;doubles,area; printf("\nenter3sides(integer):"); scanf("%d%d%d",&a,&b,&c);//输入数据

s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c));//计算面积

printf("3sides:a=%7d,b=%7d,c=%7d\n",a,b,c);

printf("area=%7.2f\n",area);//输出结果 return0;}enter3sides(integer):3453sides:a=3,b=4,c=5area=6.00格式字符的作用:其中,%7d表示按照十进制整型格式输出,域宽为7;%7.2f表示按浮点型格式输出,域宽为7,且小数点后保留2位,右对齐。若将%7.2f改为%-7.2f则实现左对齐。具体的格式说明符参见P74表3.6

其他格式符的使用:对照例题,上机调试,理解常用输出格式控制符的作用,如%c,%s,%ld,%lf等。3.4.4格式输入函数2.scanf()的一般调用格式:

scanf(格式控制串,地址表列);

其中,格式控制串规定了用户的输入格式,地址表列指出了数据存放的地址。例如:上例中输入三角形的三边。

方法一:格式控制串中只包含格式控制符scanf("%d%d%d",&a,&b,&c);/*常用*/

方法二:格式控制串中包含普通字符;scanf("a=%d,b=%d,c=%d",&a,&b,&c);/*不常用,why?*/用scanf()时数据的输入格式:scanf("%d%d%d",&a,&b,&c);/*常用*/运行时输入:345

或者每个数据之后按一下回车。

总之,数据之间以空格或回车分隔即可。scanf("a=%d,b=%d,c=%d",&a,&b,&c);

运行时输入:a=3,b=4,c=5

提示:必须按照以上格式输入,否则出错。比较两种方式:若无特别要求,哪种更方便?scanf()应用提示:(1)地址表列中的每个参数都是地址,即指出数据的存放位置;如:scanf("%d%d%d",&a,&b,&c);(2)约定:输入数值数据时,当遇到空格、回车、Tab键等则认为该数据结束。若无特别要求,一般在格式控制串中不使用普通字符或其他复杂的格式符。(3)格式符与数据类型要匹配。如%d控制输入整数,%f控制输入浮点数据,%c控制字符输入,%s控制字符串输入。scanf()格式输入函数应用:例3:输入某商品的编号(整型)、类别(A~Z字符型)、价格(实型),并输出该信息。特点分析:

混合数据输入#include<stdio.h>intmain(){ intnum;charclass1;floatprice; printf("\nentertheNo,class(A~Z)andpriceforgoods:"); scanf("%d%c%f",&num,&class1,&price);

printf("no=%d,class=%c,price=%6.2f\n",num,class1,price); return0;}entertheNo,class(A~Z)andpriceforgoods:10B98.8no=10,class=B,price=98.80用scanf()输入混合数据:scanf("%d%c%f",&num,&class1,&price);运行时输入:10B98.8问题:用scanf()实现混合数据输入麻烦、易出错.解决方法:合理使用scanf()和getchar(),即将数值与字符分别输入,而不是用一个scanf()函数实现。3.4.5字符输入/输出函数:getchar()和putchar()putchar()函数:调用格式:

putchar(c);

其中,c是要输出的字符,它可以是字符型或整型的常量和变量。当c为整型时,其值应是要输出的字符的ASCII码,范围是0~255.

函数功能:

输出一个字符到显示屏的当前光标处。例4输出三个字符:A*B。#include<stdio.h>intmain(){charc1;intc2;c1='A';c2=66;/*给变量c1,c2赋值*/putchar('\n');/*输出字符'\n'*/putchar(c1);/*输出变量c1中的字符:'A'*/putchar('*');/*输出字符'*'*/putchar(c2);/*输出变量c2中的字符:'B'*/return0;}字符输入:2.getchar()函数:

调用格式:

getchar()

函数功能:从标准输入设备(一般指键盘)读取一个字符,返回该字符的ASCII码。

常用以下方式得到输入的字符:charch;ch=getchar();例5输入两个字符,输出每个字符及其ASCII码。#include<stdio.h>intmain(){charc,d;printf("\nentertwocharacters:");//提示用户c=getchar();//读取输入字符d=getchar();printf("%c:%d\n",c,c);//输出c中的字符及ASCII码printf("%c:%d",d,d);return0;}运行结果:entertwocharacters:AB↙A:65B:66混合数据输入用scanf()和getchar()实现例3:输入某商品的编号(整型)、类别(A~Z字符型)、价格(实型),并输出该信息。intmain(){ intnum;charclass1;floatprice; printf("enterNO:"); scanf("%d",&num);getchar(); printf("enterclass(A~Z)::"); class1=getchar();getchar(); printf("enterprice:"); scanf("%f",&price);getchar(); printf("no=%d,class=%c,price=%6.2f\n",num,class1,price); return0;}enterNO:10enterclass(A~Z)::Benterprice:80.8no=10,class=B,price=80.80数值型和字符型数据的混合输入本程序中分别用scanf()和getchar()输入编号、价格和类别。并且每次用输入数据后,用getchar()读取多余的回车符,以免影响后面的正确输入。混合数据输入,有两种处理方法:一是在一个scanf()函数中实现所有数据的输入;二是将数值与字符分别输入,而不是用一个scanf()函数完成。通常采用第二种方法,用第一种方法输入时容易出错。getchar()的使用技巧:放在程序的适当位置,用于暂停程序的执行,查看运行结果。用法1:在程序结束前添加语句getchar();

可以实现在直接运行可执行文件时,显示结果、等待用户按回车键才结束。用法2:在大量数据输出时,在输出一段数据后使用getchar()语句,可以让用户能够看到每段输出结果,否则只能看到最后的一屏。Enter键的作用:特别提示:

从键盘输入数据时,并不是键入一个字符后立即将其送入主机,而是等到按下回车键(Enter)后,才能把这一行字符送入计算机的数据缓冲区,然后输入函数从缓冲区的第一个字符开始逐个读取数据。

只有当缓冲区中无数据可读时,才等待用户输入。

注:以下例题供大家阅读、总结知识点及其用法。3.4.5顺序结构程序设计举例例6交换两个整型变量的值。分析:首先定义程序中要用到的变量,设两个整型变量为a、b。然后设计算法:①输入两个整数a、b②交换a、b的值③输出交换后的a、b的值。其中,实现②的方法有两种:一是用第三个变量c暂存其中一个数,如程序1。二是不使用第三个变量,利用其中一个变量保存两数之和,通过减法来实现,如程序2。程序1:利用中间变量交换两个变量的值。intmain(){inta,b,c;//定义变量,a、b表示输入的两个整数,c为中间变量printf("\nenter2integerstoa,b:");scanf("%d%d",&a,&b);

c=a;a=b;b=c;/*交换*/printf("\na=%d,b=%d",a,b);return0;}思考:若将三个交换语句的顺序调整,结果如何?运行结果:enter2integerstoa,b:46↙a=6,b=4程序2:不使用中间变量交换两个变量的值。intmain(){inta,b;printf("\nenter2integerstoa,b:");scanf("%d%d",&a,&b);

a=a+b;b=a-b;a=a–b;/*交换*/printf("\na=%d,b=%d",a,b);return0;}

顺序结构程序设计例7输入一个数字符号,并转换成相应的整数输出。如读入字符'8',转换成整数8输出。分析:首先数据说明:定义程序中要使用的变量,设字符变量ch存放读入的字符,整型变量d存放转换后的整数。然后设计算法:①输入一个字符给ch②将字符ch转换成对应的数值d③输出d。其中第二步如何转换呢?即:将字符转换成对应的数字。利用ASCII码的编码规律:'0','1','2'……'9'的ASCII码值是连续的,即48、49、50……57。因此,只要将数字字符与字符'0'相减,结果就是该字符对应的数值。如'8'-'0'值为8。程序:#include<stdio.h>intmain(){charch;intd;printf("\nenteracharacter(0~9):");ch=getchar();/*读入一个字符并赋给ch*/

d=ch-'0';printf("d=%d",d);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论