




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
顺序结构的程序设计第三章C语言程序设计2/6/20231《C语言程序设计》-第三章3.1顺序结构的语句3.2字符数据的输入和输出3.3输出函数printf()3.4输入函数scanf()第3章顺序结构的程序设计2/6/20232《C语言程序设计》-第三章3.1
顺序结构顺序结构程序就是按书写顺序执行的语句构成的程序段。语句1语句22/6/20233《C语言程序设计》-第三章3.1顺序结构的语句3.1.1表达式语句、空语句和赋值语句3.1.2复合语句
2/6/20234《C语言程序设计》-第三章1.表达式语句
C语言中的表达式语句是由一个表达式加上一个分号组成。其格式为:
表达式;例如:
x=5是一个赋值表达式,而其后加一个分号,它就是赋值语句了:x=5;任何表达式加上分号都是一个语句,
例如:printf(“ABCD”);/*函数调用语句,输出字串ABCD*/i++;/*语句使变量i增加1*/x+y;/*语句的操作无实际意义*/
以上都是合法的语句。但是x+y操作的和并没有保存起来,所以这个语句无实际意义。3.1.1表达式语句、空语句和赋值语句2/6/20235《C语言程序设计》-第三章2.空语句在C语言中,只有一个分号就构成一个语句,称为空语句:
;空语句在语法上占据一个语句的位置,但是它不执行任何功能。3.赋值语句
C语言中的赋值语句是由赋值表达式加上一个分号构成,其格式为:
变量=表达式;
赋值语句的功能是先求赋值运算符右部表达式的值,然后把这个值赋给左部的变量。2/6/20236《C语言程序设计》-第三章
(1)赋值语句中的“=”叫做赋值号,是一种带有方向性的操作命令,与数学中的等号“=”具有不同的意义。如等式X=X+1在数学中是不成立的,但在赋值语句中X=X+1是有意义的,它表示把变量X中原来的值与1相加后(新值)送到变量X中去,同时X中原有的值就被新值替换了。
(2)赋值号左端必须是一个变量,不能是常量或表达式。一行内可写多个赋值语句,各语句末尾必须用分号结束。
如:a=20;b=30;c=40;
(3)赋值语句可以改变变量的值。在一个程序中,如果多次给一个变量赋值,变量的值取的是最后一次赋的值。例如:x=2;x=4;执行第一语句后,x值为2,执行第二语句后x为4,因此,最后x的值为4。赋值语句说明:
2/6/20237《C语言程序设计》-第三章【例3.1】设a单元的值为5,b单元的值为10,试编写一个程序,把两单元的内容互换。程序如下:main(){
inta=5,b=10,s;s=a;/*变量a的值送给变量s,暂时存储*/a=b;/*变量b的值送给变量a,此时a与b的值相同*/b=s;/*变量s的值送给变量b,a与b的值交换*/
printf("a=%d,b=%d\n",a,b);}运行结果:a=10b=52/6/20238《C语言程序设计》-第三章10ab1052/6/20239《C语言程序设计》-第三章
abc512351052/6/202310《C语言程序设计》-第三章3.1.2复合语句
复合语句是由花括号“{}”括起的多个语句组成,有时也称为分程序。复合语句的一般格式为:
{
内部数据说明;
执行语句;}
复合语句在语法上等价于一个语句。
2/6/202311《C语言程序设计》-第三章[例3.2]
复合语句举例。main(){inta=10;printf("a=%d\n",a);
{inta=20;printf("a=%d\n",a);}printf("a=%d\n",a);}a=10a=20a=102/6/202312《C语言程序设计》-第三章3.2字符数据的输入和输出
C语言本身并不提供输入输出操作的语句,C程序中的输入和输出是用一组库函数来完成的。本节介绍最常用的2个标准输入输出函数putchar函数和getchar函数。2/6/202313《C语言程序设计》-第三章3.2.1字符输出函数putchar()
putchar()函数的作用是把一个字符输出到标准输出设备(通常指显示器或打印机)上,putchar函数的一般调用形式为:
putchar(ch);
功能:向显示器或打印机输出一个字符。说明:putchar是函数名,ch是函数的参数,该参数可以是一个整型变量或一个字符型变量。ch也可以是整型常量或字符常量。注意,ch也可以是转义字符常量,并且经常用putchar函数来输出一些特殊的控制符,例如,用putchar(’\n’)输出换行,用putchar(’\r’)输出回车、跳格输出用putchar(’\t’)、退格输出用putchar(’\b’)等等。2/6/202314《C语言程序设计》-第三章【例3.3】输出字符B(变量为字符型),用转义字符输出换行。#include"stdio.h"main(){charc;c=’B’;
putchar(c);/*输出字符型变量c的值*/putchar(’\n’);/*转义字符常量\n输出一个换行*/
putchar(’B’);/*输出字符型常量B的值*/}运行结果:BB2/6/202315《C语言程序设计》-第三章【例3.4】输出字符B(变量为整型),用转义字符输出换行。#include"stdio.h"main(){intc;c=66;putchar(c);/*输出字符型变量c的值*/putchar(’\t’);/*转义字符常量\t输出一个换行*/putchar(66);/*输出66ASCII字符B*/}运行结果:BB2/6/202316《C语言程序设计》-第三章3.2.2字符输入函数getchar()getchar()函数的作用是从键盘上读入一个字符,getchar()函数的一般调用形式:getchar();功能:从键盘接收一个字符。说明:(1)getchar是函数名,函数本身没有参数,其函数值就是从输入设备得到的字符。(2)等待输入字符的应答是键入一个需要的字符,按回车键,则程序执行下一个语句。2/6/202317《C语言程序设计》-第三章【例3.5】
输入一字符B,变量是字符型。#include"stdio.h"main(){charc;c=getchar();putchar(c);}
运行输入:
B/*输入字符B后,按回车键*/运行结果:
B/*输出值*/2/6/202318《C语言程序设计》-第三章【例3.6】
输入一字符B,变量是整型。#include"stdio.h"main(){
intc;c=getchar();/*从键盘接收一个字符送给整型变量c*/
putchar(c);/*输出整型变量c的值*/}运行输入:
B运行结果:B2/6/202319《C语言程序设计》-第三章【例3.7】
输入一字符B。#include"stdio.h"main(){
putchar(getchar());/*输出从键盘接收一个字符*/}运行输入:
B运行结果:Bch=getchar();
putchar(ch);2/6/202320《C语言程序设计》-第三章3.3输出函数printf()
不需要预编译命令。功能:向输出设备(显示器或打印机)输出有一定格式的任意数据。调用形式:printf(格式控制,输出项表);
2/6/202321《C语言程序设计》-第三章printf(格式控制,输出项表);
普通字符(原样输出)
格式说明
%+/-0m.nl格式字符右对齐左对齐最小宽度左补0小数位数长整型d符十整o无八整x无16整c字符s字串f小数e指数2/6/202322《C语言程序设计》-第三章格式说明
符号
作用
%d
十进制有符号整数
%u
十进制无符号整数
%f
浮点数
%s
字符串
%c
单个字符
%p
输出变量的内存地址
%e
指数形式的浮点数
%x,%X
无符号以十六进制表示的整数
%0
无符号以八进制表示的整数
%g
自动选择合适的表示法
2/6/202323《C语言程序设计》-第三章d,ix,Xoucse,Efg%%十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);unsigneda=255;printf(“%x”,a);unsigneda=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%说明 格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出表格2/6/202324《C语言程序设计》-第三章.n对实数,指定小数点后位数(四舍五入)修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l附加格式说明符(修饰符)对字符串,指定实际输出位数2/6/202325《C语言程序设计》-第三章例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);printf(“%0+10.2f\n”,f);0、+例inta=123;
printf(“%o,%#o,%X,%#X\n”,a,a,a,a);
例#例longa=65536;
printf(“%d\n”,a,a);printf(“%8ld\n”,a);
例l0000
00
00
00
00
00010000
00
00
00
00
00
00//00001234//0000123.46//000+1234//000+123.46//173,0173,7B,0X7B//0,65536例2/6/202326《C语言程序设计》-第三章输出格式的解释(1)%m.nf:对浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。(2)%m.ns:m是输出的长度,n是左取串的长度。2/6/202327《C语言程序设计》-第三章(3).可以控制输出左对齐或右对齐,即在“%”和字母之间加入一个“-”号可
说明输出为左对齐,否则为右对齐。
例如:
%-7d
表示输出7位整数左对齐
%-10s表示输出10个字符左对齐
(4)若想在输出值前加一些0,就应在场宽项前加个0。
例如:
%04d
表示在输出一个小于4位的数值时,将在前面补0使其总宽度为4位。
(5)当“-”和“0”同时出现时,空位补0失效。
2/6/202328《C语言程序设计》-第三章
一些特殊规定字符
字符
作用
\n
换行
\f
清屏并换页
\r
回车
\t
Tab符
\xhh
表示一个ASCII码用16进表示,其中hh是1到2个16进制数
2/6/202329《C语言程序设计》-第三章【例3.8】
以不同的进制数输出同一个整型数据。main(){
intx=125;printf("1:%d\n",x);/*输出十进制整数*/printf("2:%x\n",x);/*输出十六进制整数*/printf("3:%o\n",x);/*输出八进制整数*/}运行结果:1:1252:7D3:1752/6/202330《C语言程序设计》-第三章
[例3.9]输出格式举例。
main(){charc=’a’;charstr[]=“seeyou”;
inti=1234;floatx=123.456789;floaty=1.2;
printf(“1:%c,%s,%d,%f,%e,%f\n”,c,str,i,x,x,y);
printf(“2:%4c,%10s,%6d,%12f,%15e,%10f\n”,c,str,i,x,x,y);
printf(“3:%-4c,%-10s,%-6d,%-12f,%-15e,%-10f\n”,c,str,i,x,x,y);
printf(“4:%0c,%6s,%3d,%9f,%10e,%2f\n”,c,str,i,x,x,y);
printf(“5:%12.2f\n”,x);
printf(“6:%.2f\n”,x);
printf(“7:%10.4f\n”,y);
printf(“8:%8.3s,%8.0s\n”,str,str);
printf(“9:%%d%d\n”,i);}2/6/202331《C语言程序设计》-第三章运行结果:1:a,seeyou,1234,123.456787,1.23457e+02,1.2000002:a,seeyou,1234,123.456787,1.23457e+02,1.2000003:a,seeyou,1234,123.456787,1.23457e+02,1.2000004:a,seeyou,1234,123.456787,1.23457e+02,1.2000005:123.466:123.467:1.20008:see,9:%d12342/6/202332《C语言程序设计》-第三章调用printf函数时的注意事项在格式控制串中,格式说明与输出项从左到右在类型上必须一一对应匹配。格式说明与输出项的个数应该相同除了合法的格式说明外,可以包含任意的合法字符如果需要输出百分号%,则应该在格式控制串中用两个连续的百分号%%来表示在输出语句中改变输出变量的值,则不能保证先输出的值printf函数的返回值通常是本次调用中输出字符的个数。2/6/202333《C语言程序设计》-第三章3.4输入函数scanf()
不需要预编译命令。功能:把从终端(键盘)输入的数据传送给对应的变量。调用形式:
scanf(格式控制,输入项地址表);
2/6/202334《C语言程序设计》-第三章scanf(格式控制,输入项地址表);
普通字符(原样输入)
格式说明
%mhl*格式字符最小宽度短整形不赋值长整形d符十整o无八整x无16整c字符s字串f小六e指六2/6/202335《C语言程序设计》-第三章附加格式说明符(修饰符)l修饰符功能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);
输入19991015
则1999yy,10mm,15dd修饰符功能2/6/202336《C语言程序设计》-第三章一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);
printf(“a=%d,b=%x,c=%o\n”,a,b,c);
输入123123123
输出a=123,b=53,c=443例scanf(“%d:%d:%d”,&h,&m,&s);
输入12:30:45
则12h,30m,45s例scanf(“%d,%d”,&a,&b)
输入3,4
则3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
输入a=12,b=24,c=36输入分隔符的指定
2/6/202337《C语言程序设计》-第三章如:chara,b,c;
(1)scanf(“%c%c%c”,&a,&b,&c);
输入TH↙
abc(2)scanf(“%c%c%c”,&a,&b,&c);输入ABC↙或A□□□B□□□C↙用“%c”格式符时,空格和转义字符作为有效字符输入,输入的字符之间没有间格符。如scanf(“%c%c%c”,&c1,&c2,&c3);
若输入abc
则ac1,c2,bc32/6/202338《C语言程序设计》-第三章(3)当交叉输入数据和字符数据时,输入项表中交替出现字符变量和数值变量。inta1,a2;charc1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);输入10A□20B输入10□A□20□B2/6/202339《C语言程序设计》-第三章
输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入如scanf(“%d%c%f”,&a,&b,&c);
若输入1234a123o.26
则1234a,‘a’b,123c输入函数留下的“垃圾”:例intx;charch;
scanf(“%d”,&x);
ch=getchar();
printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10例intx;charch;
scanf(“%d”,&x);
scanf(“%c”,&ch);
printf(“x=%d,ch=%d\n”,x,ch);执行:123输出:x=123,ch=10解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容
(3)用格式串中空格或“%*c”来“吃掉”例intx;charch;
scanf(“%d”,&x);
scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);
说明:2/6/202340《C语言程序设计》-第三章/*ch3_12.c*/#include<math.h>#include<stdio.h>main(){floata,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);}输入:3,4,6输出:a=3.00,b=4.00,c=6.00s=6.50area=5.33文件包含预处理命令变量定义输入数据输出数据例输入三角形边长,求面积2/6/202341《C语言程序设计》-第三章/*ch3_13.c*/#include"stdio.h"main(){charc1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;printf("%c,%d\n",c2,c2);}输入:A
输出:A,65a,97例从键盘输入大写字母,用小写字母输出2/6/202342《C语言程序设计》-第三章(一)格式说明(1)每个格式说明都必须用%开头,以一个格式字符作为结束。(2)输入long整数时,%ld,输入double型数时,%lf,否则得不到正确数据。(3)格式说明的类型与输入项的类型,应该一一对应匹配,若不匹配系统并不给出出错信息,但不可能得到正确的数据。(4)在scanf函数中的格式字符前可以用一个整数指定输入数据据占宽度,但不可以对实型数指定小数位的宽度。如:inta;floatb;scanf(“%5d”,&a);
scanf(“%5.2f”,&b);2/6/202343《C语言程序设计》-第三章(5)格式说明个数与输入项的个数相同,①格式个数<输入项个数scanf函数结束输入,多余的数据项并没有从终端接受新的数据。②格式个数>输入项个数scanf函数同样也结束输入.
如:scanf(“%d%d%d”,&a,&b);
scanf(“%d%d”,&a,&b,&c);(6)输入数据<输入项等待输入直到满足要求为止。输入数据>输入项多余的数据并不消失,而是留作下一个输入操作时的输入数据。(7)跳过输入数据的方法,%与格式符之间加*如:inta1,a2,a3;
scanf(“%d%*d%d%d”,&a1,&a2,&a3);10203040a1a2a3(8)scanf的返回值为得到输入值的输入项的个数。2/6/202344《C语言程序设计》-第三章【例3.10】
输入格式举例。main(){charch;
inti;charstr[80];floatx;
scanf("%c%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论