您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 理论文章 > c--华科第四次作业讲解
华中科技大学《计算机基础与程序设计(C++)》实验报告实验名称:第四次上机实验实验学时:系别:专业:班级:姓名:马乾清学号:U201511417实验日期:教师批阅签字:一、实验内容1.编程用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出其中的素数。2.编程将一组数据从大到小排序后输出,要求显示每个元素及它们在原数组中的下标。3.编程输入10个字符到一维字符数组s中,将字符串逆序输出。4.编写程序将4阶方阵转置。如下所示:5.编程输出10行的杨辉三角形。(使用二维数组并利用每个系数等于其上两系数之和。)6.将一个字符串插入另一个字符串的指定位置。7.现有10个学生,期终考试有5门课程。求每个学生总成绩、平均成绩,并按总成绩高分到低分输出。8.把有序的两个数组a和b合并,要求合并后的数组依然有序。�分析:两个数组合并时,可为每个数组安排一个指针,从第一个元素开始比较两个数组中对应的元素,将小的取出,顺序放入新的数组中;取出所指元素的指针,后移再比较,依次类推,直到其中一个数组的元素已全部放入新数组中,再把另一数组余下的元素全部顺序放入新数组中即可。9.现有5个小朋友编号为1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁,身上都有若干个糖果,现在做一个分糖果游戏。从1号小朋友开始,将他的糖果均分三份(如果有多余的,则将多余的糖果吃掉),自己留一份,其余两份分给相邻的两个小朋友。接着2号、3号、4号、5号小朋友也这如果做。问一轮后,每个小朋友手上分别有多少糖果。10.从键盘输入2个字符串,45120判断其中较短的串是否是另一个串的子字符串。11.修改例5.23,将其升序排序,然后折半查找是否有查找的书。二、算法说明(用文字说明)1、①先用随即函数产生10个随机数②再用循环将这10个数放到一个数组中③最后用循环对这个数组中的每个元素判定其是否是素数,并将素数输出。2、直接使用选择排序10个数字进行排序,并将其下标带出来一起输出。3、定义2个字符数组,用循环将第一个数组的最后一个元素放到第二个数组的第一个元素的位置上,依此类推,完成字符串的逆序,最后将第二个字符输出。4、定义2个二维数组,将第一个二维数组的下标交换后,放入第二个二维数组,依此类推,完成对第一个二维数组的交换后,用循环将第二个二维数组输出。5、①首先定义1个二维数组,并将该素组中2个下标相等的数和第一列的数赋值为1,②在用循环将每一个数用其“肩上”的两个数的和赋值,③最后用循环输出这个二维数组即可。6、①首先定义3个字符数组②并将要插入的字符和被插入的字符输入其中,要插入的字符位置,③并将该位置之前的元素赋给第3个数组,④然后再将要插入的字符继续赋给第3个数组以后的元素⑤最后将该位置之后的第一个字符数组的元素继续赋给第3个数组⑥最后将第3个字符数组输出即可。7、使用二维数组来储存每个学生的各科成绩、平均成绩以及总成绩、最后以总成绩高低用选择排序或者冒泡排序排序即可。8、先定义两个数组并输入数组元素,两个数组合并时,为每个数组安排一个指针,从第一个元素开始比较两个数组中对应的元素,将小的取出,顺序放入新的数组中;取出所指元素的指针,后移再比较,依次类推,直到其中一个数组的元素已全部放入新数组中,再把另一数组余下的元素全部顺序放入新数组中即可。9、先定义1个数组并将每个小朋友所拥有的糖果数输入到这个数组当中,然后用循环计算出每个小朋友经过题目所给的规则运算后的糖果数并将这个数重新赋到这个数组中,最后用循环将各个小朋友所剩余的糖果数输出即可。10、首先需要定义两个字符数组并输入两个字符串,然后用循环从第一个字符数组的元素中查找与第二个字符数组的第一个元素相同的元素,如果相同再继续比较接下来的元素是否相同,以此类推,最后完成第一个字符数组的查找并将结果输出。11、由书上例题模仿可得。三、程序代码:(将每题编写的源代码复制粘贴在下面相应题号位置)1、//1.编程用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出其中的素数。#includeiostream#includecmath#includecstdlibusingnamespacestd;constints=10;intmain(){intarr[s];inti,a,n,m;for(i=0;i10;i++)arr[i]=10+rand()%89;for(a=0;ai;a++)if(arr[i]==arr[a]){i--;break;}for(i=0;is;i++)coutarr[i]'\t';m=sqrt(double(arr[i]));for(n=2;n=m;n++)if(arr[i]%n==0){break;}if(nsqrt(double(arr[i]))&&arr[i]!=1)coutarr[i]endl;414return0;}2、#includeiostreamusingnamespacestd;voidmain(){cout请输入数组endl;inta[10],b[10];inti;for(i=0;i10;i++){cina[i];b[i]=i;}for(i=0;i6;i++)for(intj=i+1;j6;j++){if(a[i]a[j]){inttemp=a[i];a[i]=a[j];a[j]=temp;temp=b[i];b[i]=b[j];b[j]=temp;}}cout排序后数组从大到小为:endl;for(i=0;i6;i++)couta[i];coutendl;cout下标为:endl;for(i=0;i6;i++)coutb[i];coutendl;}3、#includeiostreamusingnamespacestd;intmain(){cout输入10个字符;intn;chars[11];for(n=0;n10;n++){cout第n+1个字符:;cins[n];}cout原字符数组:;n=0;do{couts[n];n++;}while(n10);n--;while(n4){s[10]=s[n];s[n]=s[9-n];s[9-n]=s[10];n--;}cout'\n'逆序字符数组:;n=0;for(n=0;n10;n++)couts[n];return0;}4、#includeiostreamusingnamespacestd;intmain(){intm[4][4]={4,2,3,1,6,7,8,5,8,4,16,7,9,5,15,11};intn[4][4],k[4][4];inti,j;for(i=0;i4;i++){for(j=0;j4;j++)k[i][j]=m[j][i];}for(i=0;i4;i++){for(j=0;j4;j++)n[j][i]=m[i][j];}cout原方阵:endl;for(i=0;i4;i++){for(j=0;j4;j++)coutk[i][j];coutendl;}cout转置后的方阵:endl;for(i=0;i4;i++){for(j=0;j4;j++)coutn[j][i];coutendl;}return0;}5、#includeiostream#includeiomanipusingnamespacestd;intmain(){inta[10][10];inti,j;for(i=0;i10;i++){for(j=0;j=i;j++){if(i==j)a[i][j]=1;elseif(j==0)a[i][j]=1;elsea[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i10;i++){for(j=0;j=i;j++)couta[i][j];coutendl;}return0;}6、#includeiostreamusingnamespacestd;intmain(){charz1[10]=ddddd;charz2[10]=zzzzz;inti,a;cout请输入插入的位置;cina;for(i=0;i10;i++){*(z1+a+i)=*(z1+a+i);*(z1+a+i)=z2[i];}for(i=0;i10;i++)coutz1[i];coutendl;return0;}7、//现有10个学生,期终考试有5门课程。求每个学生总成绩、平均成绩,并按总成绩高分到低分输出。#includeiostreamusingnamespacestd;constN=10,M=5;intmain(){doublescore[N][M],scoresum[10],scoreavg[10];inti,j;for(i=0;iN;i++){cout请输入i+1个学生;for(j=0;jM;j++){cout第j+1门成绩endl;cinscore[i][j];}}for(i=0;iN;i++){scoresum[i]=0;for(j=0;jM;j++){scoresum[i]+=score[i][j];}scoreavg[i]=scoresum[i]/M;}for(i=0;iN;i++)cout第i+1个学生的总成绩:scoresum[i]平均成绩:scoreavg[i]endl;for(i=0;iN;i++){if(scoresum[i]scoresum[i+1])coutscoresum[i];elsecoutscoresum[i+1];}return0;}8.#includeiostreamusingnamespacestd;intmain(){inta[10],b[10],c[20],i,j,k,l;cout请依次输入两个数组的个数:;cinkl;cout请输入第一个数组:endl;for(i=0;ik;i++)cina[i];cout请输入第二个数组:endl;for(j=0;jl;j++)cinb[j];int*p1=a,*p2=b;if((*(p1+i))(*(p2+j))){c[i+j]=*(p1+i);i++;}else{c[i+j]=*(p2+j);j++;}cout合并后的数组c[i+j];return0;}9.#includeiostreamusingnamespacestd;intmain(){inta[5];inti,r;cout请输入每人当前有的糖果个数:endl;for(i=0;i5;i++)cina[i];for(r=0;r5;r++){if(r==0){a[r]/=3;a[4]+=a[r];a[1]+=a[r];continue;}if(r==4){a[r]/=3;a[3]+=a[r];a[0]+=a[r];break;}a[r]/=3;a[r+1]+=a[r];a[r-1]+=a[r];}cout重新分配后每人糖果数目为:endl;for(i=0;i5;i++)couta[i]\t;return0;}10、#includeiostreamusingnamespacestd;intmain(){charname1[100],name2[100];inti,j,flag;cout请输入第一个字符串:endl;cin.getline(name1,100);cout请输入第二个字符串:endl;cin.getline(name2,100);for(j=0;name1[j]!='\0';j++){if(name2[0]==name1[j]){for(i=0;name2
本文标题:c--华科第四次作业讲解
链接地址:https://www.777doc.com/doc-4981224 .html