华中科技大学c++第4次上机作业.docx
- 文档编号:28564299
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:22
- 大小:37.38KB
华中科技大学c++第4次上机作业.docx
《华中科技大学c++第4次上机作业.docx》由会员分享,可在线阅读,更多相关《华中科技大学c++第4次上机作业.docx(22页珍藏版)》请在冰豆网上搜索。
华中科技大学c++第4次上机作业
华中科技大学
《计算机基础与程序设计(C++)》
实验报告
实验名称:
第四次上机实验实验学时:
4
姓名:
学号:
班级:
电气
实验日期:
教师批阅签字:
一、实验目的
●掌握一维数组的定义、输入、输出和基本操作。
●掌握二维数组的定义、输入、输出和基本操作。
●掌握字符串的存储和访问。
●使用数组处理解决实际问题的能力。
●动态数组的访问
二、实验内容
1.阅读程序
1)#include
#include
usingnamespacestd;
intmain()
{intn=5;
inti,a[n];
for(i=0;i {cin>>a[i]; cout< } return0; } 运行上述的程序,改正其中的错误,并解释错误原因。 错误: 1.i后面的逗号为中文。 2.数组长度不能用变量表示。 修改后的程序: #include #include usingnamespacestd; intmain() {intn=5; inti,a[5]; for(i=0;i {cin>>a[i]; cout< } return0; } 2)#include #include usingnamespacestd; intmain() {inti,a[5]={0,1,2,3,4}; for(i=0;i<=5;i++) cout< return0;} 运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。 错误: 1.定义变量时的逗号为中文。 2.i最大值为4。 正确的程序: #include #include usingnamespacestd; intmain() {inti,a[5]={0,1,2,3,4}; for(i=0;i<=4;i++) cout< return0;} 3)#include usingnamespacestd; intmain() { charrstr[10]="abcdefgh",dstr[10]; inti; for(i=0;rstr[i]! ='\0';i++)//循环条件可以写成rstr[i]! =0;或rstr dstr[i]=rstr[i]; cout<<"输出字符串dstr: "< return0; } 上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。 不正确。 原因: 在dstr[10]数组中,未说明在何时dstr[10]输出结束 程序默认输出到最后,导致出现问题。 修改后的程序: #include usingnamespacestd; intmain() { charrstr[10]="abcdefgh",dstr[10]; inti; for(i=0;rstr[i]! ='\0';i++) dstr[i]=rstr[i]; dstr[i+1]='\0'; cout<<"输出字符串dstr: "< return0; } 程序截图: 4)#include usingnamespacestd; intmain() { charname1[]={'a','b','c','d'}; charname2[]=”abcd”; for(i=0;i<4;i++) cout< cout< cout< cout< return0; } 运行上述程序,比较三种输出的异同,并解释原因。 ①程序存在错误未定义i的类型。 ②原因: 第一个输出: 输出了数组的前四个字符,即abcd. 第二个输出: 输出了数组的前四个字符后没有结束的标志故继续输出后续的内容,由于未进行定义故输出的为如图所示 第三个输出: name2[]在定义时前四个字符为abcd,第五个字符为\0结束标志,如图所示 故输出全部时只会输出结束标志之前的内容。 5)#include usingnamespacestd; intmain() {inta=10,b=20,*p=&a,*q; cout< cout<<*p< *p=b; cout< cout<<*p< *q=b; cout< cout<<*q< return0; } 编译调试上述程序,如有错误请修改,并解释原因。 编译未出现错误但程序会终止 原因: *q初始时未定义其位置,所以*q可能为程序关键位置,修改后会导致程序异常,只能执行这个语句之前的语句。 改正后的程序: #include usingnamespacestd; intmain() {inta=10,b=20,c,*p=&a,*q=&c; cout< cout<<*p< *p=b; cout< cout<<*p< *q=b; cout< cout<<*q< return0; } 5)inta[5]={1,2,3,4,5}; int*p=a; 在上述语句的基础上,请用5种方式输出数组a的各元素。 参考教材P142页 #include usingnamespacestd; intmain() {inta[5]={1,2,3,4,5}; int*p=a,i; for(i=0;i<=4;i++) { cout< } cout< for(i=0;i<=4;i++) cout<<*(p+i); cout< for(i=0;i<=4;i++) cout<<*(a+i); cout< for(i=0;i<=4;i++) cout< cout< for(i=0;i<=4;i++) cout<<*(p++); cout< return0; } 2.编程题 1)定义包含10个元素的一维数组,输入输出各元素的值,然后求出最大值将其与第一个数交换位置后再输出。 要求: ●程序原代码。 (直接粘贴在此) #include usingnamespacestd; intmain() { inta[10],i,j,c,flag; cout<<"请输入数组的各个元素的值"< for(i=0;i<=9;i++) cin>>a[i]; cout< for(i=0;i<=9;i++) cout< cout< for(i=0;i<=9;i++) {flag=1; for(j=0;j<=9;j++) { if(a[i] flag=0; } if(flag) {c=a[0]; a[0]=a[i]; a[i]=c; } } for(i=0;i<=9;i++) cout< cout< } ●解决本题的算法思路描述 定义数组,输入输出数组。 通过for循环找出最大的数并进行交换 输出交换后的数组 ●调试过程的记载(包括出现的错误,以及修改过程) 寻找最大的数值时出现错误 通过借助一个flag变量最终解决 ●归纳本题应用的知识点或算法 For循环 一维数组 2)编写一个程序,定义5行4列二维数组,并对前4行4列的元素赋值,计算二维数组前4行各列之和,且将每列之和放于各列最后一行的位置,然后输出该二维数组(按行列的格式输出)。 要求: ●程序原代码。 (直接粘贴在此) #include usingnamespacestd; intmain() { inta[5][4],i,j; for(i=0;i<=3;i++) for(j=0;j<=3;j++) cin>>a[i][j]; for(j=0;j<=3;j++) a[4][j]=a[0][j]+a[1][j]+a[2][j]+a[3][j]; for(i=0;i<=4;i++) for(j=0;j<=3;j++) { cout< if(j==3) cout< } return0; } ●解决本题的算法思路描述 定义二维数组 求各个列的和 输出二维数组的结果 ●调试过程的记载(包括出现的错误,以及修改? ) for语句循环条件错误 ●归纳本题应用的知识点或算法 For循环 二维数组 3)编程输出10行的杨辉三角形。 (使用二维数组并利用每个系数等于其上两系数之和,要求按等腰三角形的格式输出) 要求: ●程序原代码。 (直接粘贴在此) #include #include usingnamespacestd; intmain() { inta[10][10]; inti,j,k; for(i=0;i<10;i++) { a[i][0]=1;a[i][i]=1; } for(i=2;i<10;i++) for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) { for(k=i;k<=9;k++) cout<<""; for(j=0;j<=i;j++) { cout< } cout< } return0; } ●解决本题的算法思路描述 定义二维数组 把值为1的数字确定 运用杨辉三角的相关规律进行计算 调整输出格式 ●调试过程的记载(包括出现的错误,以及修改) 最开始输出格式不对,调整输出的空格数量后正常 ●归纳本题应用的知识点或算法 二维数组 For语句循环 Setw()的用法 4)编程将一个字符串插入另一个字符串的指定位置。 (位置由用户输入) 要求: ●程序原代码。 (直接粘贴在此) #include usingnamespacestd; intmain() { charaa[100],bb[100],c[100],g; intd,e,f; cout<<"请输入字符串"< cin.getline(aa,100); cout<<"请输入需要插入的字符串"< cin>>bb; cout<<"请输入需要插入的位置"< cin>>d; e=d;f=d; g=bb[0]; for(;d<=100;d++) { c[d]=aa[d]; } aa[e]='\0'; bb[0]=g; for(d=0;bb[d];e++,d++) { aa[e]=bb[d]; } cout< for(;e<=100;e++,f++) { aa[e]=c[f]; } cout< return0; } ●解决本题的算法思路描述 定义字符串数组 在所给的位置,将其以后的部分赋值给另外一个数组c 将要插入的数组与原数组从给定位置连接 连接完的数组与数组c再连接得出结果 ●调试过程的记载(包括出现的错误,以及修改) ●归纳本题应用的知识点或算法 字符数组的应用 For语句循环 5)编程产生10个互不相同的100~200范围内的随机数。 要求: ●程序原代码。 (直接粘贴在此) #include? #include? #include? using? namespace? std; int? main(? ) { ? int? a[10],i,t=0,j; ? srand(time(0)); ? a[0]=(rand()%100+100); ? for(i=1;i<10;i++) ? { ? ? t=0; ? ? a[i]=(rand()%100+100); ? ? for(j=0;j ? ? ? if(a[i]==a[j])? t=1; ? ? if(t==1)? i--;? ? } ? for(i=0;i<10;i++) ? ?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 c+ 上机 作业