




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华 中 科 技 大 学计算机基础与程序设计(C+)实 验 报 告实验名称:第四次上机实验 实验学时:姓名: 学号: 班级: 实验日期: 教师批阅签字:一、实验目的l 掌握一维数组的定义、输入、输出和基本操作。l 掌握二维数组的定义、输入、输出和基本操作。l 掌握字符串的存储和访问。l 使用数组处理解决实际问题的能力。l 动态数组的访问二、实验内容1阅读程序1)#include #includeusing namespace std;int main() int n=5; int i,an; for(i=0;iai; coutai; return 0;运行上述的程序,改正其中的错误,并解释错误原因。正确代码:#include #includeusing namespace std;int main() int i; int a5; for(i=0;iai; coutai; return 0;调试错误:Subscript requires array or pointer type.原因:数组元素个数不能是实数?2)#include #includeusing namespace std;int main() int i,a5=0,1,2,3,4; for(i=0;i=5;i+) coutai;return 0; 运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。 正确代码:#include #includeusing namespace std;int main() int i,a5=0,1,2,3,4; for(i=0;i=5;i+) coutai;return 0; 3) #include using namespace std;int main( )char rstr10 =abcdefgh,dstr10;int i; for(i=0; rstri!=0; i+) /循环条件可以写成 rstri!=0; 或 rstrdstri=rstri; cout输出字符串dstr:dstrendl;return 0;上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。正确代码:#include using namespace std;int main( )char rstr10=abcdefgh,dstr10;int i; for(i=0; rstri!=0;i+) /循环条件可以写成 rstri!=0; 或 rstrdstri=rstri; dstri=0; cout输出字符串dstr:dstrendl;return 0;解释原因:因为赋值时原串的0并没有赋值给目标串,所以循环结束后一定要加上语句dstri=0;否则程序运行会出现异常。4) #include using namespace std;int main( ) char name1 =a,b,c,d; char name2 =”abcd”; for(i=0;i4;i+) coutname1i; coutendl; coutname1endl; coutname2endl; return 0;运行上述程序,比较三种输出的异同,并解释原因。输出1和输出2:字符数组name1的处理与数值型数组没有差异,因为结尾没有0,没有构成c+字符串,若用输出2语句“coutname1;”,就不能当做一个字符串变量整体输出,应该使用 “coutname1i;”输出3:输出的是字符串,初始化时直接用字符串常量赋值。5)#include using namespace std;int main( ) int a=10, b=20,*p=&a,*q; coutaendl; cout*pendl; *p=b; coutaendl; cout*pendl; *q=b; coutbendl; cout*qendl;return 0;编译调试上述程序,如有错误请修改,并解释原因。5)int a5=1,2,3,4,5; int *p=a; 在上述语句的基础上,请用5种方式输出数组a的各元素。参考教材P142页for(i=0;i5;i+) coutai” ”; /下标表示法for(i=0;i5;i+) cout*(p+i)” ”; /指针表示法for(i=0;i5;i+) cout*(a+i)” ”; /下标表示法for(i=0;i5;i+) coutpi” ”; /下标表示法for(i=0;i5;i+) cout*(p+)” ”; /通过移动指针p指向不同的元素2 编程题1)定义包含 10 个元素的一维数组,输入输出各元素的值,然后求出最大值将其与第一个数交换位置后再输出。要求:l 程序原代码。(直接粘贴在此) #include #include using namespace std; int main() int a10; int i,max,j,temp; cout请输入10个数:; for(i=0;iai; max=a0; for(i=0;i10;i+) if(maxai) max=ai; j=i; temp=a0;a0=aj;aj=temp;cout交换后数组endl;for(i=0;i10;i+)coutai ;coutendl;return 0;l 解决本题的算法思路描述利用了经典交换语句实现最大值和第一个数交换,其中j是最大值下标: temp=a0;a0=aj;aj=temp;l 调试过程的记载(包括出现的错误,以及修改过程)l 归纳本题应用的知识点或算法2)编写一个程序,定义 5 行 4 列二维数组,并对前 4 行 4 列的元素赋值,计算二维数组前 4 行各列之和,且将每列之和放于各列最后一行的位置,然后输出该二维数组(按行列的格式输出)。要求:l 程序原代码。(直接粘贴在此)#include #includeusing namespace std;int main( ) int i, j;int a54; cout请输入请输入前四行四列元素:endl;for (i = 0; i = 3; i+) for (j = 0; j aij; for (j = 0; j = 3; j+) a4j = 0;for (i = 0; i = 3; i+) a4j += aij; for (i = 0; i = 4; i+) for (j = 0; j = 3; j+)cout setw(4) aij; cout endl; return 0;l 解决本题的算法思路描述l 调试过程的记载(包括出现的错误,以及修改?)l 归纳本题应用的知识点或算法3)编程输出 10 行的杨辉三角形。(使用二维数组并利用每个系数等于其上两系数之和,要求按等腰三角形的格式输出)要求:l 程序原代码。(直接粘贴在此)#include #include #include using namespace std;int main()int i,j,n;cout请输入行数n;int matrix1010;for(i=0;i=n-1;i+)matrixi0=1;matrixii=1;for(i=2;i=n-1;i+)for(j=1;j=i-1;j+)matrixij=matrixi-1j-1+matrixi-1j;for(i=0;i=n-1;i+)for(j=0;j=i;j+)coutsetw(4)matrixij;coutendl;return 0;l 解决本题的算法思路描述l 调试过程的记载(包括出现的错误,以及修改)l 归纳本题应用的知识点或算法4)编程将一个字符串插入另一个字符串的指定位置。(位置由用户输入)要求:l 程序原代码。 (直接粘贴在此)#include using namespace std;int main()int len1,len2,len4,i,x,k=0;char a100,b100, c100;cout请输入一个字符串:a;cout请输入要插入的字符串:b;len1=strlen(a);len2=strlen(b);cout请输入你要插入的位置:x;for(i=x-1;ai!=0;i+)ck+=ai;len4=x-1;for(i=0;ilen2;i+)alen4+=bi;for(i=0;ilen1-x+1;i+)alen4+=ci;alen4=0;coutaendl;return 0; l 解决本题的算法思路描述l 调试过程的记载(包括出现的错误,以及修改)l 归纳本题应用的知识点或算法5) 编程产生10个互不相同的100200范围内的随机数。要求:l 程序原代码。 (直接粘贴在此)l 解决本题的算法思路描述l 调试过程的记载(包括出现的错误,以及修改) l 归纳本题应用的知识点或算法6) 编程将下列10本书的书名升序排序输出。(计算机基础,编译原理,算法基础,计算机原理,高等数学,线性代数,离散数学,大学物理,大学英语,大学英语听力)要求:l 程序原代码。 (直接粘贴在此)#includeusing namespace std;int main()char *name10=计算机基础,编译原理,算法基础,计算机原理,高等数学,线性代数,离散数学,大学物理,大学英语,大学英语听力;int i,look=0,position;char searchname10;cout请输入要查找的书名:;cin.getline(searchname,21);for(i=0;i10;i+)if(strcmp(namei,searchname)=0) look=1; position=i+1;if(look=1) coutsearchname存在,其位置是:positionendl;else coutsorrysearchname不存在endl;return 0;l 解决本题的算法思路描述本题中书名的比较实质是两个字符串比较,不能直接用“namei=searchname;”,只能使用strcmp(字符数组1,字符数组2)l 调试过程的记载(包括出现的错误,以及修改) char *name10=计算机基础,编译原理,算法基础,计算机原理,高等数学,线性代数,离散数学,大学物理,大学英语,大学英语听力; 这条语句的分号错用成拼音的分号了。l 归纳本题应用的知识点或算法7)用数组编程实现将10进制整数转换成2进制数。要求:l 程序原代码。 (直接粘贴在此)#include using namespace std; int main() int k,a100,m,n; int i=0; cout请输入你要转换的数:k; do m=k/2; n=k%2; k=m; ai+=n; while(m!=0); i-; for(;i=0;i-) coutai; coutendl; return 0; l 分别用200,520,1024,2048 等数据测试。将其与第3次上机作业中不用数组做结果有何不同?并解释原因。8 )选做题 从键盘输入 2 个字符串,判断其中较短的串是否是另一个串的子字符串。如:“ab”是”fgabcde” 的子串,不是”fgacbdef”的子串要求:l 程序原代码。(直接粘贴在此)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 神经记忆关联-洞察及研究
- 艺术旅游与社区发展-洞察及研究
- 碳足迹与库存管理-洞察及研究
- 火星土壤粘土矿物识别-洞察及研究
- 卫星网络路由优化-洞察及研究
- 药代动力学研究-第8篇-洞察及研究
- 压力容器制造安全标准-洞察及研究
- 跨境数据监管立法-洞察及研究
- 2025版燃料电池关键材料供应合同
- 2025年新型玻璃材料研发采购合同范本
- 2025年财政管理知识竞赛题库及答案
- 满意度调查测评方案
- 区域产业协同发展面试题
- 当归种植培训课件
- 三年(2023-2025)中考语文真题分类汇编(全国)专题22 议论文阅读(解析版)
- 学习2025年初中初三开学第一课专题
- 2025年浙江省教师招聘考试(语文)历年参考题库含答案详解(5卷)
- 医学类案例教学法
- 2025文化和旅游部直属事业单位招聘社会人员29人模拟试卷附答案详解
- GA/T 2158-2024法庭科学资金数据获取规程
- 《工程勘察设计收费标准》(2002年修订本)
评论
0/150
提交评论