版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华中科技大学c语言实验和课程设计实验报告计算机科学技术学院指导老师:目录1式和标准输入输出实验3双流控制实验11三函数程序和结构实验204编译预处理实验285序列实验356指针实验427结构和共同实验528文件实验61一式和标准输入和输出实验1.1实验目的(1)熟悉各种运算符的运算功能、操作数的类型、运算结果的类型和运算中的类型转换,以c语言特有的运算符,例如位运算符、疑问号运算符、逗号运算符等为重点的记忆运算符的优先级和耦合性。(掌握scanf和printf函数的使用方法。(3)掌握简单的c程序(顺序结构程序)的制作方法。1.2实验内容和结果1.2.1 .源程序的修改以下是完成以下工作的简单
2、c语言程序例程:(1)输入华氏温度f,转换为摄氏温度c并输出(2)输入圆的半径值r,计算圆的面积s并输出(3)输入短整数k、p,将k的高位字节设为结果的低位字节,将p的高位字节设为结果的高位字节,制作出新的整数并输出这个示例程序有几个语法和逻辑错误。 请参照2.1.3和2.1.4中的步骤,调试和修改以下步骤,以确保正确完成指定的任务。程序代码:#include#define PI 3.14159;语音主(语音主)举止PS;短p,k;双精度c、r、s;/* for task 1 */printf (“输入传真:”)扫描(“% d”,f )c=5/9*(f-32 )打印(“ n % d (f )=
3、%.2f (c )nn”,f,c );/* for task 2 */printf(inputtheradiusr: );扫描( % f ,r );s=PI * r * r;打印(nthehacreagleis % ./* for task 3 */打印(输入hex int k,p :);扫描( % x % x ,k,p );newint=(p0xff00)|(k0xff00)8;打印( newint=% xn ,new int );以下【分析和修正】本程序有9个错误,包括:(1) #定义pi 3.14159;错误的原因:宏定义在预处理期间将后续程序的标记展开为所有字符串,而PI不需要分号。修
4、改:删除之后的分号(2)将2)voidmain(void) )错误的原因:建议在函数的返回值和函数名称之间加空格,C90标准中,main函数将int作为状态值返回修改:将int main(void) )(3)短p,k错误原因:之后使用了newint变量,但没有声明修正:短p,k,新int;(4)扫描(“% d”,f )错误原因:应该将读取变量的地址交给scanf,正确写入修正:扫描( % d ,f );(5)c=5/9*(f-32 )错误的原因: 5和9是整数常数,除法会截断小数部分,因此必须将其中一个输出表示为浮点型或转换为浮点型修正: c=5.0/9*(f-32 )(6)扫描( % f ,
5、r );错误的原因:与双精度类型对应的占位符为%lf修正:扫描( % lf ,r );(7)打印(nthehacreagleis %.2 fnn ,s );错误的原因:输出的s的值将s作为参数传递给printf,不要传递地址修正:打印(nthehacreagleis %.2fnn ,s );(8)扫描( % x % x ,k,p );打印( newint=% xn ,new int );错误原因: k,p为短型,对应的十六进制占位符为%hx修正:扫描( % hx % hx ,k,p );打印( newint=% hxn ,new int );(9)newint=(p0xff00)|(k0xff
6、00)8;错误原因:需要将k的高位字节作为结果的低位字节,提取k的高位字节后向右偏移到低位字节修正: new int=(p0xff 00 )|(k0xff 00 )8)0x 00 ff )1.2.2源程序的修正和替换以下程序使用常用的中间变量法实现两个数量的交换,以不使用第三个变量的方式实现。 在这个程序中,t是中间变量,删除定义语句的t,修正下划线的语句,要求实现两个替换。程序代码:#includevoid main ()举止PS、PS、PS;printf (“输入到集成电路:”)扫描(“% d % d”,a,b );t=a; a=b; b=t;prinf(“na=%d,b=%d”,a,b
7、);以下【分析】将a、b中的任一方视为原句,将另一方作为密钥加密,对加密的内容和密钥进行加密运算,得到原句。 使用异或运算进行交换。流程图如下所示。【程序】#include#includeint main ()PS、PS;printf(inputtwointegrers: );扫描( % d % d ,a,b );a =b;b =a;a =b;printf(na=%d,b=%d ,a,b );返回0;以下【测试】输入a=1,b=7的情况下,应该输出: a=7,b=1,程序的执行结果如下,程序是正确的。1.2.3程序设计制作用于输入字符c的程序,如果c是大写,则将c变换成对应的小写,否则,c的值
8、不变,最后输出c。【解析】因为同一字母的大写字母和小写字母的ASCII码值不同32,所以在ch为大写字母的情况下,ch 32成为对应的小写字母。流程图如下所示。【程序】#includeint main ()举止打印(输入用户char x :n );char x;扫描( % c ,x );if(x=ax=z )举止打印( % cn ,x );以下else if(x=Ax=Z )举止打印( % cn ,x-0 32 0 );以下elseprintf ( pleaseinputtherightchar. );以下返回0;以下【测试】(1)测试从大写到小写的变化。 输入d后,应该输出d,程序的执行结果
9、如下所示,程序是正确的。(2)测试其他文字。 输入a后,应该输出a,程序的执行结果如下所示,程序是正确的。2、输入无符号的短整数x,m,n (0m15,1n16-m ),从x的第m位取出左侧n个位(m为从右起左侧号015 ),生成与左端(第15个位)对齐的程序。【解析】先将x向右移位m位,然后向左移位(16-n )位,在末尾追加零,可以从第m位到左侧的n位对齐最上位流程图如下所示。【程序】#includeint main ()unsigned short x,m,n;puts(Please input x,m,n :);扫描( % Hu % Hu ,x,m,n );x=m;x=(16 - n
10、)打印( % hxn ,x );返回0;以下在x=58207、m=4、n=4的情况下,(58207)10=(1110 0011 0101 1111)2,处理后为(1010000 0000 )2=(5000 ) 16,所以程序应该输出16进制: 50003、IP地址通常是4个由句点分隔的小整数(点十进制),如32.55.1.102。 这些地址在机器上以无符号长度整形的形式显示。 创建一个程序,将互联网的IP地址作为机器存储器读取,对其进行解码,并输出为四个以一般句点分隔的部分。 例如,整形二进制表示法在:8位的组中可以表示为40 88 92 211,因为CPU处理数据,所以顺序相反,所有最终格式
11、都为211.92.88.40。【解析】分别以逻辑标度取出所读取的长整形数的4个部分,从最下位比特每8位(1字节)设为1个部分,并按正常的顺序输出与其对应的10进制IP地址。程序的方框图如下所示。【程序】#includeint main ()无符号龙IP;无短第一次、第二次、第三次、前方;puts ( inputtheipinunsignedlongintform : );扫描( % Lu ,IP );first=(IP0xFF)24;second=(IP0xFF0000)16;third=(IP0xFF00)8;fourth=IP0xFF;printf (“% Hu.% Hu.% Hu”,fo
12、urth,third,second,first );以下输入了【测试】的情况下,输出211.92.88.40。 执行结果如下,说明程序是正确的。1.3实验体验改正错误的时候,看一遍,发现明显的错误,把初步修正的代码输入编译器中进行编译,根据编译器的警告和错误提示修改程序是完全正确的,这个过程需要细心和耐心,这个过程我今后不会犯类似的错误哦源程序的修改和替代问题锻炼了我们的能力,我们平时应该考虑写程序时对一个问题有多少小时的解决方法,不使用中间变量交换两个整数是常见问题,我认为一个异或本身保持0,0异或的任何比特原位的原理编程问题提高了我们所学知识的熟练度和理解度,只有实践才能掌握c语言,在手写
13、代码的过程中发现问题,理解概念。双流控制实验2.1实验目的(1)掌握复合语句、if语句、switch语句的使用,掌握for、while、do-while的基本循环控制语句的使用,掌握重复循环技术,理解转移语句和标签语句。(2)熟练使用for、while、do-while语句制作程序。(3)练习迁移句和标签句的使用。(4)使用集成开发环境下的调试功能:单步执行、中断点的设定、变量值的观察。2.2实验内容和要求2.2.1 .源程序的修改计算s=n的源程序在这个源程序中有几个语法和逻辑错误。 必须在计算机上调试和修改此示例中的源程序,以确保正确完成指定的任务。 例如,8!=40320。程序代码:#i
14、ncludeint main ()举止int i,n,s=1;打印( please enter n : );扫描( % d ,n );for(i=1; i=n; PS )s=s*i;printf(%d!=% d,n,s;返回0;以下【分析和修正】本程序有以下三个错误(1) PS=1错误原因:计算阶乘时,阶乘值会立即上升,因此不建议使用int型,可以变更为长型或双型。修改:变更为long型变量。(2)扫描(“% d”,n )错误原因: scanf函数检索输入值时,引用变量地址而不是变量本身。修正:扫描(“% d”,n )(3) 返回0;错误的原因:返回返回值必须位于main函数内部修正: return 0以下2.2.2源程序的修正和替换(1)修改上述计算s=n! 的源程序必须用while和do-while语句替换for语句。(2)修改上述计算s=n! 的源程序满足输入“整数s”,输出“n”!=s的最小整数n”。 例如,当输入整数40310时,输出结果为n=8.(1)为了以不同的循环结构实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿瓦斯利用设施(瓦斯发电)项目可行性研究报告模板拿地申报
- 2025年通信工程职业资格考试试题及答案
- 2025年广西公共资源(建设工程类)评标专家考试(建设工程类)考前冲刺模拟题及答案
- 2025年全国新闻记者职业资格考试(新闻基础知识)综合试题及答案
- 2026年广播电视播音员主持人资格考试(广播电视播音主持业务)复习题库含答案大连
- 企业生物质能利用管理办法
- 2026年小学“书香润童心”六一儿童节读书主题活动方案
- 城市生活垃圾及污泥处置行业全方位发展战略选择与路径规划分析报告
- 2025-2030年鸡蛋输送机行业数字营销策略分析研究报告
- 2025-2030年债券交易AI应用行业深度调研及发展战略咨询报告
- 《防止电力建设工程施工安全事故三十项重点要求》宣贯与解读
- 新生儿乳糖不耐受诊断和治疗专家共识(2025年)解读 4
- 高校非学历教育质量评估标准
- 中信集团商标管理办法
- 格力多联机空调维护保养手册
- 国家职业技能标准 4-08-08-07 室内装饰设计师(2023年版)
- 2025年湖南省长沙市初中学业水平考试中考(会考)生物试卷(真题+答案)
- 2021-2025高考数学真题分类汇编专题18统计与统计案例5种常见考法归类(全国版)(解析版)
- 证券销售客户管理办法
- 公司小药箱物品管理制度
- 诊所收费室管理制度
评论
0/150
提交评论