华科历年c语言上机作业答案,《华中科技大学C语言实验与课程设计上机实验报告汇总18全部.docx...

《华中科技大学C语言实验与课程设计上机实验报告汇总18全部

华中科技大学C语言实验与课程设计实验报告计算机科学与技术学院指导老师:目录1 表达式和标准输入输出实验········ 32 流程控制实验 ·············· 113 函数程序与结构实验 ··········· 204 编译预处理实验 ············· 285 数组实验 ················ 356 指针实验 ················ 427 结构与联合实验 ············· 528 文件实验 ················ 611 表达式和标准输入与输出实验1.1 实验目的(1) 熟练掌握各种运算符的运算功能,操作数的类型,运算结果的类型及运算过程中的类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性。(2)掌握scanf 和printf 函数的用法。(3)掌握简单C程序(顺序结构程序)的编写方法。1.2 实验内容及结果1.2.1.源程序改错下面给出了一个简单C语言程序例程,用来完成以下工作:(1)输入华氏温度f,将它转换成摄氏温度C后输出;(2)输入圆的半径值r,计算并输出圆的面积s;(3)输入短整数k、p,将k的高字节作为结果的低字节,p的高字节作为结果的高字节,拼成一个新的整数,然后输出;在这个例子程序中存在若干语法和逻辑错误。要求参照2.1.3和2.1.4的步骤对下面程序进行调试修改,使之能够正确完成指定任务。程序代码:#include#define PI 3.14159;voidmain( void ){ int f ; short p, k ; double c , r , s ;/* for task 1 */ printf(“Input Fahrenheit:” ) ; scanf(“%d”, f ) ; c = 5/9*(f-32) ; printf( “ \n %d (F) = %.2f (C)\n\n ”, f, c ) ;/* for task 2 */printf("input the radius r:");scanf("%f", &r);s = PI * r * r;printf("\nThe acreage is %.2f\n\n",&s);/* for task 3 */printf("input hex int k, p :");scanf("%x %x", &k, &p );newint = (p&0xff00)|(k&0xff00)<<8;printf("new int = %x\n\n",newint);}【分析及改正】本程序共存在9处错误,分析如下:(1)#define PI 3.14159;错误原因:宏定义在预处理时会将后续程序中的标示符展开为对应全部字符串,而PI不需要分号。改正:去掉其后分号(2)voidmain(void) { 错误原因:函数返回值与函数名之间应加空格,C90标准建议main函数应返回一个int作为状态值改正:int main(void) {(3)short p,k;错误原因:后续用到了newint变量但并未声明改正:short p,k,newint;(4)scanf(“%d”, f );错误原因:应该把要读入的变量的地址传递给scanf才能正确写入改正:scanf("%d",&f);(5)c = 5/9*(f-32) ;错误原因:5和9是整型常数,相除会截断小数部分,应该将其中任意一个输表示为或转换为浮点数类型改正:c = 5.0/9*(f-32);(6)scanf("%f", &r);错误原因:double类型对应的占位符是%lf改正:scanf("%lf",&r);(7)printf("\nThe acreage is %.2f\n\n",&s);错误原因:要输出s的值应该将s作为参数传递给printf,不应传递其地址改正:printf("\nThe acreage is %.2f\n\n",s);(8)scanf("%x %x", &k, &p );printf("new int = %x\n\n",newint);错误原因:k,p为short类型,对应十六进制占位符应为%hx改正:scanf("%hx %hx",&k,&p);printf("new int = %hx\n\n",newint);(9)newint = (p&0xff00)|(k&0xff00)<<8;错误原因:要求将k的高字节作为结果的低字节,应该将k的高字节提取出后右移至低字节改正:newint=(p&0xff00)|(((k&0xff00)>>8)&0x00ff);1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值