第4章 顺序程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第四章最简单的C程序设计24.1C语句概述引言:C程序结构框图C程序源程序文件1…源程序文件i…源程序文件n预编译命令函数1…函数m说明部分执行部分(语句)3C语句的种类共六类:控制语句:流程控制:条件、循环辅助控制:break、continue、goto、return、switch空语句:仅一个“;”构成。表达式语句:一个表达式后跟一个“;”构成。复合语句:用“{}”括起来的一些语句。函数调用语句:printf(“Hello!\n”);说明语句:inti,j;4空语句一般形式:;含义:什么也不做。说明:凡是在C程序中出现语句的地方都可以用一个分号来代替一条语句。作用:–转折点。–循环语句中的空循环体。5表达式语句一般形式:表达式;说明:“表达式”可以是任何表达式,如常量、变量、函数调用等。举例:i++;a=6;b=a%2;printf(“Hello”);6复合语句一般形式:{语句1;语句2;…;语句n;}说明:–复合语句在功能上相当于一条语句。–最后一个分号的位置不在花括号外。–复合语句多出现在函数及流程控制语句中。7数据的输入、输出C程序中的输入输出通过函数调用完成。数据输出库函数–字符输出函数putchar()–格式输出函数printf()数据输入库函数–格式输入函数scanf()–字符输入函数getchar()8字符输出函数putchar一般形式:putchar(c);功能:输出变量c所代表的一个字符。说明:–c为字符型变量或整型变量。–使用时必须在程序开始处注明:#includestdio.h9『例4.1』putchar使用。#includestdio.hmain(){chara,b,c;a='O';b='K';c='\n';putchar(a);putchar(b);putchar(c);}OK10格式输出函数printf一般形式:printf(“格式控制”,输出表);功能:按照指定格式输出指定数据。举例:printf(“Answer:%d\n”,112%3);“格式控制”是双引号括起来的格式控制转换字符串“输出表”中的数据,要与“格式控制”中的格式字符一一对应11格式控制的组成:格式说明。–由“%”后跟格式字符组成。–作用是将输出数据转换为指定格式输出。字符串。–原样输出。转义字符。–对输出形式进行控制。printf(“Answer:%d\n”,112%3);12『例4.2』main(){inta,b,c;a=4;b=5;c=a*b;printf(“a*b=%d\n”,c);}程序执行结果:a*b=2013格式说明符简介%d--以带符号的十进制形式输出整数%o--以无符号的八进制形式输出整数%x--以无符号的十六进制形式输出整数%u--以无符号的十进制形式输出整数%c--以字符形式输出单个字符%s--输出字符串%f--以小数点形式输出单、双精度实数%e--以标准指数形式输出单、双精度实数%g--选用输出宽度较小的格式输出实数14d格式符功能以带符号的十进制形式输出整数。具体用法–%d:按照整型数据的实际长度输出。–%md:以m指定的字段宽度输出,右对齐。–%ld:输出长整型数据。–%mld:输出指定宽度的长整型数据。程序范例15『例4.3』执行下面程序,注意输出格式:main(){inta=12,b=-3456;longintc=123456;printf(%5d\n,a);printf(%d\n,b);printf(%ld\n,c);printf(%d\n,c);}运行结果:12-3456123456-761616o格式符和x格式符功能:将内存单元中的二进制数补码直接转换成八进制数或十六进制数输出,不带符号位。说明:–同“%d”类似,可以用“%mo”或“%mx”指定字段输出宽度。–对长整型数可以用“%lo”或“%lx”格式输出。17机器数(带符号)的表示正数:原码、反码及补码一样,即:符号位+绝对值负数:原码:符号位+绝对值反码:符号位+对原码取反补码:符号位:对原码取反+1举例:设有inta=1,b=-1;a的表示:0000000000000001(原、反、补)b的表示:1000000000000001(原码)1111111111111110(反码)1111111111111111(补码)18『例4.4』main(){inta=1,b=-1;printf(a:%8d,%8o,%8x\n,a,a,a);printf(”b:%8d,%8o,%8x\n,b,b,b);}运行结果:a:1,1,1b:-1,177777,ffff19u格式符功能:以无符号的十进制形式输出整数。说明:–有符号数可用“%u”格式输出;–无符号数可用“%d”、“%o”、“%x”格式输出。举例:inti=-1;printf(“%d,%u”,i,i);输出结果:-1,6553520c格式符功能:输出单个ASCII码字符。说明:c格式也可用于输出一个范围在0~255之间的整数,其值必然对应某个ASCII字符。『例4.5』main(){charc='M';inti;i=c+32;printf(%c,%d\n,c,c);printf(%c,%d\n,i,i);}M,77m,10921s格式符分类:%s:直接输出指定字符串。%ms:输出字符串占m列,右对齐。%-ms:输出字符串占m列,左对齐。%m.ns:输出字符串前n个字符,占m列,右对齐。%-m.ns:输出字符串前n个字符,占m列,左对齐。程序范例22『例4.6』s格式符使用。main(){printf(%3s,%7.2s,%.4s,%-5.3s\n,China,China,China,China);}运行结果China,Ch,Chin,Chi23f格式符功能:以小数点形式输出单、双精度实数。分类:–%f:数据的整数部分全部输出,小数部分输出6位。–%m.nf:输出数据共占m列,小数占n位,右对齐。–%-m.nf:输出数据共占m列,小数占n位,左对齐。注意:单精度实数的有效位数一般为7位;双精度实数的有效位数为16位。程序范例24『例4.7』f格式符使用。main(){floatx,y;x=111111.111;y=222222.222;printf(%f\n,x+y);}运行结果:333333.32812525e格式符功能:以指数形式输出单、双精度实数。“%e”输出数据共占13位:例:printf(“%e”,12.3);12.31.23×1011.230000e+001整数1指数3小数点1指数符号1小数6e126g格式符功能:根据数值自动选择f格式或e格式中宽度较小的一种输出实数。举例:floatx=12.345;printf(“%f,%e,%g”,x,x,x);结果:12.345000,1.23450e+01,12.34527printf函数说明:格式字符要用小写字母。如若输出字符“%”,在“格式控制”中用连续两个“%”即可。当“格式控制”中格式符个数少于输出表中的输出项时,多余的输出项不予输出。当“格式符”多于输出项时,结果为意外值。下面介绍格式输入函数getchar()与scanf()28字符输入函数getchar一般形式:getchar()功能:要求用户从终端(键盘)输入单个字符。返回值:从输入设备上得到的字符。说明:该函数为无参函数。使用该函数,必须在程序开头用预编译命令:#includestdio.h29『例4.8』getchar函数使用。#includestdio.hmain(){charc;printf(Inputanuppercaseletter:\n);c=getchar();putchar(c+32);}运行程序时,系统等待用户输入,注意回车也是一个合法字符。30格式输入函数scanf一般形式:scanf(格式控制,地址表);功能:要求用户从键盘上输入指定类型的任意多数据。说明:–“格式控制”部分同printf函数。–“地址表”由地址组成,表明每个输入项应在存储单元的首地址,如&a。–执行输入操作时,用户应使用空格或回车等相应分隔符间隔不同数据。31『例4.9』scanf函数使用。main(){inta,b;scanf(%d%d,&a,&b);printf(%d\n,a*b);}运行情况:23451035如果引号部分变为“%d,%d”,在输入数据时也必须写成“23,45”32scanf函数说明:scanf函数中不使用“%u”。格式说明中指定输入数据的宽度时,系统自动按需要截取所需数据。注意格式串中其它字符……scanf函数不能规定输入数据的精度。在程序执行过程中输入数据时,以下情况认为数据结束:–遇“Space”,或遇“Enter”,或遇“Tab”–达到指定的字段宽度–有非法输入33『例4.10』根据三角形的三边长,求其面积。设三角形三边长为a、b、c,则三角形面积公式:2cbap))()((cpbpapps提示:C程序中求平方根,需调用数学库函数sqrt。34程序4.10#includemath.hmain(){floata,b,c,p,s;scanf(%f%f%f,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(a=%6.2f,b=%6.2f,c=%6.2f\n,a,b,c);printf(s=%7.2f\n,s);}345a=3.00,b=4.00,c=5.00s=6.00运行情况35作业本章习题5~10。上述作业先思考,后上机验证通过。36已知程序中有声明inta;longb;,若需要接收从键盘输入的电话号码字符串(010)64782656(其中是010是区号,64782656是电话号码),并将其中的区号、电话号码分别存储到变量a、b中,则实现该功能的输入语句应为scanf(______________,&a,&b);。%d%ld37#includestdio.hmain(){inta;floatb;scanf(%3d%f,&a,&b);printf(%d\t%f,a,b);}若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中,不能达到该要求的输入数据是________。(_代表“空格”键,CR代表“回车”键)A.45_678CRB.45CR678CRC.45,678CRD.045678CRC38已知有声明:floatd=1;doublef=1;longg;和语句:printf(______,g=10+'i'+(int)d*f);为了正确地以十进制形式输出printf参数表中第二个参数(表达式)的值,则在第一个参数中的下划线位置处应填写的格式转换说明符是__________。%ld

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功