版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计第3章顺序结构程序设计
本章主要内容3.1
顺序结构程序的引入3.2数据的输入3.3数据的输出3.4基本语句及程序规范3.5顺序结构程序设计及实例3.1顺序结构程序的引入3.1.1问题与引例【引例】从键盘输入一个3位正整数m,然后将其各位数字分离为a、b、c,并输出。
问题分析:将一个3位数的各位数字分离,实际上就是计算出各位数字的值,可以利用下列方法进行运算。百位:a=m/100十位:b=(m%100)/10个位:c=m%10对程序而言,顺序结构就是指按照书写顺序,自上而下顺次执行每一条语句。AB顺序结构ab3.1.2顺序结构的基本概念3.1.3顺序结构流程图输入数据数据处理输出数据3.1.4顺序结构举例【例3.1】从键盘输入两个整数a与b,将它们交换后输出。算法分析在此程序中,可以使用scanf函数语句实现随机输入,将从键盘输入的2个数分别赋给变量a、b;要交换两个变量的值,可采用借助中间变量t的方法实现数据交换后输出。#include<stdio.h>//标准库函数声明voidmain(){inta,b,t;//定义3个整型变量
printf("请输入两个数:");//输入提示
scanf("%d,%d",&a,&b);//格式化输入函数
printf("交换前:a=%d,b=%d\n",a,b);//输出交换前的两个数t=a;a=b;b=t;//此前3句为两数交换语句
printf("交换后:a=%d,b=%d\n",a,b);//输出交换后的两个数}思考:能否不借助于中间变量实现两个整数的交换?C语言在stdio.h中提供了一套标准输入输出函数。背景知识:C语言的标准输入输出函数标准输入输出函数使用时必须#include<stdio.h>。函数原型功能scanfint
scanf(char*fmt,…)从stdin格式化读入getcharint
getchar()从stdin读入一个字符getschar*gets(char*str)从stdin读入一个字符串printfint
printf(char*fmt,…)格式化输出到stdoutputcharint
putchar(charch)将字符ch输出到stdoutputsintputs(char*str)将字符串str输出到stdout程序的执行环境计算机的所有软、硬件资源全部由操作系统管理。程序运行所需的资源由操作系统协调分配,这些资源构成了程序运行的环境,如内存、CPU、输入输出设备等。输入输出设备包括:键盘、鼠标、外存、显示器、打印机等。为了缓解IO设备与CPU的性能矛盾,操作系统通常为IO设备提供缓存机制,避免低速IO设备长时间占用CPU。ANSIC使用三种类型的缓冲区:全缓冲:当缓冲区被填满后才会进行时真正的I/O操作,通常用于磁盘文件读写。行缓冲:当在输入和输出中遇到换行符时,才执行真正的I/O操作。不带缓冲:数据输出输入时,不使用缓冲区。标准输入输出标准输入输出:C程序运行时自动打开的输入输出缓冲区,也指对应输入输出设备(每个设备使用独立的缓冲区)。标准输入(stdin):指通过键盘输入数据时使用的缓冲区;标准输出(stdout):指向屏幕输出数据时使用的缓冲区;标准出错(stderr):指向屏幕输出错误信息时使用的缓冲区。程序的人机界面分类:Console(控制台)界面:提供字符界面,通常使用键盘输入,使用显示器输出。GUI(图形用户接口)界面:提供图形界面,通常使用键盘、鼠标输入,使用显示器输出。本课程主要涉及使用C语言编写Console程序的方法。例如:#include<stdio.h>voidmain(){charc;c=getchar();printf("c=%d\n",c);}键盘上输入的数字、空格、回车、逗号等都将作为一个字符输入3.2数据的输入3.2.1字符输入函数getchar()从标准输入设备(键盘)上输入一个字符。使用格式:ch=getchar();
#include<stdio.h>
//输入小写字母,输出大写字母voidmain(){charch1,ch2;//声明变量ch1=getchar();
//从键盘输入一个字符,并存入变量ch1printf("%c,%d\n",ch1,ch1);//输出字母和其ASCII码值ch2=ch1-32;
//小写字母转化为大写字母
printf("%c,%d\n",ch2,ch2);//输出对应的小写字母和ASCII码值}【例3.2】从键盘输入一个小写字母,输出其对应的大写字母。注意点:(1)getchar()是一个无参函数,函数的返回值就是从键盘读入的字符。(2)getchar()函数只能接收单个字符,输入数字、空格、回车等也按字符处理。当输入多个字符时,只接收第一个字符。(3)使用getchar()函数前必须包含文件"stdio.h"。(4)执行getchar()输入字符时,输入后需要按回车键,这样程序才会响应输入,继续执行后续语句。3.2.1字符输入函数getchar()即按用户指定的格式从键盘上把数据输入到指定的变量中。“地址表列”是由若干个地址组成的表列例如:scanf("%d,%f",&a,&b);格式说明地址表列3.2.2格式化输入函数scanf()一般格式scanf(格式控制字符串,地址表列);”&”是“地址运算符”,&a指在a内存中的地址。scanf()函数的格式说明格式说明:以%开始,以一个格式字符结束。格式字符格式字符含义d输入一个带符号的十进制整数o输入一个无符号的八进制整数x输入一个无符号的十六进整数u输入一个无符号的十进制整数f/e用来输入实数,可以用小数形式或指数形式输入c输入一个单字符s输入一个字符串scanf的附加格式说明字符字符说明l用于输入长整型数据(可用%ld,%lo,%lx)以及型数据(用%lf或%le)h用于输入短整型数据(可用%hd,%ho,%hx)域宽指定输入数据所占宽度(列数),域宽应为正整数*表示本输入项在读入后不赋给相应的变量格式段个数要与输入项个数相同,普通字符必须在相应的位置上原样输入,地址序列中的变量名前根据需要使用取地址运算符&。输入整数或实数时,若不指定数据所占列数,数据之间要用空白符(空格、[Tab]、回车)隔开,若指定所占列数,则按指定宽度读取数据。f格式只能用于输入float类型(且不能使用“双域宽”)。"%c"只从缓冲区取出一个字符,其余字符遗留在缓冲区中。"%s"用来输入字符串,送入字符数组中。以非空白字符开始,以空白字符结束,在串尾自动加'\0'(作为串结束标志)。若要输入的字符串包含空白符,则应使用gets函数。scanf函数的使用使用scanf()函数的注意点:(1)scanf()函数中一定给出变量的地址,不可以是变量名,否则出错。
例如:scanf("%d",a);错
scanf("%d",&a);对(2)scanf()函数可以设置输入宽度,不能设置精度例如:floata; scanf("%5f",&a); 正确
scanf("%5.2f",&a);非法(3)输入多个数据时,格式控制串中没有非格式字符,则输入时数据间的分隔符可用空格、Tab键、回车键。例如:scanf("%d%d%f",&a,&b,&c);(4)用连续%c输入字符数据时,任意字符都有效
scanf("%c%c%c",&a,&b,&c);printf("a=%c,b=%c,c=%c",a,b,c);
输入:A,B,C
输出:a=A,b=,,c=B(5)如果格式控制字符串中有非格式字符,则输入时也要输入非格式字符。scanf("%d,%d,%d",&a,&b,&c);
输入应为:5,6,7若为:scanf("a=%d,b=%d,c=%d",&a,&b,&c);
输入应为:a=5,b=6,c=7(6)输入输出格式控制符必须匹配,否则不能正确输出
例如:设从键盘输入:1020.5<CR>,分析各程序的输出。voidmain(){inta;floatb;scanf("%d%d",&a,&b);printf("%d,%f\n",a,b); }voidmain(){inta;floatb;scanf("%d%f",&a,&b);printf("%d,%f\n",a,b);}voidmain(){inta;floatb;scanf("%d%d",&a,&b);printf("%d,%d",a,b); }(7)遇到宽度设置,认为数据输入结束123.000000,456例如:voidmain() { intx; doublem; scanf("%4lf%d",&m,&x); printf("%lf,%d\n",m,x); } 若输入123.456□23,则输出结果是?例如:#include<stdio.h>voidmain(){ inta,b; printf(“请输入a,b:"); scanf("%2d%*2d%2d",&a,&b); printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);}(8)%*
表示本输入项在读入后不赋给相应变量对于不可打印的字符,输出方式有两种:putchar(012);和putchar('\12');3.3.1字符输出函数putchar()3.3数据的输出putchar()向标准输出设备(显示器)上输出一个字符。使用格式:putchar(ch);例如:putchar('A');//输出大写字母Aputchar(x);//输出字符变量x的值putchar('\101');//也是输出字符Aputchar('\n');//换行【例3.4】putchar输出字符。#include<stdio.h>voidmain(){chara='B',b='o',c='k';
putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');putchar(a);putchar(b);putchar('\n');putchar(b);putchar(c);}程序运行结果如下:BookBook例如:
printf("a=%d,b=%f",a,b);调用格式:
printf("格式控制字符串",输出表列);格式控制:格式说明(%格式字符)+普通字符输出表列:即需要输出的数据,可以是表达式
函数名输出表列普通字符格式说明:%格式说明符3.3.2格式化输出函数printf()printf函数的格式控制字符格式字符格式字符含义d以十进制形式输出一个带符号的整数(默认正数不输出符号)o以八进制形式输出一个无符号的整数(默认不输出前导符0)x,X以十六进制形式输出一个无符号的整数(默认不输出前导符0x或0X)u以十进制形式输出一个无符号的整数f以小数形式输出带符号的实数(包括单、双精度)e,E以指数形式输出带符号的实数g,G选择%f或%e格式输出实数c输出一个单字符s输出一个字符串标志格式字符:-、+、#、空格、0- 结果左对齐,右边填空格+ 输出符号(正号或负号)(只对十进制数)空格 输出值为正时冠以空格,为负时冠以负号#
对c,s,d,i,u类无影响;对o类,在输出时加前缀0;对x类,在输出时加前缀0x;对e,g,f类,确保出现小数点,即使无小数位时亦如此0 右对齐输出数据时,不够宽度补0若实际位数多于定义的宽度:则按实际位数输出。若实际位数少于定义的宽度:默认右对齐,有负号左对齐n:
精度m:
域宽,即输出项在输出设备上所占的宽度
输出实型数据,n指定实型数据所占的小数位数输出字符串,n指定最多输出的字符个数域宽及精度(m.n)printf函数的使用格式段个数要与输出项个数相同。若指定的域宽过小,或未指定域宽则按实际数长输出。若指定的域宽过大,则“右对齐,左补空”;带附加格式"-"时,“左对齐,右补空”。"%m.nf"只用于输出实数,共m位,小数n位,若m<n,则在保证n的前提下,按实长输出。"%m.ns"用于输出字符串,占m列,只输出串左起n个字符“右对齐,左补空”。若无n,m<字符串实长,则按实长输出,若m<n,则取m=n,按n输出。"%%"用于输出一个'%'。若格式说明出现错误,可能出现不可预料的错误。例如:printf("%4d,%-4d,%4d",a,a,b);
若a=123,b=12345
则输出结果是:□123,123□,12345例如:printf("%lf,%8.2lf\n",b,b);
若b=123.4567
则输出结果是:123.456700,□□123.46例如:printf("%s,%8s,%8.3s","china","china","china");
则输出结果是:china,□□□china,□□□□□chiprintf()函数使用例子:【例3.5】printf()函数格式控制字符的使用。#include<stdio.h>voidmain(){inta=66,b=67;printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);printf("a=%d,b=%d\n",a,b);}程序运行结果如下:66,67B,Ca=66,b=67【例3.6】printf()函数修饰字符的使用。#include<stdio.h>voidmain(){inta=15;floatb=123.1234567;doublec=12345678.1234567;chard='p';printf("a=%d,%5d,%o,%x\n",a,a,a,a);//将a以4种格式输出
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);//将b以4种格式输出
printf("c=%lf,%f,%8.4lf\n",c,c,c);//将c以3种格式输出
printf("d=%c,%8c\n",d,d);//将d以2种格式输出}程序运行结果如下:a=15,15,17,fb=123.123459,123.123459,123.1235,1.231235e+002c=12345678.123457,12345678.123457,12345678.1235d=p,p3.4基本语句及程序规范1.控制语句控制语句完成一定的控制功能。C语言只有9条控制语句,又可细分为三种:(1)选择结构控制语句(又称为条件语句)
if()~else~,switch()~(2)循环结构控制语句
do~while(),for()~,while()~,break,continue(3)其它控制语句
goto,return3.4.1C语言的基本语句2.函数调用语句函数调用语句由一次函数调用加一个分号(语句结束标志)构成。例如:printf("ThisisaCfunctionstatement.");3.表达式语句表达式语句由表达式后加一个分号构成。最典型的表达式语句是,在赋值表达式后加一个分号构成的赋值语句。例如:“num=5”是一个赋值表达式,而“num=5;”却是一个赋值语句。4.空语句空语句仅由一个分号构成。显然,空语句什么操作也不执行。例如,下面就是一个空语句:;3.4.1C语言基本语句5.复合语句复合语句是由大括号括起来的一组(也可以是1条)语句构成。例如:
main(){……{……}//复合语句……}注意:
(1)在语法上和单一语句相同,即单一语句可以出现的地方,也可使用复合语句。右括号后不需要分号。(2)复合语句可以嵌套,即复合语句中也可出现复合语句。3.4.1C语言基本语句3.4.2程序的风格与基本规范1.程序风格最基本的是缩进、花括号的位置以及换行等。2.程序设计基本规范“清晰第一,效率第二”,限制使用goto语句。(1)适当增加注释,并保持注释与代码完全一致。(2)每个源程序文件,都有文件头说明。(3)每个函数,都有函数头说明。(4)定义标识符时,尽量“见名知义”,并通过注释反映其含义。(5)利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为6个字节。(6)注释可以与语句在同一行,也可以在上一行。(7)空行和空白字符也是一种特殊注释。3.5.1顺序结构程序设计3.5顺序结构程序设计及实例1.问题分析此类问题的解决是用顺序结构按照编写代码的顺序依次执行相关计算或处理。2.算法分析此类问题的算法一般都很简单,主要是对一些初始数据的计算或对初始数据的处理。3.代码设计(1)用scanf函数输入原始数据;(2)用赋值语句进行计算或处理;(3)用printf函数输出计算或处理的结果。3.5.1顺序结构程序设计3.5顺序结构程序设计及实例4.运行调试用初始数据的不同情况分别测试程序的运行结果。3.5.2应用实例【例3.7】已知圆柱的半径和高,求圆柱的体积。#include<stdio.h>voidmain(){floatr,h,v;//定义r为半径,h为高,v为体积printf("请输入圆柱的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省沈阳市于洪区2023--2024学年九年级上学期期末物理化学试题(1)-初中化学
- 《湖南卫视媒体资料》课件
- 浙江省湖州市长兴县2023-2024学年六年级上学期英语期末试卷
- 汽车行业维修培训
- 《糖尿病与肥胖》课件
- 2024年江西省南昌市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2023年贵州省铜仁市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2021年山西省朔州市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 《文化的定義》课件
- 保险增员激励话语
- 兰州生物制品研究所笔试
- 【MOOC】信号与系统-北京邮电大学 中国大学慕课MOOC答案
- OA协同办公系统运行管理规定
- 公安警察工作汇报PPT模板课件
- 直肠癌个案护理范文结肠癌个案护理.doc
- 某小区建筑节能保温工程监理实施细则
- 污水处理中常用的专业术语
- 石英砂过滤器说明书
- 外市电引入工程实施管理要求(重要)
- 公务员录用体检表模板
- 工资转移证明(样表)
评论
0/150
提交评论