《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/122013/3/12《C语言程序设计》第3章结构化程序设计厦门大学非计算机专业本科生公共课(2012-2013第2学期)林子雨厦门大学计算机科学系E-mail:ziyulin@xmu.
edu.
cn个人主页:http://www.
cs.
xmu.
edu.
cn/linziyu《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12课程提要第一章绪论第二章C语言基础第三章结构化程序设计第四章选择结构第五章循环结构程序设计第六章函数第七章编译预处理第八章数组第九章结构体、共用体和枚举类型第十章指针《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12第3章结构化程序设计3.
1结构化程序设计方法3.
2语句的概念3.
3程序的三种基本结构3.
4赋值语句3.
5输入输出函数3.
6顺序结构程序设计举例《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
1结构化程序设计方法结构化程序设计方法是一整套指导软件开发的方法,涵盖了系统分析、系统设计和程序设计这三个方面的内容.
采用自顶向下、逐步细化、模块化的方法进行程序设计强调程序设计风格和程序结构的规范化,提倡清晰的程序结构基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内.
具体实现步骤:–(1)按自顶向下逐步细化的方法对问题进行分析和设计;–(2)系统的模块设计;–(3)结构化编码.
《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
2语句的概念3.
2.
1表达式语句3.
2.
2控制语句3.
2.
3复合语句3.
2.
4空语句《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
2.
1表达式语句在C语言中,只要在任何表达式的结尾加上分号";",就构成了表达式语句,如:i=1,j=2,k=3;j+k;(合法但无效)i++;fun(j,j+k,6);《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
2.
2控制语句控制语句是程序中用来控制执行次序的语句,它能够影响其他语句的执行次序.
C语言提供了9种控制语句,分为3类:–(1)选择语句:if…else…,switch–(2)循环语句:while,do…while,for–(3)转向语句:break,continue,goto,return《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
2.
3复合语句复合语句是由大括号{}把一些语句括起来组成.
例如:{temp=x;x=y;y=temp;}复合语句在语法上相当于一个语句复合语句可以嵌套复合语句在编程中主要用于两种情形:–(1)语法要求用一条语句,但又难以用一条简单语句表达清楚的情形,如作为for、while语句等的内嵌语句–(2)形成局部化的封装体.
如块语句中定义的变量只在本块范围内可用.
注意:复合语句内的各条语句都必须以分号";"结尾,但在复合语句结束标志右大括号}后面则不能加分号.
《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
2.
4空语句没有表达式的语句称为空语句,即它是只有一个分号";"的语句;空语句也可看成是一个特殊的表达式语句,但不做任何事情作用是:用于语法上需要一条语句的地方,而该地方不需要做任何事情例如:for(i=1;imain(){intx=6,y=8,temp;printf("x=%d,y=%d\n",x,y);temp=x;//将x的初值赋予变量tempx=y;//仅改变变量x的值,y的值不变y=temp;//变量y被赋予新的值,原值被覆盖printf("x=%d,y=%d\n",x,y);}《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
4赋值语句例3.
4.
2输入一个4位整数,然后打印出它的4位数字的和#includevoidmain(){intn,a,b,c,d,sum;printf("Inputn:");scanf("%d",&n);a=n%10;//求个位数b=n/10%10;//求十位数c=n/100%10;//求百位数d=n/1000;//求千位数sum=a+b+c+d;printf("n=%d,sum=%d\n",n,sum);}《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5输入输出函数3.
5.
1格式输出函数printf3.
5.
2格式输入函数scanf3.
5.
3字符输出函数putchar()3.
5.
4字符输入函数getchar()《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
1格式输出函数printf3.
5.
1.
0printf概述3.
5.
1.
1整型格式控制符3.
5.
1.
2浮点型格式控制符3.
5.
1.
3字符型格式控制符3.
5.
1.
4字符串格式控制符《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
1.
0printf概述printf函数的调用形式为:printf("格式控制字符串",表达式1,表达式2,…,表达式n);当n=0时,调用形式:printf("格式控制字符串");格式控制符:总是由"%"字符开始,并以一个类型描述符结束,中间是一些可选的附加说明项.
完整格式如下:%[-0m.
nl/h]格式字符《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
1.
1整型格式控制符用于控制整型数据的输出格式(1)十进制形式:以十进制形式输出整型数据:–%d或%md用于基本整型–%ld或%mld用于长整型–%u或%mu用于无符号基本整型–%lu或%mlu用于无符号长整型(2)八进制形式:以八进制形式输出整型数据(无前缀0):–%o或%mo用于基本整型–%lo或%mlo用于长整型(3)十六进制形式:以十六进制形式输出整型数据(无前缀0x):–%x或%mx用于基本整型–%lx或%mlx用于长整型注意:m表示输出的整型数据所占总宽度(即列数).
如果数据的位数小于m,则左端补空格,若大于m,则按实际位数输出.
如果在格式控制符中没有用m来说明数据所占的宽度,则以输出数据的实际位数为准.
如:printf("%3d,%4d",a,b);若inta=12,b=12345,则输出结果为:12,12345《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
1.
2浮点型格式控制符以小数形式输出浮点型数据,格式控制符为:%m.
nf或%f其中,m表示输出数据所占的总宽度,包括小数点所占的一列,n表示小数点后面所占的位数.
注意:在C语言中,用于输出单精度浮点型数据和双精度浮点型数据的格式控制符是一样的.
double型数据输出使用%lf和%f无区别.
例3.
5.
3输出实数时指定小数位数#includemain(){floatf=234.
567;printf("%f\n",f);printf("%10.
2f\n",f);printf("%-10.
2f\n",f);printf("%.
2f\n",f);printf("%10f\n",f);}运行结果:234.
567001(系统默认输出全部整数和6位小数)234.
57234.
57234.
57234.
567001(占10位,浮点数在内存中存储误差)《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
1.
3字符型格式控制符用于说明字符型数据的输出格式.
其格式控制符为:%mc或%c其中,m表示输出的宽度,在输出字符的左边将要补m-1个空格例如:charc=A;printf("%5c",c);输出结果为"A"注意:一个整数,只要它的值在0-127范围内,也可以用字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;反之,一个字符数据也可以用整数形式输出.
例3.
5.
4字符数据的输出main(){charc='B';inti=66;printf("%c,%d\n",c,c);printf("%c,%d\n",i,i);}运行结果:B,66B,66《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
1.
4字符串格式控制符用来输出一个字符串.
(1)%s,按紧凑格式输出字符串例如:printf("%s%s","China","Beijing");输出字符串:ChinaBeijing(定界符双引号不输出)(2)%ms(3)%-ms(4)%m.
ns(5)%-m.
ns《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
2格式输入函数scanf当程序调用scanf函数时,用户可以直接从键盘向内存中的变量输入不同类型的数据.
其调用形式为:scanf(格式控制字符串,输入项地址列表)格式化字符参见教材78页表3.
5.
1.
注意:在使用scanf时,务必保证格式控制字符串中以%开头格式控制符的个数,与输入项地址表列的项数相同,且类型匹配,否则将产生不可预测的效果.
《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12(1)附加格式说明符m可以指定数据宽度scanf("%3d%3d",&a,&b);输入:123456(回车)系统自动把123截取给a,456截取给b(2)输入longint型数据必须用%ld,输入double型数据必须用%lf(3)附加格式符*使对应的输入数据不赋给相应变量doublea;intb;floatc;scanf("%f,%2d,%*d,%5f",&a,&b,&c);输入4.
6,25,123,2.
34567(回车)赋值后,a=0(double型使用%f是错误的),b=25,c=2.
345(4)注意逗号和空格的使用,不要使用'\n.
3.
5.
2格式输入函数scanf《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
2格式输入函数scanf例3.
5.
5用scanf函数输入数据main(){inta;floatb;doublec;scanf("%d%f%lf",&a,&b,&c);printf("a=%d,b=%f,c=%f\n",a,b,c);}运行时按以下方式输入a,b,c的值:63.
148.
967(回车)运行结果:a=6,b=3.
140000,c=8.
967000《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
3字符输出函数putchar()调用形式为:putchar(c);其中,c可以是字符型常量、字符型变量或整型变量功能:在屏幕当前光标位置处,显示c所表示的一个字符.
例3.
5.
6用putchar函数输出单个字符.
#include//*包含I/O标准库函数的头文件*/main(){chara,b,c;//定义字符型变量a,b,ca='O';b='K';c='!
';//对变量a,b,c进行赋值putchar(a);putchar(b);putchar(c);//输出OK!
putchar('\n');//输出换行putchar('\x41');putchar('\102');}运行结果:OK!
AB《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
5.
4字符输入函数getchar()字符输入函数getchar()没有参数,一般形式为:getchar();功能:接收从键盘输入的一个字符.
例3.
5.
7输入单个字符#includemain(){charc;inti;c=getchar();printf("c=%-4c",c);i=getchar();printf("i=%-3d",i);printf("c1=%-4c",getchar());}在运行时,如果从键盘输入3个字符;abc(回车).
运行结果:c=ai=98c1=c注意:上面getchar()函数被调用三次,分别得到字符'a','b','c',回车符还继续留在缓冲区里,如果再调用getchar()函数,得到的就是回车符.
97989910回车符'a''b''c'《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
6顺序结构程序设计举例例3.
6.
1输入长方体的长、宽、高,求长方体的体积和表面积.
#includemain(){floatx,y,z,v,s;printf("Inputx,y,z:\n");scanf("%f,%f,%f",&x,&y,&z);v=x*y*z;s=2*(x*y+x*z+y*z);printf("x=%8.
3f,y=%8.
3f,z=%8.
3f,v=%8.
3f\n",x,y,z,v);printf("s=%8.
2f\n",s);}运行程序:Inputx,y,z键盘输入2.
2,3.
3,4.
4(回车)屏幕显示为:x=2.
200,y=3.
300,z=4.
400,v=31.
944s=62.
92《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
6顺序结构程序设计举例例3.
6.
2编写并运行一个程序,打印出两个通过交互方式输入的整数的和、差、积、商及余数.
#includemain(){intm,n,a,b,c,d,e;printf("Inputm,n:\n");scanf("%d%d",&m,&n);a=m+n;b=m-n;c=m*n;d=m/n;e=m%n;printf("m+n=%d\tm-n=%d\tm*n=%d\tm/n=%d\tm%%n=%d\n",a,b,c,d,e);}运行程序:Inputm,n:键盘输入:53(回车)屏幕显示:m+n=8m-n=2m*n=15m/n=1m%n=2《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/123.
6顺序结构程序设计举例例3.
6.
3求ax2+bx+c=0方程的根.
#include#includemain(){floata,b,c,disc,x1,x2,p,q;printf("Inputa,b,c:\n");scanf("%f%f%f",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf("x1=%5.
2f\nx2=%5.
2f\n",x1,x2);}运行程序:Inputa,b,c:键盘输入:11-2(回车)屏幕显示;x1=1.
00x2=-2.
00《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著版次:2011年10月第2版ISBN:978-7-302-26972-4定价:35元课程教材(2012-2013第2学期)《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12课程和班级网站(2012-2013第2学期)课程介绍网站:http://dblab.
xmu.
edu.
cn/node/124班级网站:http://dblab.
xmu.
edu.
cn/node/347《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12课程教师和助教(2012-2013第2学期)单位:厦门大学信息科学与技术学院计算机科学系办公地点:福建省厦门市思明区厦门大学海韵园E-mail:ziyulin@xmu.
edu.
cn个人主页:http://www.
cs.
xmu.
edu.
cn/linziyu主讲教师:林子雨单位:厦门大学计算机科学系2012级硕士研究生E-mail:376339705@qq.
com手机:18020761782助教:刘颖杰《C语言程序设计》厦门大学计算机科学系林子雨ziyulin@xmu.
edu.
cn2013/3/12DepartmentofComputerScience,XiamenUniversity,March12,2013
百纵科技怎么样?百纵科技国人商家,ISP ICP 电信增值许可证的正规公司,近期上线美国C3机房洛杉矶独立服务器,大带宽/高配置多ip站群服务器。百纵科技拥有专业技术售后团队,机器支持自动化,自助安装系统 重启,开机交付时间 30分钟内交付!美国洛杉矶高防服务器配置特点: 硬件配置高 线路稳定 洛杉矶C3机房等级T4 平价销售,支持免费测试,美国独服适合做站,满意付款。点击进入:百纵科技官方网站地...
DediPath 商家成立时间也不过三五年,商家提供的云服务器产品有包括KVM和OPENVZ架构的VPS主机。翻看前面的文章有几次提到这个商家其中机房还是比较多的。其实对于OPENVZ架构的VPS主机以前我们是遇到比较多,只不过这几年很多商家都陆续的全部用KVM和XEN架构替代。这次DediPath商家有基于OPENVZ架构提供低价的VPS主机。这次四折的促销活动不包括512MB内存方案。第一、D...
阿里云香港配置图提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 阿里云香港 16核32G 20M 这款产品,单单说价格上就是十分的离谱原价8631元/月的现价只要 999元 而且还有个8折循环优惠。废话不多说直接进入正题。优惠时间 2021年8月20日-2021年9月20日 优惠码 wn789 8折优惠阿里云香港BGP专线 16核32G 10M带宽 优惠购买 399元购买链接阿里云...
如何制作个人网页为你推荐
mediawikiMediaWiki的权限及设置centos6.5centos 6.5服务器基本配置有哪些苹果appstore宕机苹果无法连接到appstore怎么办cuteftp什么是CuteFTP?如何将网站内容上传(FTP)到网站空间?sqlserver2000挂起安装sqlserver2000时总提示有挂起操作!重庆杨家坪猪肉摊主杀人昨天重庆九龙坡出了严重交通事故吗piaonimai跪求朴妮唛的的韩文歌,不知道是哪一部的,第一首放的是Girl's Day《Oh! My God》。求第三首韩文歌曲,一男一女唱的。正大天地网天地网微信移动办公平台缤纷网缤纷的意思是什么curl扩展大神帮忙看下centos 7.2 系统 php7.0.12的 curl 扩展怎么开启,谢谢啦
论坛虚拟主机 免费网站域名注册 国际域名抢注 免费linux主机 vps代理 重庆vps租用 美国加州vps godaddy域名解析 dns是什么 星星海 68.168.16.150 建站代码 申请个人网站 已备案删除域名 免费吧 河南移动网 百度云加速 上海电信测速 97rb 北京主机托管 更多