
实验3 基本输入输出
1. 实验目的
(1)熟练掌握scanf()/printf()库函数的调用格式,正确使用各种格式转换控制符,掌握各种类型数据的输入输出方法;
(2)掌握getchar()/putchar()库函数的调用格式,以及使用它们进行字符类型数据输入输出的方法。
2. 实验指导
1)输入程序并运行结果

(1)要求:
①输出程序结果;
②分析结果并说明原因,体会输出格式控制符的用法。
(2)分析指导:
①根据程序的算法过程,画流程图,如图2-15所示。

图2-15 基本输入输出程序的流程图
②程序输出结果如下(^号表示空格,后文不作标注):

③分析结果:
以十进制整数形式输出x,结果为12;以十进制整数形式输出y,域宽为4,所以输出为^123,左侧输出1个空格,补足4位域宽。
以长整型形式输出x1,结果为32768;以长整型形式输出y1,域宽为14,输出为^^^^1653732529,由于y1=12345678987654321,其值超出长整型的表示范围,因此实际输出为y1的32位二进制截断值,共10位十进制数字,左侧输出4个空格,补足14位域宽。
以无符号十进制整数形式输出x2和y2,结果分别为32768和65500。
以浮点型数据形式输出x3,输出默认保留6位小数,结果为12.123457;以浮点型小数形式输出y3,设定域宽为10,精度为3,则输出为^^^^12.123。
以双精度型数据形式输出x4,输出同样默认保留6位小数,结果为12.123457;以双精度型数据形式输出y4,设定域宽为14,精度为9,则输出为y4=^^12.123456790。
以字符型输出x5,结果为a;以字符型输出y5,域宽设定为4,输出为^^^b。
(3)VC++ 6.0环境调试过程:
①按下F10键,开始调试,黄箭头指示调试的开始位置,如图2-16所示。黄箭头指向的是即将执行的程序行。

图2-16 黄箭头指示调试开始位置
②按F10键继续单步调试,黄箭头跳过声明变量程序行,指向x=12程序行,变量窗口中的变量x、x1内容为–858993460,x2内容为3435973836,x3内容为–1.07374e+008,在内存空间中均被初始化为随机数,如图2-17所示。

图2-17 变量窗口中各变量的初始化
③按F10键继续单步调试,黄箭头指向y=123程序行,变量窗口中的x内容为12,以红色表示变量发生的改变,如图2-18所示。

图2-18 变量窗口中x变量值更改为12
④按F10键继续单步调试,黄箭头指向x1=32768程序行,变量窗口中的y内容为123,以红色表示变量发生的改变,如图2-19所示。

图2-19 变量窗口中y变量值更改为123
⑤按F10键依次进行单步调试,黄箭头依次指向下一个程序行,观察窗口中的各个变量的内容,直到程序结束行},观察运行窗口中显示的结果,如图2-20所示。

图2-20 运行窗口中显示的结果
2)输入程序并分析结果

(1)要求:
①为了使变量的值为:a=10,b=25,x=12.3,y=21.9,c1='a',c2='A',则正确的数据输入形式是什么?
②假定仍要得到上面的结果,还可以怎样改写scanf语句?
(2)分析指导:
①正确的数据输入格式应该是(^符号代表空格):

或者

②要得到上面的结果,最简单的scanf语句应该是:

在这种情况下,正确的输入格式应该为(^符号代表空格):

或者

3. 实验内容
(1)编辑、编译、运行实验指导中给出的程序,并分析输出结果;
(2)输入并运行下面程序。

要求:
画出算法流程图,调试通过后,运行该程序(^符号代表空格)。
①输入:50^4<回车>,查看运行结果。
②输入:50.4^10.8<回车>,查看运行结果。
③输入:50000^100<回车>,查看运行结果。
④输入:10^0<回车>,查看运行结果。
⑤输入:50,4<回车>,查看运行结果。
分析得到的结果,并说明原因。
(3)从键盘上输入三个小写字母,输出其对应的大写字母(例如,输入a、b、c,则输出分别为A、B、C)。
要求:
①通过一条scanf库函数输入三个小写字母,通过printf函数以空格键分隔字符输出;
②通过getchar函数输入三个小写字母,通过printf函数以域宽为3的规定格式输出;
③通过getchar函数输入三个小写字母,通过putchar函数输出;
④画出算法流程图。