您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 华中科技大学c++第4次上机作业
华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第四次上机实验实验学时:4姓名:学号:班级:电气实验日期:2017.4.13教师批阅签字:一、实验目的掌握一维数组的定义、输入、输出和基本操作。掌握二维数组的定义、输入、输出和基本操作。掌握字符串的存储和访问。使用数组处理解决实际问题的能力。动态数组的访问二、实验内容1.阅读程序1)#includeiostream#includecmathusingnamespacestd;intmain(){intn=5;inti,a[n];for(i=0;in;i++){cina[i];couta[i];}return0;}运行上述的程序,改正其中的错误,并解释错误原因。错误:1.i后面的逗号为中文。2.数组长度不能用变量表示。修改后的程序:#includeiostream#includecmathusingnamespacestd;intmain(){intn=5;inti,a[5];for(i=0;in;i++){cina[i];couta[i];}return0;}2)#includeiostream#includecmathusingnamespacestd;intmain(){inti,a[5]={0,1,2,3,4};for(i=0;i=5;i++)couta[i];return0;}运行上述的程序,其结果是否正确,如不确请修改正确,并解释原因。错误:1.定义变量时的逗号为中文。2.i最大值为4。正确的程序:#includeiostream#includecmathusingnamespacestd;intmain(){inti,a[5]={0,1,2,3,4};for(i=0;i=4;i++)couta[i];return0;}3)#includeiostreamusingnamespacestd;intmain(){charrstr[10]=abcdefgh,dstr[10];inti;for(i=0;rstr[i]!='\0';i++)//循环条件可以写成rstr[i]!=0;或rstrdstr[i]=rstr[i];cout输出字符串dstr:dstrendl;return0;}上述程序的功能是将字符串rstr复制到目标串dstr中,运行该程序结果是否正确,如不正确请修改正确,并解释原因。不正确。原因:在dstr[10]数组中,未说明在何时dstr[10]输出结束程序默认输出到最后,导致出现问题。修改后的程序:#includeiostreamusingnamespacestd;intmain(){charrstr[10]=abcdefgh,dstr[10];inti;for(i=0;rstr[i]!='\0';i++)dstr[i]=rstr[i];dstr[i+1]='\0';cout输出字符串dstr:dstrendl;return0;}程序截图:4)#includeiostreamusingnamespacestd;intmain(){charname1[]={'a','b','c','d'};charname2[]=”abcd”;for(i=0;i4;i++)coutname1[i];coutendl;coutname1endl;coutname2endl;return0;}运行上述程序,比较三种输出的异同,并解释原因。①程序存在错误未定义i的类型。②原因:第一个输出:输出了数组的前四个字符,即abcd.第二个输出:输出了数组的前四个字符后没有结束的标志故继续输出后续的内容,由于未进行定义故输出的为如图所示第三个输出:name2[]在定义时前四个字符为abcd,第五个字符为\0结束标志,如图所示故输出全部时只会输出结束标志之前的内容。5)#includeiostreamusingnamespacestd;intmain(){inta=10,b=20,*p=&a,*q;coutaendl;cout*pendl;*p=b;coutaendl;cout*pendl;*q=b;coutbendl;cout*qendl;return0;}编译调试上述程序,如有错误请修改,并解释原因。编译未出现错误但程序会终止原因:*q初始时未定义其位置,所以*q可能为程序关键位置,修改后会导致程序异常,只能执行这个语句之前的语句。改正后的程序:#includeiostreamusingnamespacestd;intmain(){inta=10,b=20,c,*p=&a,*q=&c;coutaendl;cout*pendl;*p=b;coutaendl;cout*pendl;*q=b;coutbendl;cout*qendl;return0;}5)inta[5]={1,2,3,4,5};int*p=a;在上述语句的基础上,请用5种方式输出数组a的各元素。参考教材P142页#includeiostreamusingnamespacestd;intmain(){inta[5]={1,2,3,4,5};int*p=a,i;for(i=0;i=4;i++){couta[i];}coutendl;for(i=0;i=4;i++)cout*(p+i);coutendl;for(i=0;i=4;i++)cout*(a+i);coutendl;for(i=0;i=4;i++)coutp[i];coutendl;for(i=0;i=4;i++)cout*(p++);coutendl;return0;}2.编程题1)定义包含10个元素的一维数组,输入输出各元素的值,然后求出最大值将其与第一个数交换位置后再输出。要求:程序原代码。(直接粘贴在此)#includeiostreamusingnamespacestd;intmain(){inta[10],i,j,c,flag;cout请输入数组的各个元素的值endl;for(i=0;i=9;i++)cina[i];coutendl;for(i=0;i=9;i++)couta[i]'';coutendl;for(i=0;i=9;i++){flag=1;for(j=0;j=9;j++){if(a[i]a[j])flag=0;}if(flag){c=a[0];a[0]=a[i];a[i]=c;}}for(i=0;i=9;i++)couta[i]'';coutendl;}解决本题的算法思路描述定义数组,输入输出数组。通过for循环找出最大的数并进行交换输出交换后的数组调试过程的记载(包括出现的错误,以及修改过程)寻找最大的数值时出现错误通过借助一个flag变量最终解决归纳本题应用的知识点或算法For循环一维数组2)编写一个程序,定义5行4列二维数组,并对前4行4列的元素赋值,计算二维数组前4行各列之和,且将每列之和放于各列最后一行的位置,然后输出该二维数组(按行列的格式输出)。要求:程序原代码。(直接粘贴在此)#includeiostreamusingnamespacestd;intmain(){inta[5][4],i,j;for(i=0;i=3;i++)for(j=0;j=3;j++)cina[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++){couta[i][j]'';if(j==3)coutendl;}return0;}解决本题的算法思路描述定义二维数组求各个列的和输出二维数组的结果调试过程的记载(包括出现的错误,以及修改?)for语句循环条件错误归纳本题应用的知识点或算法For循环二维数组3)编程输出10行的杨辉三角形。(使用二维数组并利用每个系数等于其上两系数之和,要求按等腰三角形的格式输出)要求:程序原代码。(直接粘贴在此)#includeiostream#includeiomanipusingnamespacestd;intmain(){inta[10][10];inti,j,k;for(i=0;i10;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i10;i++)for(j=1;ji;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i10;i++){for(k=i;k=9;k++)cout;for(j=0;j=i;j++){coutsetw(4)a[i][j];}coutendl;}return0;}解决本题的算法思路描述定义二维数组把值为1的数字确定运用杨辉三角的相关规律进行计算调整输出格式调试过程的记载(包括出现的错误,以及修改)最开始输出格式不对,调整输出的空格数量后正常归纳本题应用的知识点或算法二维数组For语句循环Setw()的用法4)编程将一个字符串插入另一个字符串的指定位置。(位置由用户输入)要求:程序原代码。(直接粘贴在此)#includeiostreamusingnamespacestd;intmain(){charaa[100],bb[100],c[100],g;intd,e,f;cout请输入字符串endl;cin.getline(aa,100);cout请输入需要插入的字符串endl;cinbb;cout请输入需要插入的位置endl;cind;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];}coutbb[0]endl;for(;e=100;e++,f++){aa[e]=c[f];}coutaa;return0;}解决本题的算法思路描述定义字符串数组在所给的位置,将其以后的部分赋值给另外一个数组c将要插入的数组与原数组从给定位置连接连接完的数组与数组c再连接得出结果调试过程的记载(包括出现的错误,以及修改)归纳本题应用的知识点或算法字符数组的应用For语句循环5)编程产生10个互不相同的100~200范围内的随机数。要求:程序原代码。(直接粘贴在此)#includeiostream#includecstdlib#includectimeusingnamespacestd;intmain(){inta[10],i,t=0,j;srand(time(0));a[0]=(rand()%100+100);for(i=1;i10;i++){t=0;a[i]=(rand()%100+100);for(j=0;ji;j++)if(a[i]==a[j])t=1;if(t==1)i--;}for(i=0;i10;i++)couta[i];coutendl;return0;}解决本题的算法思路描述每产生一个随机数,就和原本生成的随机数进行比较.如果不相同,就保留.否则重新生成.调试过程的记载(包括出现的错误,以及修改)由于之前已经写过一次未出现错误归纳本题应用的知识点或算法随机数的生成For循环If语句一维数组6)编程将下列10本书的书名升序排序输出。(计算机基础,编译原理,算法基础,计算机原理,高等数学,线性代数,离散数学,大学物理,大学英语,大学英语听力)要求:程序原代码。(直接粘贴在此)#includeiostream#includecs
本文标题:华中科技大学c++第4次上机作业
链接地址:https://www.777doc.com/doc-4897192 .html