ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:169.79KB ,
资源ID:21777872      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21777872.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验3 顺序结构程序设计Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验3 顺序结构程序设计Word下载.docx

1、 d=f; e=g; p=a=m=50000; q=b=n=-60000;运行程序,分析结果。【分析】修改后程序运行结果为:程序中出现c1=, c2= 的原因是程序中语句c1=a;的功能是将变量a和变量b的值分别赋值给c1和c2,即执行后c1=61,c2=62,而ASCII码值为61所对应的字符是=,ASCII码值为62所对应的字符是。程序中出现q=4294907296的原因是由于程序中指定q的输出格式是%u,即按无符号整数(unsigned)的格式输出,而无符号整数的范围是:065535,-60000超出了它的范围。在VC+中,由于整数占四个字节,所以:-60000的机器原码:1000000

2、0 00000000 11101010 01100000 反码:11111111 11111111 00010101 10011111补码:11111111 11111111 00010101 10100000二进制11111111 11111111 00010101 10100000转换成十进制数的值就是:4294907296(2)在(1)的基础上将printf语句改为: printf(a=%d,b=%d,c1=%c,c2=%c,d=%15.6f,e=%15.12fn,a,b,c1,c2,d,e);f=%f,g=%f,m=%dn,f,g,m);printf(n=%dn”,n);printf(

3、“p=%d,q=%dn,p,q); 运行程序。【分析】调试程序时会出现如下的警告错误信息提示:该错误信息的中文意思是:从双精度(double)转换为单精度(float),可能会丢失数据因为程序中定义d和e的数据类型为float,而f和g的数据类型为double,执行d=f;语句时,赋值号两边的数据类型不一致,根据数据类型转换规则:将赋值号右边的数据类型转换成赋值号左边的数据类型,即将double转换成float型,由于double占8个字节,float占4个字节,因此会有数据丢失的可能。对于这两个警告错误信息提示,我们可以不予理睬。修改后程序的运行结果为:程序中出现e= 0.123456791

4、043,并不是我们想象中的e= 0.123456789000,原因是程序中定义e为float型,而float类型数据其有效位数为6-7位,从第8位开始就会出现一些意想不到的结果。(3)将p, q改用%o格式符输出。注意是字母o而不是数字0。【分析】修改后程序的运行结果为:注意:%o是按八进制格式输出整数。程序中出现p=141520,q=37777612640的结果,原因是:十进制数50000对应的八进制数是141520,根据前面分析过程可知,十进制整数-60000在计算机内存中所对应的二进制机器补码值为:根据三位二进制合并为一位八进制的转换规则,可知该数转换成八进制数的值是:3 7 7 7 7

5、 7 6 1 2 6 4 0 (4)改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf(%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u,&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&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,运行程序并观察分析结果。

6、程序分析实例3-2:分析每个输出语句的输出结果,输入以下程序验证分析结果。总结复合赋值运算的运算规则及其应用。(无需存盘)【复合赋值运算的几点说明】1) 当表达式为简单表达式(如单一变量)时,表达式外的一对圆括号才可缺省,否则可能出错。2) 运算时要把整个表达式当作一个整体。3) 表达式的形式:可以是常量、简单变量、函数调用、运算表达式。例如:x += 3 /*等价于x=x+3 */y *= x + 6 /* 等价于y=y*(x+6),而不是y=y*x+6 ,要把x+6当做一个整体 */程序分析实例3-3:分析以下程序的运行结果,通过该实例加深对运算符号/与%的理解。实验任务二:通过调试运行程

7、序,掌握scanf( )和printf( )函数的使用方法。问题1 要使下面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 。将以下程序以文件名scan0.c最终保存在实验3文件夹里。#include void main() char a,b; int c; scanf(%c%c%dc);%c,%c,%dn,a,b,c);A)1 2 34 B)1, 2, 34 C)1,2,34 D)12 34问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?将修改好的正确程序以文件名scan1

8、.c最终保存在实验3文件夹里。问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?将修改好的正确程序以文件名scan2.c最终保存在实验3文件夹里。问题4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为1, 2,34,则应修改程序中的哪条语句?将修改好的正确程序以文件名scan3.c最终保存在实验3文件夹里。提示:利用转义字符输出字符单引号字符。问题5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为,34,则程序应修改程序中的哪条语句?将修改好的正确程序以文件名s

9、can4.c最终保存在实验3文件夹里。第1种输入方式:1,2,34(以逗号作为分隔符)第2种输入方式:1 2 34(以空格作为分隔符)第3种输入方式:1 2 34(以Tab键作为分隔符)第4种输入方式:1234(以回车符作为分隔符)【相关说明:】本题主要是考查学生对常用标准输入输出函数使用方法的熟练使用程度。函数getchar()和putchar()用于字符输入输出操作,而函数scanf()和函数printf()则用于格式输入输出操作,即在程序设计者的控制下,以各种格式进行任意类型数据的读写操作,其中,函数printf()是向屏幕写数据,函数scanf()是从键盘读数据。函数printf()和

10、scanf()对输入输出数据的格式控制问题(尤其是scanf()函数)较难掌握,需要读者在使用过程中去慢慢体会,初学者常常在使用scanf()函数时出错,要熟练%d、%f、%c、%s这四种格式符以及忽略输入修饰符*和宽度等附加格式说明符。其中问题4可利用转义字符输出字符单引号字符。问题5可利用忽略输入修饰符*或者1s%解决。实验任务三:进一步熟悉C程序的集成开发环境VC+,掌握简单C程序的查错方法。程序改错实例3-1:改错题。下列程序多处有错,请通过上机改正。使之符合下面的要求。并将修改好的正确程序以文件名correct1.c最终保存在实验3文件夹里。当本程序运行时,要求按如下方式显示和输入:

11、Input a,b,c:2.0 2.0 3.0 (此处的2.0 2.0 3.0 为用户输入的)a=2.000000 b=2.000000 c=3.000000s=4.000000 v=12.000000【分析:】第5行printf函数应加双引号; 将第6行scanf函数中的%d改为%lf(注意%和f之间是小写字母l,而不是数字1);scanf函数中变量a,b,c前应为“&”符号;将最后2行printf函数中所有%开头的格式规定符一律改为%lf。将最后一行printf函数改为正确的格式。程序改错实例3-2:程序改错题。认真阅读以下程序,找出程序中的错误并且要求修改错误。写出该程序的主要功能和程序

12、的输出结果。将程序输入计算机中调试通过。要求记录下调试中的错误信息,解决方法和程序的输出结果。对比自己写出的程序输出结果和实际执行的程序结果有什么不同并分析原因。并将修改好的正确程序以文件名correct2.c最终保存在实验3文件夹里。】 第1行主函数main的m为小写; 主函数的函数体应加花括号;scanf函数中变量y前应为“&后面3行结尾少了语句结束标记“;”号;应是先计算后输出,即最后两行交换。程序改错实例3-3:改正以下程序的错误,同时将修改正确的程序进行存盘。 将修改好的程序以文件名sin.c最终保存在实验3文件夹中。提示:在调试该程序时会碰到以下错误信息提示,现解释如下: 中文含义

13、依次描述如下:sin.c第5行:警告错误:Scanf没有定义;假定外部返回整型;sin.c第6行:SIN没有定义;严重错误:没有声明pi标识符;sin.c第7行:Printf没有定义;修改方法:(1) 依次将没有定义的符号修改为 scanf、sin和printf。 (2) 因为pi是一个符号常量,应该在主函数前面进行宏定义,即#define pi 3.14 通过以上两步修改,编译连接均成功,点击运行按钮,通过键盘键入数字90,此时会出现如下所示的提示框:原因分析:出现这种错误提示框的原因是scanf()函数中的地址参量表前面没有加上地址符号&将scanf()中的地址参量表d改成 &d 修改完毕

14、,运行时你会发现不管你输入什么整数值,其结果都是0.000000,显然这一结果是错误的,为什么呢?原因就是1/2的值等于0,所以为了保证输出正确的结果,应该将其修改为1.0/2或1/2.0。将修改好的程序以文件名Macro.c最终保存在实验3文件夹里。macro.c(6) : error C2106: = : left operand must be l-value 赋值号左边的操作数必须是左值。由于宏定义#define PRICE 30的功能是将PRICE定义为一个符号常量,这也就是说本程序第6行赋值语句PRICE=PRICE*x;中赋值号左边是一个常量,不符合赋值语句要求赋值号左边必须是一

15、个变量的要求,所以会产生以上错误信息提示。有多种,比方说你可以将PRICE=PRICE*x;语句修改为x=PRICE*x;实验任务四:通过完善或编写简单的C语言程序,进一步熟悉C语言的语法结构。编程练习3-1:用宏定义编程求解圆的周长和面积、球的体积和表面积、圆锥的体积、圆柱的体积。可参照理论教材P40例3.1的代码进行编程。 要求: 半径和高的值均从键盘上任意输入(用scanf()函数实现); 用printf()函数将计算结果输出,且输出时要有相关的英文文字说明,如“圆的周长”对应的英文文字说明是:“the perimeter of the circle”,且小数点后保留两位有效数字。 将编

16、写好的程序以文件名area.c最终保存在实验3文件夹里。 所谓宏定义就是 #define PI 3.14 因为PI为3.14是小数,所以定义半径、高、圆的周长、圆的面积等变量时应将它们定义为float类型; 相应的中英文对应单词如下所示: 半径:radius 高:height 圆:circle 周长:perimeter 面积:area 球:ball圆锥:cone 体积:volume 圆柱:column 表面积:superficial area 本题中涉及到的公式列举如下: 圆的周长=2*PI*r 圆的面积=PI*r*r 球的体积=4.0/3*PI*r*r*r球的表面积=4*PI*r*r 圆锥的

17、体积=1.0/3*PI*r*r*h 圆柱的体积=PI*r*r*h编程练习3-2:编程实现: 将小写字母的输入转换成大写字母的输出。(例如,从键盘上输入的字母为a,则输出的字母为A)。将编写好的程序以文件名change.c最终保存在实验3文件夹里。 因为输入的小写字母是任意的,所以应该用scanf()函数,假设我们将输入的字符存放在字符变量ch中,则scanf()的具体语句格式为: scanf(“%c”, &ch); 由于大写字母(如A)比相应的小写字母(a)的ASCII码值少32,因此要将小写字母转换成相应的大写字母,只需将该字母的ASCII码值减掉32即可,用以下语句可实现这一要求:ch=c

18、h-32; 为了验证结果是否正确,可用printf()函数将结果输出。具体语句为: printf(“%cn”, ch);编程练习3-3:以下程序不用第3个变量,实现将两个数进行对调的操作,请选择填空。(1) A、a+b B、 a-b C、 a*b D、a/b(2) A、a+b B、 a-b C、 b-a D、a*b(3) A、a+b B、 a-b C、 b*a D、a/b将完整的程序以文件名swap.c最终保存在实验3文件夹里。编程练习3-4:以下程序输入3个整数值给a、b、c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。读入后,a=10,b=20,c=30;

19、交换后,a=20,b=30, c=10。请填空,并将完整的程序以文件名interchange.c最终保存在实验3文件夹里。 /* 提示:使用一个中间变量 */ 编程练习3-5:输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。程序以print.c文件名最终保存在实验3文件夹里。此类题目应将3位数的个、十、百位分离出来,即定义x、a1、a2、a3, x 从键盘输入的数 a1 x的个位 a1 = x%10 a2 x的十位 a2 = x%100/10a3 x的百位 a3 = x/100反序输出:printf(“%d%d%dn”,a1,a2,a3); 作业上交(千万不要忘记):C程序编译、连接、运行成功后,请务必将源程序(扩展名为.C、存于E:盘以本人姓名为名称的文件夹下,如E:匡珍春c01.c)复制到K:盘对应的文件夹中,如K(01): 工业109105匡珍春实验3,才算上交作业。 注:为了方便自己使用,不妨将源程序备份到可移动存储器上(如U盘、手机卡等) 强烈建议: 先理解消化例题及习题(书上提供了答案),然后再做编程题。因为这样效果会好些。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1