程序设计基础(C语言)(第2版)(微课版) 课件 第3章 顺序结构_第1页
程序设计基础(C语言)(第2版)(微课版) 课件 第3章 顺序结构_第2页
程序设计基础(C语言)(第2版)(微课版) 课件 第3章 顺序结构_第3页
程序设计基础(C语言)(第2版)(微课版) 课件 第3章 顺序结构_第4页
程序设计基础(C语言)(第2版)(微课版) 课件 第3章 顺序结构_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

第3章顺序结构程序设计目录CONTENTS程序的灵魂—算法C语言基本语句数据的输入和输出顺序结构程序设计3.13.23.33.4程序的灵魂—算法3.1程序的灵魂——算法算法概述算法的描述结构化程序设计方法算法是对问题求解过程的操作步骤的描述,是为解决一个或一类问题给出的一个确定的、有限的操作序列。算法概述01算法概述01“算法”就是能让程序员编写出可靠、高效的计算机程序的“菜谱”按菜谱做菜的流程按算法解决问题的流程解决一个问题可以用不同的方法和步骤,因而针对同一问题的算法也有多种原材料开始结束开始结束问题:找出1到1000之间能被9整除的数(考虑最优算法)算法1:

设x=9

输出x的值

将x的值加9

判断x的值是否超过1000,没有超过则回到步骤

,否则算法结束。

共需执行加法111次算法2:

设x=1

x除以9,若余数为0,则x能被9整除,输出x的值

将x的值加1

判断x的值是否超过1000,没有超过则回到步骤

,否则算法结束。

共需执行除法和加法各1000次算法3:

设x=1

输出x*9的值

将x的值加1

判断x*9的值是否超过1000,没有超过则回到步骤

,否则算法结束。

共需执行乘法112次,加法111次算法概述01算法独立于任何程序设计语言,同一算法可以用不同的程序设计语言来实现,因此,算法才是根本。算法1用Python语言实现:x=9whilex<=1000:print(x)x=x+9算法1用C语言实现:#include<stdio.h>intmain(){intx=9;while(x<=1000){printf("%d\n",x); x=x+9;}return0;}算法概述01SymbolNameFunctionStart/EndAnovalrepresentsastartorendpoint.ArrowsAlineisaconnectorthatshowsrelationshipbetweentherepresentativeshapes.Input/outputAparallelogramrepresentsinputoroutput.ProcessArectanglerepresentsaprocess.DecisionAdiamondindicatesadecision.流程图的符号算法的描述02结构化程序设计方法03自顶向下、逐步求精、模块化顺序结构:输入秒数,转化成对应的“小时:分:秒“形式输出选择结构:求两个数中的最大数。循环结构:计算1+2+3+……+100的和输入总秒数xs=0计算小时h计算分钟m计算秒数s显示h:m:s输入第一个数a输入第二个数ba>b?输出第二个数b输出第一个数aYi=1i<=100s=s+ii=i+1Y输出sNN程序的结构C语言基本语句3.2C语言基本语句表达式语句控制语句函数调用语句复合语句空语句表达式语句01表达式语句可分为运算符表达式语句和赋值表达式语句,其作用是计算表达式的值或改变变量的值。由表达式加上“;”组成的语句称为表达式语句。它的一般形式为:表达式;表达式语句01赋值表达式语句z=x+y;/*先计算x+y的值,再将值赋给z*/x=2;/*将x赋值为2*/x=x*sin(x);/*先计算表达式x*sin(x),再将值赋给x*/运算符表达式语句x+y;/*加法运算语句,不保留运算结果*/i++;/*自增运算语句,使i的值加1*/--i;/*自减运算语句,使i的值减1*/02C语言有丰富的标准函数库,可提供各类函数供用户调用(参见附录)。标准库函数完成预先设定好的任务,可直接调用,不需要用户再编写程序。函数调用语句是由函数调用表达式后加上“;”组成。它的一般形式为:函数名(参数列表);函数调用语句例如:scanf(“%d”,&a);/*输入函数调用语句,输入变量a的值*/printf(“中国是一个伟大的国家”);

/*输出函数调用语句,原样输出引号中的字符串*/02调用标准库函数时,应注意:(1)程序中要包含相应的头文件例如:#include<stdio.h>或#include“stdio.h”

/*文件名可放在尖括号中或双引号中*/(2)调用函数有的是为了得到函数返回值,这类函数的调用出现在表达式中,不作为函数调用语句,而作为表达式语句的一部分。

得到函数返回值y=3*sin(x)+10;y=cos(2.6);在表达式中调用函数,实际是转而去执行一段预先设计好的程序,求得结果后返回到调用点。

完成相应任务printf(“%6.4f”,a);调用printf不是为了得到返回值,而是为了完成结果输出的任务。函数调用语句控制语句032控制语句用于控制程序流程,以实现程序的各种结构方式,C语言共有11个控制语句,分为三类:分类语句形式功能说明条件判断语句if()……条件语句,用于分别实现单/双/多分支选择结构():表示判断条件……:表示内嵌语句if()…else…if()…elseif()…else…switch()…case…多分支选择结构循环执行语句while()……循环语句,用于实现循环结构do……while()for()……转向语句break改变循环执行状态语句——提前终止循环

continue改变循环执行状态语句——提前结束本次循环

goto改变循环执行状态语句——提前终止多重循环

return从函数返回语句

复合语句043注意!(1)复合语句中每条语句都必须以“;”结尾,右花括号“}”后不能有分号。(2)允许多条语句写在同一行:如上例也可写为{c=a;a=b;b=c;}。把多个语句用“{}”括起来组成的一个语句称为复合语句。在程序中应把复合语句看作是单条语句而不是多条语句。{c=a;a=b;b=c;}该复合语句完成了变量a,b的交换。空语句05空语句用一个分号表示一般形式为:;空语句占一个简单语句位置,执行该语句不做任何操作。程序中空语句可用来作空循环体。数据的输入和输出3.3

C语言基本语句格式数据的输入/输出输入和输出的概念及实现字符数据的输入/输出输入输出的概念及实现01输入/输出是相对计算机主机而言的输出:从计算机向外部输出设备(如显示器、打印机等)输出数据输入:从外部输入设备(如键盘、鼠标等)向计算机输入数据注意!C语言本身不提供输入/输出语句,输入输出功能由C语言的标准输入输出(I/O)库函数提供。其对应头文件为“stdio.h”。字符数据的输入/输出02C语言标准I/O函数库提供了putchar()和getchar()两个函数来分别实现对于单个字符的输出与输入。字符数据的输入/输出02(1)单个字符输出函数putchar()

putchar()函数是向标准输出设备输出一个字符,其调用格式为:

putchar(ch);其中ch为一个字符变量或常量。putchar()函数的作用等同于printf("%c",ch);例3.1#include<stdio.h> intmain() { intA=65; putchar('A'); /*输出大写字母A*/putchar(A); /*变量A的值为65,输出对应在ASCII中的字符A*/putchar('\x41'); /*x41为十六进制数表示形式*/putchar('\101'); /*101为八进制数表示形式*/return0; } 输出:AAAA字符数据的输入/输出02例#include<stdio.h>intmain(){intc;chara;c=98;a='B';putchar(c);putchar('\n');putchar(a);

putchar('\n');return0;}

输出:bB对于可视字符直接输出,而对控制字符则直接执行控制功能,不在屏幕上显示。字符数据的输入/输出02(2)单个字符输入函数getchar()

getchar()是字符输入函数,其功能是从标准化输入设备上输入一个字符。其调用的一般形式为:getchar();通常把输入的字符赋给一个字符型变量,构成赋值语句,例如:chara;a=getchar();#include<stdio.h>intmain(){chara;a=getchar();putchar('a');putchar('=');putchar(a);return0;}字符数据的输入/输出02例3.2接受用户从键盘输入字符,并输出。字符数据的输入/输出02注意!(1)getchar函数只接受单个字符,输入多于一个字符时,只接收第一个字符。如教材例3.2输入65,则输出:a=6。(2)getchar函数值可赋给一个字符变量,也可赋给一个整型变量。如教材例3.2第4行也可定义为:inta;(3)执行getchar()输入字符时,键入字符后需敲回车键,程序才会响应继续执行后续语句。(4)putchar函数只能用于单个字符输出格式数据的输入/输出03(1)

格式输出函数printf()函数格式:printf(“格式控制字符串”[,输出项列表]);

“格式控制字符串”:用双引号括起来的字符串。

它一般包括两部分,即格式字符串和非格式字符串(需原样输出)两部分组成,它的作用是控制输出项的格式和输出一些提示信息。

如果只有非格式字符串,则输出项列表省略。例

printf(“面朝大海,春暖花开”);只有非格式字符串原样输出:面朝大海,春暖花开格式数据的输入/输出03例输出结果为:x的值为65,x对应ASCII字符为A(换行)格式数据的输入/输出03说明!(1)格式字符串与输出项列表在数量和类型上要按顺序一一对应。(2)格式字符串由%开始,并以格式字符结束,用于指定各输出项的输出格式。格式字符串用法说明%d输出带符号的十进制整数,正数的符号省略如:intx=65; printf("%d",x);输出:65%u以无符号的十进制整数形式输出如:intx=-1; printf("%u",x);输出:65535%o以无符号的八进制整数形式输出,不输出前导符o如:intx=65; printf("%o",x);输出:101%x或%X以无符号的十六进制整数形式输出,不输出前导符ox如:intx=65; printf("%x",x);输出:41%c输出一个字符如:intx=65; printf("%c",x);

输出:A%s输出字符串如:charx[]="china"; printf("%s",x);

输出:china%f以十进制小数形式输出实数(包括单、双精度),整数部分全部输出,小数输出6位(四舍五入,不足添零)。如:floatx=4.8;print(“%f”,x);输出:4.800000doublex=4.6786786;print(“%f”,x);输出:4.678679%e或%E以数形式输出实数,要求小数点前必须有且仅有一位非零数字如:floatx=0.06; printf("%e",x);输出:6.000000e-002%g或%G自动选取f或e格式中输出宽度较小的一种使用,且不输出无意义的0如:floatx=0.0600; printf("%g",x);输出:0.06%%输出百分号%函数printf()的常用格式字符串(3)格式修饰符:在%与格式字符中间还可插入格式修饰符,用于对输出格式进行微调,如指定数据域宽、小数位数、左对齐等格式数据的输入/输出03格式修饰符用法说明英文字母l表示以长整型输出整数或以双精度输出浮点数英文字母h表示以短整型输出整数指定域宽m(m为整数)指定输出项所占列数当m为正整数,数据宽度小于m时,在域内右靠齐,左边用空格补足;数据宽度大于m时,按实际宽度全部输出。当m为负整数,则输出数据在域内左靠齐显示精度.n(n>=0)n为正整数,位于域宽m之后,表示为m.n对于浮点数,用于指定输出小数位数对于字符串,用于指定从字符串左侧开始截取的子串字符个数%m.n表示输出实数共占m个字符位置(包括小数点),其中n位小数注意!函数printf()的格式修饰符例3.3:格式输出示例

#include<stdio.h>

intmain()

{

intx=65535;

floaty=123.1234567;

doublez=12345678.1234567;

charw='p';

printf("x=%hd,%ld,%6d\n",x,x,x);

printf("y=%f,%lf,%8.2lf\n",y,y,y);

printf("z=%f,%lf,%5.4lf\n",z,z,z);

printf("w=%c,%8c,%-8c\n",w,w,w);

return0;

}格式数据的输入/输出03例

运行时输入:x=10,y=20非格式字符串部分“x=,y=”部分需原样输入格式数据的输入/输出03(1)

格式数据输入函数scanf()函数格式:scanf(“格式控制字符串”,参数地址列表);“格式控制字符串”:

用双引号括起来的字符串,包括格式字符串和非格式字符串两部分。格式字符串和printf函数相同,非格式字符串和printf函数相对(在printf中照原样输出,在scanf中照原样输入)格式数据的输入/输出03说明!(1)格式字符串与参数地址列表在数量和类型上要按顺序一一对应(2)格式字符串由%开始,并以格式字符结束,用于指定各输入项的格式。格式字符串用法说明%d输入十进制整数%o输入八进制整数%x输入十六进制整数%c输入一个字符,空白字符(包括空格、回车、制表符)也作为有效字符输入%s输入字符串,遇空白字符(包括空格、回车、制表符)时,系统认为读入结束;(但在开始读之前遇到空白字符会被系统跳过)%f或%e输入实数,以小数或指数形式输入均可%%输入一个百分号%函数scanf()的常用格式字符串(3)格式修饰符:与printf()类似,在函数scanf的%与格式字符中间也可以插入格式修饰符格式数据的输入/输出03格式修饰符用法说明英文字母l表示输入长整型数(如%ld)或双精度浮点数(如%lf)英文字母h表示输入短整型数或单精度浮点数。指定域宽m(m为整数)用十进制整数指定输入数据的宽度(即字符数),若输入字符数超出指定值,超出部分被截去。如:scanf("%5f",&Pi);

printf("%f",Pi);输入:3.1415925/*只是把3.141这5个字符存储在了变量中,其余部分被截去*/输出:3.141000。函数scanf()的格式修饰符(4)scanf()函数没有精度控制,即用scanf输入实型数据时不能规定精度

如:scanf(%.2f”,&pi);/*非法的格式控制字符串*/

(5)在输入字符数据时,若格式控制字符串中没有指定分隔符,则所有输入的字符均为有效字符(包括空格)。

如:scanf("%c%c%c%c%c",&a,&b,&c,&d,&e);

输入:HiChina↙

输出:HiCh/*把H存储在变量a中,i存储在变量b中,空格存储在变量c中,C存储在变量d中,h存储在变量e中,剩余部分被截去*/

(6)在输入字符串时,如果输入空格,则认为输入已结束。

如:

charx[]="";

scanf("%s",x);

printf("%s",x);

输入:JohnSmith↙

输出:John

/*scanf()只把John存储在字符数组x中,空格后的Smith被截去*/格式数据的输入/输出03

#include<stdio.h>

intmain()

{

charuserResponse;

printf("教育的本质不在增添知识,而在唤醒灵魂\n");

printf("同意吗?请输入Y/N:");

scanf("%c",&userResponse);

printf("userResponse=%c\n",userResponse);

return0;

}例3.4教育的本质——利用scanf()与计算机交互格式数据的输入/输出03顺序结构程序设计举例3.4

例3.5:港珠澳大桥是世界上最长的跨海大桥,全长55千米,请输入车辆行驶时速,计算行驶通过港珠澳大桥所用的时间。 #include<stdio.h> intmain() { intl=55; floats,time; printf("请输入时速:"); scanf("%f",&s); time=l/s; printf("用时%.2f小时通过港珠澳大桥!",time); return0; }用大模型了解港珠澳大桥例:输入一个华氏温度,输出对应的摄氏温度。输出取1位小数。转换公式为注意数学表达式到C语言表达式的转换#include"stdio.h"intmain(){floatc,f;scanf("%f",&f);c=5.0/9*(f-32);printf("%.1f\n",c);return0;}例:输入圆的半径,输出圆的周长和面积#include<stdio.h>intmain(){floatr,l,s;scanf("%f",&r);l=2*3.1415*r;s=3.1415*r*r;printf("\n圆的周长为:%6.2f",l);printf("\n圆的面积为:%6.2f",s);return0;}程序运行时输入:2.4↙程序运行结果:圆的周长为:15.08圆的面积为:18.10#include<stdio.h>intmain(){floatr;scanf("%f",&r);printf("\n圆的周长为:%6.2f",2*3.1415*r);printf("\n圆的面积为:%6.2f",3.1415*r*r);return0;}变量l和s,程序可改如下所示,运行结果一样:#include"stdio.h"intmain(){

int

温馨提示

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

评论

0/150

提交评论