C语言程序设计信息科学与技术学院11第4讲顺序程序设计--输入输出主讲教师:刘辉email:liuhui@stdu.edu.cnphone:87935400(office)信息科学与技术学院C语言程序设计2引例引例:从键盘输入一个小写字母,要求在屏幕上输出对应的大写字母问题分析:输入处理输出键盘输入小写字母到变量lowchar输出大写字母upchar阅读附录A的ASCII字符编码表,总结大小写字母间的关系开始输入小写字符lowcharupchar=lowchar-32输出大写字符upchar结束程序由若干条语句组成,从执行方式上看,从第一条语句到最后一条语句完全按顺序执行。这样的程序就是顺序结构程序信息科学与技术学院C语言程序设计3引例—复习变量的类型教材P55例3.3#includestdio.hintmain(){charc1,c2;c1=‘A’;c2=c1+32;printf(“%c”,c2);printf(“%d”,c2);return0;}输出结果:a97信息科学与技术学院C语言程序设计44主要内容顺序结构程序举例4C语言的语句1赋值运算与赋值语句2数据的输入输出3重点C语言的语句,数据的输入输出难点数据的输入输出本讲小结信息科学与技术学院C语言程序设计51C的语句(1)C语句简单语句复合语句流程控制语句表达式语句空语句函数调用语句选择语句(if,switch)循环语句(while,do…while,for)转移语句(break,continue,return,goto)表达式+分号只有分号的语句用花括号将若干语句括起来注意:复合语句的“}”后面不能出现分号,而“}”前复合语句中最后一条语句的分号不能省略。返回主菜单信息科学与技术学院C语言程序设计62赋值运算与赋值语句(1)2.1赋值运算•赋值运算的一般形式变量=表达式赋值运算符赋值运算的含义就是先计算表达式的值,然后将该值传送到变量所对应的存储单元中。变量与确定的内存单元相联系,既具有值属性,也具有地址属性。常量、变量、函数等运算对象用运算赋连接起来的表达式,只有值属性而无地址属性信息科学与技术学院C语言程序设计72赋值运算与赋值语句(2)2.1赋值运算—复合赋值运算+=、-=、*=、/=、%==、=、&=、|=、^=算术运算符位运算符课堂练习:写出与下面表达式等价的表达式x+=5.0x*=u+va+=a-=b+2总结:xθ=e其等价的表达式为:x=xθ(e)信息科学与技术学院C语言程序设计82赋值运算与赋值语句(3)2.1赋值运算—练习课堂练习:分析下面表达式的结果:a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)信息科学与技术学院C语言程序设计92赋值运算与赋值语句(3)2.1赋值运算—赋值运算的优先级各种赋值运算都属于同一优先级,且优先级仅比逗号运算符高,比其他运算所有运算符都低。课堂练习:分析下面表达式的结果:x=13y,7+(y=8)x=(13y,7+(y=8))x=y=17/2信息科学与技术学院C语言程序设计102赋值运算与赋值语句(4)2.2赋值语句•赋值语句的一般形式变量=表达式;赋值语句与赋值表达式不一样,赋值语句可以作为程序中一个独立的程序行,而赋值表达式是作为一个运算量,可以出现在表达式中。信息科学与技术学院C语言程序设计112赋值运算与赋值语句(5)2.3赋值时的数据类型转换当赋值运算符两边的数据类型不一致时,C编译系统自动将赋值运算符右边表达式的数据类型转换成左边变量相同的类型转换规则:①整型变量与实型变量之间的转换②不同精度实型变量之间的转换③不同精度整型变量之间的转换截取有效数字截取低字节数据返回主菜单信息科学与技术学院C语言程序设计123数据输入/输出(1)为了实现输入和输出功能,在C的库函数中提供了一组输入输出函数:getchar();putchar(字符变量);printf(“格式控制字符串”,输出表列);scanf(“格式控制字符串”,地址表列);在使用C语言库函数时,要用预编译命令#include将有关“头文件”包括到源文件中#includestdio.h#include“stdio.h”信息科学与技术学院C语言程序设计133数据输入/输出(2)3.1字符输入/输出函数putchar函数(字符输出函数)getchar函数(字符输入函数)向终端输出一个字符一般形式putchar(字符变量)一般形式getchar()引例的程序实现从键盘上输入一个字符信息科学与技术学院C语言程序设计143数据输入/输出(3)3.2格式输出函数printf一般形式:printf(“格式控制字符串”,输出表列);指定输出格式,由格式字符串和非格式字符串两种组成,非格式字符串照原样输出。分析下面程序的执行结果信息科学与技术学院C语言程序设计153数据输入/输出(4)3.3格式输入函数scanf一般形式:scanf(“格式控制字符串”,地址表列);指定输入格式,只有格式字符串。使用格式化输入输出函数对引例进行修改信息科学与技术学院C语言程序设计163数据输入/输出(5)3.3格式输入函数scanf(续)•格式输入函数的几点说明①scanf函数中要求给出变量地址,而不是变量名。scanf(%d,a);×scnaf(%d,&a);√②在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。scanf(“%c%c%c”,&c1,&c2,&c3);则把‘a’赋予c1,‘’赋予c2,‘b’赋予c3︺如输入abc︺︺返回主菜单信息科学与技术学院C语言程序设计174顺序结构程序举例(1)例5:鸡兔同笼问题。已知鸡兔总头数为H,总脚数为F,求鸡兔各有多少只?解题思路:先作为一个数学问题考虑。设鸡有x只,兔有y只,可得方程组FyxHyx42解得:2/)2(2/)4(HFyFHx信息科学与技术学院C语言程序设计184顺序结构程序举例(2)例5:鸡兔同笼问题。(续)开始输入鸡兔总头数H,总脚数F计算鸡的数目x输出鸡兔只数结束计算兔的数目y编程思路流程图:编写程序代码#includestdio.hmain(){intH,F,x,y;scanf(“%d,%d”,&H,&F);x=(4*H-F)/2;y=(F-2*H)/2;printf(“chicken=%d\n”,x);printf(“rabbit=%d\n”,y);}信息科学与技术学院C语言程序设计19364顺序结构程序举例(3)例6:输入整数a和b,交换a和b后输出。ab15解题思路:如何完成交换过程?abtemp1536temp=a;a=b;b=temp;信息科学与技术学院C语言程序设计204顺序结构程序举例(4)例6:输入整数a和b,交换a和b后输出。(续)编程思路流程图:开始输入整数a,b交换a,b输出交换后的a,b值结束编写程序代码返回主菜单信息科学与技术学院C语言程序设计21本讲小结•了解C语句的分类•掌握输入/输出语句的使用•掌握输入/输出语句格式控制字符串的使用•掌握顺序结构程序设计的方法信息科学与技术学院C语言程序设计22作业•作业–练习册第3章没有做过的题目–上机实验2(书面完成)C语言程序设计信息科学与技术学院2323信息科学与技术学院C语言程序设计24引例的程序实现引例:从键盘输入一个小写字母,要求在屏幕上输出对应的大写字母开始输入小写字符lowcharupchar=lowchar-32输出大写字符upchar结束#includestdio.hmain(){}charlowchar,upchar;putchar(字符变量)getchar()lowchar=getchar();upchar=lowchar-32;putchar(upchar);返回信息科学与技术学院C语言程序设计25输出格式字符串(1)一般形式:%[标志][输出最小宽度][.精度][长度]类型类型:用以表示输出数据的类型格式字符意义d,i以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x,X以十六进制形式输出无符号整数(不输出前缀Ox)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串信息科学与技术学院C语言程序设计26输出格式字符串(2)一般形式:%[标志][输出最小宽度][.精度][长度]类型标志:标志字符为-、+、#、空格四种标志意义-结果左对齐,右边填空格+输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x信息科学与技术学院C语言程序设计27输出格式字符串(3)一般形式:%[标志][输出最小宽度][.精度][长度]类型输出最小宽度:用十进制整数来表示。精度:以“.”开头,后跟十进制整数。长度:格式符为h,l,L三种,h表示按短整型量输出,l和L表示按长整型量输出。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。返回信息科学与技术学院C语言程序设计28格式输出函数练习(1)•分析下面程序的输出结果(例1)main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}%[标志][输出最小宽度][.精度][长度]类型输出(Turbo2.0):a=-1,177777,ffff,65535b=-2,177776,fffe,65534输出(VC++6.0):a=65535,177777,ffff,65535b=-2,37777777776,fffffffe,4294967294信息科学与技术学院C语言程序设计29格式输出函数练习(2)•分析下面程序的输出结果(例2)main(){charc=‘a’;inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}%[标志][输出最小宽度][.精度][长度]类型输出:a,97a,97信息科学与技术学院C语言程序设计30格式输出函数练习(3)•分析下面程序的输出结果(例3)main(){floatx=1234.789012f;doubley=123456789012.123456;printf(“x=%f,y=%f\n”,x,y)}输出结果:1234.789063,y=123456789012.123460float型有7位有效数字double型有16位有效数字信息科学与技术学院C语言程序设计31格式输出函数练习(4)•分析下面程序的输出结果(例4)#includestdio.hmain(){floatf=123.456;printf(“%f,%10.2f,%10.4f\n,f,f,f);printf(%e,%10.2e,%10.4e\n,f,f,f);}输出结果:123.456001,123.46,123.45601234560e+002,1.23e+002,1.2346e+002返回信息科学与技术学院C语言程序设计32输入格式字符串(1)一般形式:%[*][输入数据宽度][长度]类型类型:表示输入数据的类型格式字符意义d,i输入十进制整数o输入八进制整数x输入十六进制整数u输入无符号十进制整数f或e输入实型数(用小数形式或指数形式)c输入单个字符s输入字符串信息科学与技术学院C语言程序设计33输入格式字符串(2)一般形式:%[*][输入数据宽度][长度]类型“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。宽度:用十进制整数指定输入的宽度(即字符