第3章顺序结构程序设计3.1赋值语句赋值语句是由赋值表达式再加上分号构成的表达式语句。赋值语句的一般形式为:变量=表达式;赋值语句的功能和特点都与赋值表达式相同。第3章顺序结构程序设计3.2输入输出函数C语言要求在使用输入/输出库函数之前必须包含stdio.h文件。包含形式如下:#includestdio.h或#includestdio.h第3章顺序结构程序设计3.2输入输出函数3.2.1字符数据输入输出函数1.字符数据输入函数格式:getchar()功能:从键盘上接收输入的一个字符。例3.1从键盘输入一个字符,并将其存入字符型变量c中。#includestdio.hmain(){charc;c=getchar();}其中c是字符型(char)或整型(int)变量。第3章顺序结构程序设计3.2输入输出函数3.2.1字符数据输入输出函数1.字符数据输入函数2.字符数据输出函数格式:putchar(c)功能:向终端输出一个字符。说明:(1)c可以是字符型,也可以是整型。(2)c可以是变量,可以是常量,也可以是表达式。第3章顺序结构程序设计3.2输入输出函数3.2.1字符数据输入输出函数1.字符数据输入函数2.字符数据输出函数例3.2从键盘输入一个字符,在屏幕上显示出来。#includestdio.hmain(){charc;c=getchar();/*从键盘输入一个字符*/putchar(c);/*在屏幕上显示一个字符*/}第3章顺序结构程序设计3.2输入输出函数3.2.2格式化输入输出函数1.格式化输出函数格式:printf(格式控制,输出项表);功能:将“输出项表”中给出的输出项按“格式控制”中规定的输出格式输出到标准输出设备。说明:(1)输出项表中以逗号分隔列出需要输出的项(变量、常量、或表达式)。(2)格式控制是用双引号括起来的字符串,包括普通字符和格式说明。普通字符:是需要原样输出的字符(包括转义字符)。格式说明:由“%“和格式符组成,如%c和%f等,作用是将要输出的数据转换为指定格式后输出。printf函数中使用的格式字符如表所示。格式字符功能d按十进制形式输出带符号的整数(正数前无+号)o按八进制形式无符号输出(无前导o)ox按十六进制形式无符号输出(无前导ox)u按十进制无符号形式输出c按字符形式输出一个字符f按十进制形式输出单、双精度浮点数(默认6位小数)e按指数形式输出单、双精度浮点数s输出以‘\0’结尾的字符串ld长整型输出lo长八进制整型输出lx长十六进制整型输出lu按无符号长整型输出m格式字符按宽度m输出,右对齐-m格式字符按宽度m输出,左对齐m,n格式字符按宽度m,n位小数或截取字符串前n个字符输出,右对齐-m,n格式字符按宽度m,n位小数或截取字符串前n个字符输出,左对齐例3.3#includestdio.hmain(){inta=123;longb=135790;printf(a=%d\n,a);printf(a=%4d\n,a);printf(a=%2d\n,a);printf(b=%ld,b);}屏幕显示结果:a=123a=123a=123b=135790例3.4#includestdio.hmain(){inta=-1;charc='a';printf(%d,%o,%x,%u\n,a,a,a,a);printf(%d,%c\n,c,c);}屏幕显示结果:-1,177777,ffff,6553597,a例3.5#includestdio.hmain(){printf(%s,%7.2s\n,CHINA,CHINA);printf(%.4s,%-5.3s\n,CHINA,CHINA);}屏幕显示结果:CHINA,-----CHCHIN,CHI--(注:-表示空格。)例3.6#includestdio.hmain(){floata=1.23;printf(%f,%7.2f,%2.1f\n,a,a,a);}屏幕显示结果:1.230000,---1.23,1.2第3章顺序结构程序设计3.2输入输出函数3.2.2格式化输入输出函数1.格式化输出函数2.格式化输入函数格式:scanf(格式控制,地址表);功能:用来输入任何类型数据,可同时输入多个不同类型的数据。说明:(1)地址表中每项以逗号分隔,列出需要输入的项(变量)的地址,而不是变量名。(2)同printf函数一样,格式控制是用双引号括起来的字符串。包括普通字符和格式说明。普通字符:是需要原样输入的字符,一般不提倡使用。格式说明:由%和格式符组成,如%c和%f等,作用是规定按指定的格式输入数据。scanf函数中使用的格式字符如表所示。格式字符功能d输入十进制整数o输入八进制整数x输入十六进制整数c输入单个字符s输入字符串f,e输入浮点数(小数或指数形式)hd,ho,hx输入短整型(十进制,八进制,十六进制)数据ld,lo,lx输入长整型(十进制,八进制,十六进制)数据lf,le输入长浮点型数据(双精度)*表示本输入项在读入后不赋给相应的变量(3)scanf中“格式控制”中的格式字符必须与“格式控制”后的变量的类型匹配。例如:inta,b;chard;floatw;scanf(%d%o,&a,&b);scanf(%c,&d);scanf(%f,&w);(4)使用%c时,空格和转义字符均作为有效字符输入。例如:chara,b;scanf(%c%c,&a,&b);输入:xy结果:a='x'b=''(5)如果格式说明符之间没有任何字符,则在输入非字符型数据时,两个数据之间要使用空格、Tab或回车键做间隔;如果格式说明符之间包含其他字符,则输入数据时,应输入与这些字符相同的字符做间隔。例如:scanf(%d,%f,%c,&i,&f,&c);在输入数据时,应采用如下形式:20,7.8,a(6)可以在格式说明符的前面指定输入数据所占的宽度,系统将自动按此宽度来截取所需的数据。例如:inta,b;chard,w;scanf(%d%d,&a,&b);scanf(%3d%d,&a,&b);scanf(%d%c%c,&a,&d,&w);输入:123423123456123a1结果:a=1234b=23a=123b=456a=123d=‘a’w=‘1’第3章顺序结构程序设计3.3注释注释行的作用是增强程序的可读性。注释行的一般形式:/*注释内容*/其中,注释内容是对程序段或程序行的注释说明。注释行可以作为单独的一行出现在程序中,也可以出现在某个语句后,在编译时忽略。第3章顺序结构程序设计3.3注释例3.7计算a、b两数据之和的C程序。#includestdio.hmain()/*主函数*/{inta,b,s;/*定义a,b,s三个整型变量*/printf(a,b=?);scanf(%d,%d,&a,&b);/*读入两个整数,存入变量a和b中*/s=a+b;/*计算a、b两数据之和s的值*/printf(s=%d\n,s);/*输出和s的值*/}第3章顺序结构程序设计3.4应用举例例3.8求一个同学三门功课的平均成绩。开始输入a,b,c计算v输出v结束分析:已知:一个同学三门功课的成绩(用三个变量a,b,c来存放)求:该同学的平均成绩(用一个变量v来存放)处理:用赋值表达式v=(a+b+c)/3.0来计算v的值。算法用如图所示的流程图表示:第3章顺序结构程序设计3.4应用举例例3.8求一个同学三门功课的平均成绩。开始输入a,b,c计算v输出v结束程序:#includestdio.hmain(){inta,b,c;floatv;printf(a,b,c=?);scanf(%d,%d,%d,&a,&b,&c);v=(a+b+c)/3.0;printf(v=%f\n,v);}第3章顺序结构程序设计3.4应用举例开始输入c计算c输出c结束例3.9将键盘上输入的大写字母转换成小写字母输出。分析:已知:键盘上输入的大写字母(用一个变量c来存放)求:对应的小写字母(仍用变量c来存放)处理:用赋值表达式c=c+32来求小写字母。算法用如图所示的流程图表示:第3章顺序结构程序设计3.4应用举例开始输入c计算c输出c结束例3.9将键盘上输入的大写字母转换成小写字母输出。程序:#includestdio.hmain(){charc;printf(c=?);scanf(%c,&c);/*或c=getchar();*/c=c+32;printf(c=%c\n,c);/*或putchar(c);*/}第3章顺序结构程序设计3.4应用举例开始输入a,b交换a,b输出a,b结束例3.10从键盘上输入两变量的值,再交换两变量的值输出。分析:已知:从键盘上输入的两变量的原始值(用两个变量a和b来存放)求:交换两变量的值(仍用变量a和b来存放)处理:(1)要借助一个中间变量来实现(设为t)。(2)用逗号表达式t=a,a=b,b=t来交换a,b两变量的值。算法用如图所示的流程图表示:第3章顺序结构程序设计3.4应用举例开始输入a,b交换a,b输出a,b结束例3.10从键盘上输入两变量的值,再交换两变量的值输出。程序:#includestdio.hmain(){inta,b,t;printf(a=?);scanf(%d,&a);printf(b=?);scanf(%d,&b);t=a,a=b,b=t;printf(a=%d,b=%d\n,a,b);}第3章顺序结构程序设计3.5本章考点•scanf函数的输入格式。•printf函数的输出格式。•注释的书写格式。第3章顺序结构程序设计3.6典型试题详解1.有定义语句:intx,y;,若要通过scanf(%d,%d,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中错误的是________。A)1112回车B)11,12回车C)11,12回车D)11,回车12回车正确答案:A(知识点:scanf函数的输入格式)试题分析:scanf(%d,%d,&x,&y);语句中格式控制“%d,%d”的两格式说明符之间使用了普通字符“,”,需要原样输入。第3章顺序结构程序设计3.6典型试题详解2.有以下程序段:intm=0,n=0;charc='a';scanf(%d%c%d,&m,&c,&n);printf(%d,%c,%d\n,m,c,n);若从键盘上输入:10A10回车,则输出结果是________。A)10,A,10B)16,a,10C)10,a,0D)10,A,0正确答案:A(知识点:scanf函数的输入格式)试题分析:当%c处在%d之后时,输入数据间不能用分隔符,所以m、c、n经scanf(%d%c%d,&m,&c,&n)重新输入值后,分别为10、A、10。第3章顺序结构程序设计3.6典型试题详解3.以下程序的运行结果是________。A)17,021,0x11B)17,17,17C)17,0x11,021D)17,21,11main(){intk=17;printf(%d,%o,%x\n,k,k,k);}正确答案:D(知识点:printf函数的输出格式)试题分析:将k的值17分别转换成八进制、转换十六进制输出。17对应的八进制数、十六进制数21、11,而表示八进制数、十六进制数为21、11的021、0x11是在C程序中的表示方法,输出在屏幕上的数据是没有进制标志的。第3章顺序结构程序设计3.6典型试题详解4.以下程序段的输出结果是________。inta=1234;printf(%2d\n,a);A)12B)34C)1234D)提示出错,无结果正确答案:C(知识点:printf函数的输出格式)试题分析:以%2d方式输出时,当指定宽度不够宽时,整型数据原样输出。第3章顺序结构程序设计3.6典型试题详解5.以下叙述中正确的是________。A)C程序中注释部分可以出现在程序中任何合适的地方B)花括号“{”和“}”只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名