




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工程大学哈尔滨工程大学 程序设计基础程序设计基础 实验报告实验报告 基础实践二基础实践二 姓 名 王明 班 级 20160613 学 号 20160613 实验时间 2017 年 5 月 8 日 成绩 哈尔滨工程大学计算机基础课程教学中心哈尔滨工程大学计算机基础课程教学中心 实验五 实验题目 1 输入两个整数数组 每个数组有 5 个整数 将两者合并并排序输出 设计思想 定义两个 5 个元素的数组 一个 10 个元素的数组 数据 类型为整型 通过 for 循环输入前两个数组的值 并依次存入第三 个数组中 另外编写排序函数 在主函数中调用对第三个数组中的 元素排序并输出 实验代码及注释 include include void f1 int a int i int j int m n c int k m i n j k a i j 2 do while a m k if m n c a m a m a n a n c m 1 n 1 while m n if mi f1 a i n int main int a1 5 a2 5 c 10 printf 请输入两个数组 每组五个整数 n for int i 0 i 5 i scanf d d for int i 0 i 5 i c i a1 i c i 5 a2 i f1 c 0 9 printf 排序后为 n for int i 0 i 10 i printf d c i putchar n system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验用到了循环结构对数组输入 这是对多个数据同时输入的一 种非常方便的方法 利用指针进行排序 由于形参和实参在数据传 递上有单向性 在进行元素交换类数组函数的编写时 需要借用指 针 本实验将其中一个主要功能编写为函数 使代码模块化 利于 阅读查错 实验题目 2 某公司生成 5 种产品 每周记录生产的每种产品数量和销售数量 在每个月月末 公司将对其生产规划进行评估 该评估需要以下一 个或多个信息 a 每周生产和销售的数量 b 所有生产产品的总量 c 所有销售产品的总量 d 每种产品生产和销售的总量 假设生产和销售的产品分别用二维数组 M 4 5 和 S 4 5 表示 其中 M i j 表示第 i 周生产第 j 种产品的数量 S i j 表示第 i 周销售第 j 种 产品的数量 假设使用一维数组 C 5 来表示每种产品的价格 其中 C i 表示第 j 种产品的价格 数组 M S 和 C 的值都在程序中输入 定义两个二维数组 Mvalue 和 Svalue 来表示生产和销售的产品价值 输出变量的计算方式如下 Mvalue i j 第 i 周生产第 j 种产品的价值 M i j C i Svalue i j 第 i 周销售第 j 种产品的价值 S i j C i Mweek i 在 i 周里生产的产品价值 j 从 1 到 5 求和 Mvalue i j Sweek i 在 i 周里所有产品的产品价值 j 从 1 到 5 求和 Svalue i j Mproduct i 在本月里生成第 j 种的产品价值 i 从 1 到 4 求和 Mvalue i j Sproduct i 在本月里销售第 j 种的产品价值 i 从 1 到 4 求和 Svalue i j Mtotal 在本月里生成所有产品的产品总价值 i 从 1 到 4 求和 Meek i j Stotal 在本月里销售所有产品的产品总价值 i 从 1 到 4 求和 Seek i j 请编程实现数据的输入和输出 设计思想 本实验中涉及多组数值 如数量 周数 价值等 根据 题目要求定义四个二维数组 分别表示生产和销售的数量及价值 再定义四个一维数组表示生产和销售的周数以及产品价值 最后 根据题目中给定的计算方法理清数组之间关系 设计函数进行计算 实验代码及注释 include include int main int M 4 5 0 S 4 5 0 C 5 0 Mvalue 4 5 0 Svalue 4 5 0 Mwee k 5 0 Sweek 5 0 Mproduct 5 0 Sproduct 5 0 Mtotal 0 Stotal 0 int Mt 0 St 0 sum 0 for int j 0 j 5 j printf C d j 1 scanf d for int i 0 i 4 i for int j 0 j 5 j printf M d d i 1 j 1 scanf d Mvalue i j M i j C j for int i 0 i 4 i for int j 0 j 5 j printf S d d i 1 j 1 scanf d Svalue i j S i j C j for int i 0 i 4 i for int j 0 j 5 j Mweek i Mvalue i j Sweek i Svalue i j for int j 0 j 5 j for int i 0 i 4 i Mproduct j Mvalue i j Sproduct j Svalue i j for int i 0 i 4 i Mtotal Mweek i Stotal Sweek i printf a n for int i 0 i 4 i printf 第 d 周生成数量 d n i 1 M i 0 M i 1 M i 2 M i 3 M i 4 printf 第 d 周销售数量 d n i 1 S i 0 S i 1 S i 2 S i 3 S i 4 printf n printf b n for int i 0 i 4 i for int j 0 j 5 j Mt M i j St S i j printf 所有生产产品的总量 d n Mt printf n printf c n 所有销售产品的总量 d n St printf n printf d n for int j 0 j 5 j printf 第 d 种产品生产的总量 d n j 1 M 0 j M 1 j M 2 j M 3 j printf 第 d 种产品销售的总量 d n j 1 S 0 j S 1 j S 2 j S 3 j printf n for int i 0 i 4 i for int j 0 j 5 j printf Mvalue d d d n i 1 j 1 Mvalue i j printf Svalue d d d n i 1 j 1 Svalue i j printf n for int i 0 i 4 i printf Mweek d d n i 1 Mweek i printf Sweek d d n i 1 Sweek i printf n for int j 0 j 5 j printf Mproduct d d n j 1 Mproduct j printf Sproduct d d n j 1 Sproduct j printf n printf Mtotal d n Mtotal printf Stotal d n Stotal system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验计算方法已经给出 但涉及较多数组 关系复杂 由于一个 数组可以存放多个数据 导致数据之间关系难以理清 求解这类问 题时 要小心谨慎地先理清数据之间的关系 再根据给定的算法进 行计算 实验题目 3 编程将一个字符串插入到另一个字符串的第 n 个位置 设计思想 定义两个较大的数组 数据类型为字符型 利用循环对 数组赋值 定义一个变量控制插入的位置 用 strlen 函数计算两组 字符串长度 在第二个数组中为第一个数组让开位置 留出空位 使原有元素后移至第一数组完全插入时末尾位置 用第一个数组中 的字符串覆盖第二个数组中相应位置字符 达到插入的目的 实验代码及注释 include include include int main int n i j int len1 len2 char str1 256 str2 256 printf 请输入 str1 scanf s printf 请输入 str2 scanf s len1 strlen str2 len2 strlen str1 n 1 printf 请输入 n scanf d for i n 1 j 0 i len2 j strlen str1 i j str2 len1 str2 i str2 i str1 j len1 printf s str2 system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验用了循环结构对数组进行赋值 这是对多个数据同时输入的 一种非常方便的方法 同时 本实验采取了将原有元素后移为即将 插入的元素 让位 的插入方法 这也是一种比较常用的方法 在 对数组中元素进行移位时 要特别注意是否相差一 因为数组计数 从零开始 这种问题特别容易发生 所以 在查错时也要特别注意 这一点 实验题目 4 编写一个函数 使输入的一个字符串按反序存放 在主函数中输入 和输出字符串 设计思想 设计函数对数组中的字符串进行反序排列 首先设计一 个函数对数组中的两个元素进行交换 从首尾两端同时进行 第一 位和最后一位交换第二位和倒数第二位进行交换 依次类推 实现 数组的反序 在主函数中调用 实验代码及注释 include include include define swap a b char temp temp a a b b temp void f2 char s int lenth strlen s char temp for int i 0 i lenth 2 i swap s i s lenth 1 i int main char s 256 printf 请输入一串字符 n scanf s f2 s printf 反序后为 n printf s s system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验通过利用数组直接作为函数形参 直接对数组进行反序 省 去了借用指针的过程 更加简洁方便 实验题目 5 编写程序 从键盘输入一行字符 统计其中英文字母数 空格 数 字和其他字符数的个数 设计思想 分别编写三个函数对字符进行检测 函数的编写根据 ASCll 码进行检测 函数结果返回 1 或 0 符合要求返回 1 反之返 回 0 在主函数中对输入的字符串进行逐位检测 直接利用三个函 数的返回值进行计数 最后分别输出结果 实验代码及注释 include include int zimu char s if 64 s else return 0 int kongge char s if s return 1 else return 0 int shuzi char s if 48 s else return 0 int main char s int zm 0 kg 0 sz 0 qita 0 printf 请输入一串字符 n while s getchar n zm zimu s kg kongge s sz shuzi s printf 字母 d n 空格 d n 数字 d zm kg sz system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验利用了 ASCll 码对字符进行判断 由于字符与 ASCll 码一一对 应 所以 ASCll 码经常被用来判断字符 本实验中将函数的返回值定 位 0 或 1 可以直接用来计数 省去了再次计数的麻烦 实验六 实验题目 1 编程序求不超过 2000 的所有对称数 请编写函数 判断一个数字是 否为对称数 若是对称数 函数返回值为 1 否则返回值为 0 主函 数完成数据的输入与结果的输出 设计思想 定义一个五位数组 数据类型为字符型 设计函数通过 指针对输入字符串的首位和尾位进行比较 然后向中间靠拢 最后 得出是否为对称数 作为主函数里的判断条件 在主函数中输入 输出并调用此函数 实验代码及注释 include include include int panduan char s int n strlen s int t n 2 char p1 p2 p1 s p2 p1 n 1 for int i 0 i t i if p1 i p2 i return 0 return 1 int main char s 5 int a b c printf 2000 以内对称数有 n for int n 1 n 2000 n sprintf s d n b panduan s if b 1 printf d t n printf 请输入一个数 scanf d sprintf s d a c panduan s if c 1 printf d 是对称数 n a else printf d 不是对称数 n a system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验要求判断是否为对称数 很容易想到直接输入数字求其相应 数位再进行对比 不过 本实验采用判断字符的方式 使程序更加 简洁 占用内存更小 同时 本函数采用指针指向字符串的相应位 直接进行比较 非常方便 实验题目 2 请编写函数 判断一个字符串是否是回文 若是回文 函数返回值 为 1 否则返回值为 0 设计思想 采用指针的运算进行移位 在这一过程中对数组的相应 位进行比较 从首位和尾位开始比较 比较完成后进行移位 直至 全部比较结束 将比较结果作为判断条件 决定是反回何值 实验代码及注释 include include include int panduan char s int n char p1 p2 p1 s p2 s n 1 for int i 0 i n 2 i if p1 i p2 i return 0 return 1 int main char s 128 printf 请输入一串字符 n scanf s if strlen s 1 panduan s strlen s printf 1 n else printf 0 n system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验与上一实验有很大的相似性 函数采用指针指向字符串的相 应位 直接进行比较 比较完成后通过指针的运算进行移位 非常 方便 在解决多数据问题需要移位时 指针的运算是一种很好的方 法 实验题目 3 分别利用行指针和指向元素的指针求整型二维数组中最大的元素及 其所在的行号与列号 设计思想 通过循环方法对数组进行赋值 指向行时 分别判断每 一行最大值再进行比较 同时记录行号和列号 指向元素时 比较 所有元素大小 找出最大值 并记录行号和列号 实验代码及注释 include include int main int M N printf 请输入数组的行和列 n scanf d d int a M N max h l nu 0 int p N q printf 请输入 d 个数字 n M N for int i 0 i M i for int j 0 j N j scanf d printf n p a max 0 指向元素方案 for int i 0 i M i for int j 0 j N j if max p i j max p i j h i l j printf 指向元素 t 最大值为 d 所在行为 d 所在列为 d n max h 1 l 1 指向行方案 max a 0 0 q a 0 for int i 0 q a 0 M N q if max q nu i max q i h nu N l nu N printf 指向行 t 最大值为 d 所在行为 d 所在列为 d n max h 1 l 1 system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 实验中考察了指向行和指向元素两种指针方法 指针分为多种 多 级 在使用指针时 可以考虑多种不同的方式进行函数设计 以最 简为目的 实验题目 4 编写程序 输入 5 个单词 请将它们按从小到大的顺序排序后输出 设计思想 实验代码及注释 include include include void paixu char s 32 char zj 32 for int i 0 i 4 i for int j i 1 j 5 j if strcmp s j s i 0 strcpy zj s i strcpy s i s j strcpy s j zj int main printf 请输入五个单词 n char s 5 32 for int i 0 i 5 i scanf s s i paixu s for int i 0 i 5 i printf s n s i system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验中调用了字符串函数 这几个函数在比较字符串以及字符串 的长度计算 复制字符串方面十分方便 要注意在调用字符串函数 前要调用 string h 头文件 实验题目 5 输入一个三位数 计算该数各位上的数字之和 如果在 1 12 之内 则输出与和数相对应的月份的英文名称 否则输出 例如 输入 123 输出 1 2 3 6 June 输入 139 输出 1 3 9 13 要求 用指针数组记录各月份英文单词的首地址 设计思想 定义一个指针数组 数据类型为字符型 用指针数组记 录各月份英文单词的首地址 对输入的三位数分别求各个数位 相 加判断输出几月或者 实验代码及注释 include include int main int n m char yue January February March April May June July Agu est September October November December printf 请输入一个三位数 n scanf d m n 10 n 10 10 n 100 if m 1 printf d d d d t s n 100 n 10 10 n 10 m yue m 1 else printf d d d d t n 100 n 10 10 n 10 m system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验用到了指针数组 用指针数组记录各月份英文单词的首地址 可以十分方便地找到每个月并输出 实验七 实验题目 1 定义结构体类型 分别编写函数实现复数的加 减运算 在主函数 中调用这些函数进行计算并输出计算结果 设计思想 定义复数结构体 结构体里包含两个整型变量 分别代 表复数的实部和虚部 定义复数加减的函数 在主函数里输入输出 并调用这些函数 实验代码及注释 include include struct fushu int i int j fushu1 fushu2 jieguo int jia jieguo i fushu1 i fushu2 i jieguo j fushu1 j fushu2 j int jian jieguo i fushu1 i fushu2 i jieguo j fushu1 j fushu2 j int main printf 请分别输入两个复数的实部和虚部 n scanf d d d d jia printf 他们的和是 d di n jieguo i jieguo j jian printf 他们的差是 d di n jieguo i jieguo j system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验中运用到了基本的结构体功能 实现了结构体中变量的相加 减 为进一步尝试机构体类型打下了基础 实验题目 2 有 10 本图书 每本图书的信息包括书号 书名 作者 价格 编写 函数完成以下功能 1 从键盘输入数据 将其存放在结构体数组中 2 输入书名 在数组中查找是否存在此书 有此书则输出此书的 信息 无此书则输出提示信息 3 输入一个价格 将高于此价格的图书信息输出 设计思想 定义一个结构体 包含一个整型变量 代表书号 两个 字符型变量 分别代表书名和作者名 一个实型 代表书价 通过 循环结构输入每个变量的内容 通过条件判断实现题目要求的查找 功能 实验代码及注释 include include include struct book int NUM char name 10 char author 10 float price somebook 10 int hasBook char name book oneBook if strcmp oneBook name name 0 return 1 return 0 int higher float price book oneBook if oneBook price price return 1 return 0 void input printf 请依次输入十本书的 n1 书号 2 书名 3 作者 4 价格 n for int i 0 i 10 i scanf f s s f void searchBook name char name 1 int i book 0 for int i 0 i 10 i if hasBook name 1 somebook i 1 printf 0f s s 2f n somebook i NUM somebook i name somebook i author somebook i price i book if i book 0 printf 没有这本书 n void searchBook price float price 1 for int i 0 i 10 i if higher price 1 somebook i 1 printf 0f s s 2f n somebook i NUM somebook i name somebook i author somebook i price int main input char name 1 10 printf 输入你想查找的书 scanf s name 1 searchBook name name 1 float price 1 printf 输入价格 scanf f searchBook price price 1 system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验在结构体中加入了更多的类型 还运用到了循环结构对结构 体里的变量进行赋值 是一种比较方便的写法 同时 还用到了对 结构体里变量的判断 实验题目 3 设有若干个人员的数据 其中有学生和教师 学生的数据包括 姓 名 学号 性别 班级 教师数据包括 姓名 职工号 性别 职 务 现要求将老师和学生数据放在同一表格中 其中老师的职务和 学生的班级共享空间 编程输入相应的数据 然后再输出数据 设计思想 定义一个结构体 包含各个数据 其中最后一项老师职 务和学生班级用共用体 根据学号里的是否有 s 判断是老师还是学 生 决定输出类型 实验代码及注释 include include include define N 4 struct person char name 16 char id 20 char sex 5 union int clas char office 16 claoff struct person next head pthis void input struct person tmp printf 请输入个人信息 n printf n for int i 1 iname if tmp id 0 s scanf d else scanf s tmp claoff office tmp next NULL if head NULL head tmp pthis head else pthis next tmp pthis pthis next void output printf n n 数据列表 n printf 姓名 t 学号 职工号 t 性别 t 班级 职务 n printf n if head NULL printf 错误 没有数据 n return pthis head while pthis NULL if pthis id 0 s printf s t s t s t d n pthis name pthis id pthis sex pthis claoff clas else printf s t s t s t s n pthis name pthis id pthis sex pthis claoff office pthis pthis next int main printf n 学生学号以 s 开头 成员数为 4 人 n n head NULL input output system pause return 0 验证与结论 程序运行正常 结果输出正确 总结与心得体会 本实验用到了结构体和共用体 共用体可以对不同类型的同一栏数 据进行分类 根据判断输出不同数据 实验八 实验题目 1 从键盘输入一串大小写字母混合的字符串 将其中的所有小写字母 转换成大写字母 大写字母转换成小写字母 并将转换后的小写字 母和大写字母分别存入不同的文件中 设计思想 根据 ASCll 码对大小写字母进行转换 通过循环结构对每 个字母执行该操作 将转换后的字母打印到屏幕并写入文件 实验代码及注释 include include include int main FILE fp1 fp2 char zimu 128 int i int N strlen zimu 初始定义 fp1 fopen daxie txt w fp2 fopen xiaoxie txt w 文件打开操作 if fopen daxie txt w NULL fopen xiaoxie txt w NULL printf 找不到文件 return 1 printf 请输入一串大小写混合的字母 n gets zimu for i 0 i 65 fputc zimu i fp1 printf c zimu i fclose fp1 fclose fp2 system pause return 0 验证与结论 程序运行正常 结果输出正确 文件调用正确 总结与心得体会 本实验难点主要在于对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招商银行广州市天河区2025秋招笔试性格测试题专练及答案
- 招商银行成都市双流区2025秋招群面模拟题及高分话术
- 2025年自考专业(电子商务)模拟题库附答案详解(达标题)
- 中信银行保定市定州市2025秋招半结构化面试15问及话术
- 2025年安徽亳州市市直事业单位招聘58人笔试高频难、易错点备考题库及参考答案详解1套
- 兴业银行天津市东丽区2025秋招英文面试题库及高分回答
- 中信银行杭州市滨江区2025秋招笔试英文行测高频题含答案
- 华夏银行银川市贺兰县2025秋招笔试英语题专练及答案
- 兴业银行无锡市梁溪区2025秋招金融科技岗笔试题及答案
- 2024-2025学年度自考专业(汉语言文学)能力提升B卷题库(A卷)附答案详解
- 上海市静安区2022-2023学年高一下学期期末数学试题(解析版)
- TPM管理知识培训
- 2023年国家公务员考试申论真题及答案解析(地市级)
- 关于无梁楼盖和梁板式楼盖经济性的比较
- 第十四杂环化合物
- RB/T 306-2017汽车维修服务认证技术要求
- 《数学软件》课程教学大纲
- 《细胞工程学》考试复习题库(带答案)
- 粤教花城版小学音乐歌曲《哈哩噜》课件
- 第六讲:RCEP服务贸易与投资解读课件
- 展筋丹-中医伤科学讲义-方剂加减变化汇总
评论
0/150
提交评论