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

下载本文档

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

文档简介

第3章顺序结构程序设计3.1三种基本控制结构和算法(1)顺序结构这是最简单的结构,其特点是,每一条语句按顺序执行,每一条语句只执行一遍,不重复执行,也没有语句不执行。如下图所示,虚线框内是一个顺序结构,其中A和B两个框是顺序执行的。(2)选择结构这种结构也称为分支结构,其特点是,每一条执行了的语句都只执行一遍,不重复执行,但有语句不执行。如下图所示,虚线框内是一个选择结构,其中必有一个判断框,执行流程根据判断条件c的成立与否,选择执行其中的一路分支。(b)所示的是特殊的选择结构,即一路为空的选择结构。这种选择结构中,当c条件成立时,执行A操作,然后脱离选择结构;如果c条件不成立,则直接脱离选择结构。(3)循环结构这种结构也称为重复结构,其特点是,循环体在条件满足的情况下,可反复执行。如下图所示,虚线框内是一个循环结构。循环结构有两种形式:当型循环。如图(a)所示。直到型循环。如图(b)所示。3.1.2算法任何计算问题的求解中,都包含按照特定顺序去执行的一系列动作。解决问题的过程称为算法,它确定了执行的动作和动作执行的顺序。例如,读入20个整数,统计并输出其中为0、正数和负数的个数。对应的求解算法如下:

定义若干变量;重复20次 输入一个整数n;

若为0,zeros增1,若为偶数evens增1,若为奇数,odds增1;输出zeros、evens和odds的值;将该算法转换成的程序如下:#include<stdio.h>voidmain(){intzeros=0,evens=0,odds=0; /*定义变量*/inti,n;for(i=1;i<=20;i++) /*循环20次*/{scanf("&d",&n);if(n==0) /*条件判断*/

zeros++;elseif(n%2==0) evens++;else odds++;}printf("zeros=%d,evens=%d,odds=%d\n");}3.2顺序执行语句1.表达式语句在表达式的后面跟一个分号就构成了一个表达式语句,最常见的就是赋值语句,它是由一个赋值表达式后跟一个分号形成,程序中的很多计算都由赋值语句完成。例如:

n=10; /*将10赋值给n变量*/x=2*x; /*将变量x的值乘以2的结果赋给变量x*/事实上,任何表达式都可以加上分号而成为语句。2.函数调用语句函数调用语句由函数调用加上分号组成的,如:

printf("%f",a); /*输出实型变量a之值*/

函数是一段程序,这段程序可能存在于函数库中,也可能由用户自己定义的,当调用函数时会转到该段程序去执行。函数调用是以语句的形式出现的,它与前后语句之间的关系是顺序执行的。3.空语句空语句是指只有一个分号的语句,即:

;

空语句也是一个语句,虽然它不产生任何动作。在程序中,如果没有什么操作需要执行,但从语句的结构上来说,必须有一个语句时,可以书写一个空语句。4.复合语句用大括号{}把一些语句括起来,对外看作一个语句,就构成了一个复合语句。例如:

{ a=2; b=10; c=sqrt(a*a+b*b);}

复合语句可以出现在允许语句出现的任何地方,在选择结构和循环结构中都会看到复合语句的用途。3.3格式化输出函数printf()

C没有专门的输入/输出语句,其操作是通过调用C的库函数来实现的。其中printf()函数是最常用的输出函数,它的作用是向计算机系统默认的输出设备(一般指显示器)输出一个或多个任意指定类型的数据。3.3.1printf()函数的一般格式printf()函数的原型如下:

int

printf(格式控制,输出项表);例如:

printf("n=%3d,f=%5.1f\n,c=%c",n,f,c);其中,“格式控制”是用双引号括起来的字符串,可以包含下列3种字符:(l)格式说明符:由“%”和格式字符组成,例如,“%3d”、“%5.1f”和“%c”等,这些字符用来控制数据的输出格式。(2)转义字符:这些字符通常用来控制光标的位置,例如“\t”等。(3)普通字符:除格式说明符和转义字符之外的其他字符,这些字符原样输出,例如上面例子中的“n=”、“f=”等。3.3.2格式说明符格式说明符用于指定对应输出项的输出格式,其一般形式如下:

%[修饰符]格式字符1.格式字符格式字符说明c输出一个字符d或i输出带符号的十进制整数(不输出正号)o以八进制无符号形式输出整数(不输出前导符0)x或X以十六进制无符号形式输出整数(不输出前导符0x或0X)。对于0x用abcdef输出;对于0X,用ABCDEF输出。u按无符号的十进制形式输出整数。f以[-]mmm.ddd带小数点的形式输出单精度和双精度数,d的个数由精度指定。隐含的精度6,若指定的精度为0,小数部分(包括小数点)都不输出。e或E以[-]m.dddddde±xx或[-]m.ddddddE±xx的数形式输出单精度和双精度数。d的个数由精度指定,隐含的精度为6,若指定的精度为0,小数部分(包括小数点)都不输出。用E时,指数以大写“E”表示。g或G由系统决定采用%f格式还是采用%e格式,以使输出宽度最小。不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示。s输出字符串中的字符,直到遇到'\0'(空字符),或者输出由宽度指定的字符数。2.长整型修饰符长整型修饰符“l”加在“%”和格式字符之间,用于输出长整型数据:%ld:以十进制输出长整型数据%lo:以八进制输出长整型数据%lx:以十六进制输出长整型数据%lu:输出无符号长整型数据例如:longa=32;printf("%ld,%lo,%lx\n",a,a,a); /*输出为:32,40,20*/3.宽度和精度修饰可以在“%”和格式字符之间加入形如“m.n”(m、n均为整数)的修饰。其中,m为宽度修饰,n为精度修饰。宽度修饰用来指定数据的输出宽度。精度修饰对不同的格式字符,作用不同:对于格式字符f,用来指定输出小数位的位数;对于格式字符e,用来指定输出有效数字的位数;对于格式字符d,用来指定必须输出的数字的个数。例如:4.左对齐修饰在指定了宽度修饰时,如果指定宽度小于数据需要的实际宽度,则数据左边补空格,补够指定的宽度,这种对齐方式称为“右对齐”。也可以在数据的右边补空格来补够指定的宽度,这种对齐方式称为“左对齐”。指定左对齐的时候,使用左对齐修饰符“-”,例如:3.3.3printf()函数的使用说明调用printf()函数输出数据时,应注意以下几点:(l)printf()函数可以输出常量、变量和表达式的值。但格式控制字符串中的格式指示符必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。(2)格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其他格式字符必须用小写字母,例如,“%f”不能写成“%F”。(3)格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。3.4格式化输入函数scanf()3.4.1scanf()函数的一般格式

scanf()函数的的原型如下:

int

scanf("格式控制",输入项地址表);例如:

scanf("%d%f",&i,&f);

其中,“格式控制”可以包含三种类型的字符:(1)格式指示符:用来指定数据的输入格式(2)空白字符:包括空格、跳格键和回车键,通常作为相邻两个输入数据的缺省分隔符(3)非空白字符:又称普通字符,在输入有效数据时,必须原样一起输入3.4.2格式指示符格式指示符的一般形式如下:%[修饰符]格式字符格式字符说明c输入单个字符。d,i输入有符号的十进制整数。o输入无符号的八进制整数。x,X输入无符号的十六进制整数。u输入无符号的十进制整数。f输入实数,可以用小数形式或指数形式输入。e,E,g,G与f的作用相同,e与f,g可以互相替换。s输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束,字符串以串结束标志'\0'作为其最后一个字符。1.宽度修饰宽度修饰用来指定输入数据所占列数,例如:

scanf("%3c%3c",&ch1,&ch2);假设输入“abcdefg↙”,则系统将读取的“abc”(开头3个字符)中的“a”赋给变量ch1;将读取的“def”(紧跟着的3个字符)中的“d”赋给变量ch2。2.抑制修饰符抑制修饰符“*”表示对应的数据读入后,不赋给相应的变量,该变量由下一个格式指示符输入。例如:

scanf("%2d%*2d%3d",&a,&b);假设输入“123456789↙”,则系统将读取“12”并赋值给a;读取“34”,但舍弃掉(“*”的作用);读取“567”并赋值给b。3.长数据修饰符长数据修饰符“l”加在“%”和格式字符之间。用于输入长型数据:%ld:以十进制输入长整型数据%lo:以八进制输入长整型数据%lx:以十六进制输入长整型数据%lf:输入double型数据%le:输入double型数据例如:

【例3.3】

编写一个程序,输入弧度值,将弧度换算成角度值(度、分、秒的形式)输出。解:设x为弧度,则对应的角度为(180*x)/π,其整数部分为度,余下的小数部分乘以60取整数部分得到分,再将余下的小数部分乘以60取整数部分得到秒。程序如下:

/*FileName:exam3_3.cpp*/#include<stdio.h>#definePI3.14159voidmain(){doublex,a,a1;

int

d,f,m; /*d为度,f为分,m为秒*/

printf("输入弧度:");

scanf("%lf",&x); /*用格式指示符%lf输入double型数据*/a=x*(180.0/PI);d=(int)a; /*取弧度*/a1=(a-d)*60;f=(int)a1; /*取角度*/m=int((a1-f)*60+0.5);/*取秒数,0.5用于进行四舍五入计算*/

printf("%g<==>%d度%d分%d秒\n",x,d,f,m);}3.5单个字符的输入输出函数除了使用printf()函数和scanf()函数可以输出/输入字符数据外,C还提供了putchar()和getchar()函数,专门用来输出/输入单个字符。每调用putchar()函数一次,就向显示器输出一个字符,它的调用形式如下:

pu

温馨提示

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

评论

0/150

提交评论