1、班级:启新 09 电信实验班 姓名:虞鸿鸣 学号:Q09610137 机器号:S-37实验三:顺序结构编程练习一:实验目的:1.了解 C 语言键盘输入与屏幕输出的特征 ;2.学会正确进行键盘输入与屏幕输出的编程方法 ;3.熟练掌握顺序结构编程的步骤、过程和方法;4.学会进一步调式程序。二:实验内容及要求:题目 1:键盘输入与屏幕输出练习问题 1 要使下面程序的输出语句在屏幕上显示 1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 。#include main()char a,b; int c; scanf(“%c%c%d“,printf(“%c,%c,%dn“,a,b,c);A)1
2、 2 34 B)1, 2, 34 C) 1,2,34 D)12 34问题 2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示 1 2 34,则应修改程序中的哪条语句?怎样修改?问题 3 要使上面程序的键盘输入数据格式为 1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?问题 4 要使上面程序的键盘输入数据格式为 1,2,34,而输出语句在屏幕上显示的结果为1, 2,34,则应修改程序中的哪条语句?怎样修改?问题 5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为1, 2,34,则程序应修改程序中的
3、哪条语句?怎样修改?第 1 种输入方式:1,2,34(以逗号作为分隔符)第 2 种输入方式:1 2 34(以空格作为分隔符)第 3 种输入方式:1 2 34(以 Tab 键作为分隔符)第 4 种输入方式:1234 (以回车符作为分隔符)题目 2:设银行定期存款的年利率 rate 为 2.25%,并已知存款期为 n 年,存款本金为capital 元,试编程计算 n 年后的本利之和 deposit。要求定期存款的年利率 rate、存款期 n 和存款本金 capital 均由键盘输入。三:程序源代码:题目 1:问题二:#include main()char a,b; int c; scanf(“%c
4、%c%d“,printf(“%c %c %dn“,a,b,c);问题三:#include main()char a,b; int c; scanf(“%c,%c,%d“,printf(“%c,%c ,%dn“,a,b,c);题目 2:#include #include #define rate 0.0225void main()float capital,deposit;int n;printf(“capital=“);scanf(“%f“,printf(“year=“);scanf(“%d“,deposit=capital*pow(1.0225,n);printf(“deposit=%fn“
5、,deposit);问题四:#include main()char a,b; int c; scanf(“%c,%c,%d“,printf(“%c,%c,%dn“,a,b,c);问题五:#include main()char a,b; int c; scanf(“%c%*c%c%*c%d“,printf(“%c,%c,%dn“,a,b,c);四:运行结果、分析与讨论:题目 1:问题一 12 341,2,34请按任意键继续. . .题目 2:capital=10000year=10deposit=12492.034180请按任意键继续. . .问题二 12 341 2 34请按任意键继续. .
6、.问题三1,2,341,2,34请按任意键继续. . .问题四1,2,341,2,34请按任意键继续. . .问题五1,2,34 1 2 34 1 2 34 11,2,34 1,2,34 1,2,34 2请按任意键继续. . . 请按任意键继续. . . 请按任意键继续. . . 341,2,34请按任意键继续. . .由于程序代码:scanf(“%c%*c%c%*c%d“,printf(“%c,%c,%dn“,a,b,c); 在 scanf 之中多了*c%表示对应的输入项在读入后不赋予相应的变量,所以不管是在此处输入回车、空格、Tab 都是不赋予变量的,所以会有如上的这种结果。 分析讨论:由
7、于程序代码 scanf(“%c%c%d“,printf(“%c,%c,%dn“,a,b,c); 其中开头输入的两个字符都会以字符形式存储,所以若输入 1234和除 1234 外的其他形式,计算机都会把 1 和 2 之间的字符以相应的形式输出,导致运行结果出现问题,所以 1 和 2 之间不能有任何字符输入。对于 34 而言,定义 C 为整型常量,符型常量不会对其产生影响,所以应以 12 34 的形式输入才能正常运行。分析讨论:由于程序代码scanf(“%c%c%d“,printf(“%c %c %dn“,a,b,c); %c 和%c 和%d 之间有空字符存在,输出时会保留空格符,所以输出的结果是
8、 1 2 34分析讨论:由于程序代码scanf(“%c,%c,%d“,printf(“%c,%c ,%dn“,a,b,c); 在输入值的时候,就已经要求输入的字符之间要有“, ”,所以输入的值要求为1,2,34。在输出运算结果的时候,同样要带上“, ”,所以输出的结果为 1,2,34分析讨论:由于程序代码scanf(“%c,%c,%d“,printf(“%c,%c,%dn“,a,b,c); 在输出时程序中有,则在输出时会显示出单引号。其结果为1,2,34在这个程序设计中,使用数学函数,应该在该源文件中包含头文件“math.h” ,这样才能正常调用数据库之中的数学函数。同时在使用数学函数的过程中
9、,更应注重算术的逻辑和合理性。五:实验心得与体会:此次实验主要让我们更加熟悉 C 语言中 scanf、printf 语句的运用,同时也更加加深正确进行键盘输入与屏幕输出的编程方法。这次实验总的来说难度并不大,但实际意义还是有很多。但是在做书本后面的习题时却发现了不少问题。对于变量的定义会对变量的输入情况产生影响。例如:dounle var;long a;Scanf(“%f%ld“,这是一道书本习题,但是我一开始始终认为它是对的,但是却忽略了 long a;中已经把 a 定义为长整型变量,而输入时如果还是%d,则会在某些时候发生错误,所以这让我感觉到,程序设计时考虑问题应多方面,更应有逻辑和严谨的作风。同时,输入数据的格式和类型一定要按照格式控制字符串的要求进行,不然会发生很多错误。在这一环节,自己做的还是很不够。以后继续努力,提高自己的能力来克服这一问题。