38563302.doc (匡珍春制作)
实验三 数据类型和顺序结构程序设计(4学时)
实验前必须做的操作——新建文件夹: .................
1、先在对应的K:盘上建立一个父文件夹(用来存放本人整个学期的作业),格式为:“专业+班级+学号+姓名”,如:工业1091班、学号为05的匡珍春同学,其父文件夹名称为:工业109105匡珍春,然后在此父文件夹下建立子文件夹,名称为:实验3(用来存放实验3需要上交的文件)。
2、在E:盘上建立一个以本人姓名为名称的文件夹(本次实验的工作文件夹),例如:E:\\匡珍春
【实验目的】
1、 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符;
2、 掌握C语言中数据的输入/输出方法,常用输入(getchar、getch、scanf)/输出函数(putchar、printf)
的使用;
3、 掌握复合赋值运算符以及不同运算符的优先级别; 4、 加深对运算符/和%的理解; 5、 掌握顺序结构程序设计方法; 6、 提高修改错误程序的能力。
【实验内容】
[实验任务一]:通过调试、分析程序运行结果,掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符;掌握各种运算符尤其是复合赋值运算符和除法及求余运算符。
程序分析实例3-1:输入、运行下面的程序,并分析、验证运行结果。并以文件名assignment.c最终保存在实验3文件夹里:(需要存盘)
第 1 页 共 8 页
38563302.doc (匡珍春制作)
在此基础上,做以下改动: (1)将程序第9~14行改为:
a=61; b=62; c1=a; c2=b;
f=3157.890121; g=0.123456789; d=f; e=g;
p=a=m=50000; q=b=n=-60000; 运行程序,分析结果。
(2)在(1)的基础上将printf语句改为:
printf(\d,b=%d,c1=%c,c2=%c,d=.6f,e=.12f\\n\ printf(\f,g=%f,m=%d\\n\printf(\d\\n”,n); printf(“p=%d,q=%d\\n\ 运行程序。
(3)将p, q改用%o格式符输出。
(4)改用scanf函数输入数据而不用赋值语句,scanf函数如下:
scanf(\d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u\,&q);
输入的数据入下:
61, 62, a, b, 3.56,-6.87, 3,157.890121, 0.123456789, 50000,-60000, 40000 (说明:lf,ld格式符分别用于输入double型和long型数据)分析运行结果。 (5)将scanf函数中的%lf和%ld改写为%f和%d,运行程序并观察分析结果。
程序分析实例3-2:分析每个输出语句的输出结果,输入以下程序验证分析结果。总结复合赋值运算的运
算规则及其应用。(无需存盘)
第 2 页 共 8 页
38563302.doc (匡珍春制作)
【复合赋值运算的几点说明】
1) 当表达式为简单表达式(如单一变量)时,表达式外的一对圆括号才可缺省,否则可能出错。 2) 运算时要把整个表达式当作一个整体。
3) 表达式的形式:可以是常量、简单变量、函数调用、运算表达式。
例如:x += 3 /*等价于x=x+3 */
y *= x + 6 /* 等价于y=y*(x+6),而不是y=y*x+6 ,要把x+6当做一个整体 */
程序分析实例3-3:分析以下程序的运行结果,通过该实例加深对运算符号/与%的理解。(无需存盘)
[实验任务二]:通过调试运行程序,掌握scanf( )和printf( )函数的使用方法。(需要存盘)
问题1 要使下面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 。将以下程序以文件名scan0.c最终保存在实验3文件夹里。
#include
char a,b; int c;
scanf(\ printf(\}
A)1 2 34 C)’1’,’2’,34
B)1, 2, 34 D)12 34
问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?将修改好的正确程序以文件名scan1.c最终保存在实验3文件夹里。
第 3 页 共 8 页
38563302.doc (匡珍春制作)
问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?将修改好的正确程序以文件名scan2.c最终保存在实验3文件夹里。 问题4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪条语句?怎样修改?将修改好的正确程序以文件名scan3.c最终保存在实验3文件夹里。
[提示:利用转义字符输出字符单引号字符。]
问题5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为'1', '2',34,则程序应修改程序中的哪条语句?怎样修改?将修改好的正确程序以文件名scan4.c最终保存在实验3文件夹里。
第1种输入方式:1,2,34↙(以逗号作为分隔符) 第2种输入方式:1 2 34↙(以空格作为分隔符) 第3种输入方式:1 2 34↙(以Tab键作为分隔符) 第4种输入方式:1↙
2↙
34↙(以回车符作为分隔符)
【相关说明:】本题主要是考查学生对常用标准输入输出函数使用方法的熟练使用程度。函数getchar()和putchar()用于字符输入输出操作,而函数scanf()和函数printf()则用于格式输入输出操作,即在程序设计者的控制下,以各种格式进行任意类型数据的读写操作,其中,函数printf()是向屏幕写数据,函数scanf()是从键盘读数据。
函数printf()和scanf()对输入输出数据的格式控制问题(尤其是scanf()函数)较难掌握,需要读者在使用过程中去慢慢体会,初学者常常在使用scanf()函数时出错,要熟练%d、%f、%c、%s这四种格式符以及忽略输入修饰符*和宽度等附加格式说明符。
其中问题4可利用转义字符输出字符单引号字符。问题5可利用忽略输入修饰符*或者1s%解决。 [实验任务三]:进一步熟悉C程序的集成开发环境VC++,掌握简单C程序的查错方法。
程序改错实例3-1:改错题。下列程序多处有错,请通过上机改正。使之符合下面的要求。并将修改好的正确程序以文件名correct1.c最终保存在实验3文件夹里。(需要存盘)
第 4 页 共 8 页
38563302.doc (匡珍春制作)
当本程序运行时,要求按如下方式显示和输入:
Input a,b,c:2.0 2.0 3.0 (此处的2.0 2.0 3.0 为用户输入的) a=2.000000 b=2.000000 c=3.000000 s=4.000000 v=12.000000
【分析:】
①第5行printf函数应加双引号;
②将第6行scanf函数中的%d改为%lf(注意%和f之间是小写字母l,而不是数字1);
③scanf函数中变量a,b,c前应为“&”符号;
④将最后2行printf函数中所有%开头的格式规定符一律改为%lf。 ⑤将最后一行printf函数改为正确的格式。 程序改错实例3-2:程序改错题。
认真阅读以下程序,找出程序中的错误并且要求修改错误。写出该程序的主要功能和程序的输出结果。 将程序输入计算机中调试通过。要求记录下调试中的错误信息,解决方法和程序的输出结果。对比自己写出的程序输出结果和实际执行的程序结果有什么不同并分析原因。并将修改好的正确程序以文件名 correct2.c最终保存在实验3文件夹里。(需要存盘)
【分析:】 ①第1行主函数main的m为小写; ②主函数的函数体应加花括号;
③scanf函数中变量y前应为“&”符号; ④后面3行结尾少了语句结束标记“;”号; ⑤应是先计算后输出,即最后两行交换。
程序改错实例3-3:改正以下程序的错误,同时将修改正确的程序进行存盘。(需要存盘)
将修改好的程序以文件名sin.c最终保存在实验3文件夹中。
第 5 页 共 8 页