1、c华科第四次作业讲解华中科技大学计算机基础与程序设计(C+ )实验报告实验名称:第四次上机实验实验学时系别:专业:班级:姓名:马乾清学号:U201511417实验日期:教师批阅签字:一、实验内容1编程用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出其中的素数。 2编程将一组数据从大到小排序后输出,要求显示每个元素及它们在原数组中的下标。3.编程输入10个字符到一维字符数组 s中,将字符串逆序输出。4 编写程序将4阶方阵转置。如下所示:4 6 8 94 2 3 1 _2 7 4 56 7 S 53 8 16 158 4 16 715 7 119 5 15 115 编程输出10行的杨
2、辉三角形。(使用二维数组并利用每个系数等于其上两系数之和。)6将一个字符串插入另一个字符串的指定位置。7 现有10个学生,期终考试有5门课程。求每个学生总成绩、平均成绩,并按总成绩 高分到低分输出。&把有序的两个数组a和b合并,要求合并后的数组依然有序。分析:两个数组合并时,可为每个数组安排一个指针,从第一个元素开始比较两个数 组中对应的元素,将小的取出,顺序放入新的数组中;取出所指元素的指针,后移再比较, 依次类推,直到其中一个数组的元素已全部放入新数组中, 再把另一数组余下的元素全部顺序放入新数组中即可。9现有5个小朋友编号为1, 2, 3, 4, 5,他们按自己的编号顺序围坐在一张圆桌旁
3、,身上都有若干个糖果,现在做一个分糖果游戏。从1号小朋友开始,将他的糖果均分三份(如 果有多余的,则将多余的糖果吃掉),自己留一份,其余两份分给相邻的两个小朋友。接着 2号、3号、4号、5号小朋友也这如果做。问一轮后,每个小朋友手上分别有多少糖果。10.从键盘输入2个字符串,45120判断其中较短的串是否是另一个串的子字符串。11.修改例5.23 ,将其升序排序,然后折半查找是否有查找的书。、算法说明 (用文字说明 )1先用随即函数产生 10个随机数2再用循环将这 10 个数放到一个数组中3最后用循环对这个数组中的每个元素判定其是否是素数,并将素数输出。2、 直接使用选择排序 10 个数字进行
4、排序,并将其下标带出来一起输出。3、 定义 2 个字符数组,用循环将第一个数组的最后一个元素放到第二个数组的第一个元素 的位置上,依此类推,完成字符串的逆序,最后将第二个字符输出。4、 定义 2 个二维数组,将第一个二维数组的下标交换后, 放入第二个二维数组,依此类推, 完成对第一个二维数组的交换后,用循环将第二个二维数组输出。5、 首先定义1个二维数组,并将该素组中 2个下标相等的数和第一列的数赋值为 1,2在用循环将每一个数用其“肩上”的两个数的和赋值,3最后用循环输出这个二维数组即可。6、 首先定义3个字符数组2并将要插入的字符和被插入的字符输入其中,要插入的字符位置,3并将该位置之前的
5、元素赋给第 3个数组,4然后再将要插入的字符继续赋给第 3个数组以后的元素5最后将该位置之后的第一个字符数组的元素继续赋给第 3 个数组6最后将第 3 个字符数组输出即可。7、 使用二维数组来储存每个学生的各科成绩、平均成绩以及总成绩、最后以总成绩高低用 选择排序或者冒泡排序排序即可。8、 先定义两个数组并输入数组元素,两个数组合并时,为每个数组安排一个指针,从第一 个元素开始比较两个数 组中对应的元素,将小的取出,顺序放入新的数组中;取出所指元素的指针,后移再比较, 依次类推, 直到其中一个数组的元素已全部放入新数组中, 再把另一数组余下的元素全部顺 序放入新数组中即可。9、 先定义 1个数
6、组并将每个小朋友所拥有的糖果数输入到这个数组当中, 然后用循环计算出每个小朋友经过题目所给的规则运算后的糖果数并将这个数重新赋到这个数组中, 最后用循环将各个小朋友所剩余的糖果数输出即可。10、 首先需要定义两个字符数组并输入两个字符串, 然后用循环从第一个字符数组的元素中 查找与第二个字符数组的第一个元素相同的元素, 如果相同再继续比较接下来的元素是否相 同,以此类推,最后完成第一个字符数组的查找并将结果输出。11 、由书上例题模仿可得。三、程序代码:(将每题编写的源代码复制粘贴在下面相应题号位置)1、/1 编程用随机函数产生 10 个互不相同的两位整数存放到一维数组中, 并输出其中的素数。
7、#include#include#includeusing namespace std;const int s=10;int main()int arrs;int i,a,n,m;for(i=0;i10;i+) arri=10+rand()%89; for(a=0;ai;a+) if(arri=arra) i-;break;for(i=0;is;i+)coutarrit;m=sqrt(double(arri);for(n=2;nsqrt(double(arri)&arri!=1) coutarriendl;414return 0;2、 #includeusing namespace std;v
8、oid main()cout 请输入数组 endl;int a10,b10;int i;for(i=0;iai;bi=i;for(i=0;i6;i+)for(int j=i+1;j6;j+)if(aiaj)int temp=ai;ai=aj;aj=temp;temp=bi;bi=bj;bj=temp;endl;cout 排序后数组从大到小为:for(i=0;i6;i+)coutai ;coutendl;cout 下标为: endl; for(i=0;i6;i+) coutbi ;coutendl;3、#include using namespace std;int main()cout 输入
9、10 个字符 ;int n;char s11;for(n=0;n10;n+)coutvv第sn;cout 原字符数组: ;n=0;docoutsn ;n+;while(n4)s10=sn;sn=s9-n;s9-n=s10;n-;coutn 逆序字符数组:n=0;for(n=0;n10;n+)coutsn ;return 0;4、 #include using namespace std;int main()int m44=4,2,3,1,6,7,8,5,8,4,16,7,9,5,15,11;int n44,k44;int i,j;for(i=0;i4;i+)for(j=0;j4;j+)kij=
10、mji;for(j=0;j4;j+)nji=mij;cout 原方阵: endl;for(i=0;i4;i+)for(j=0;j4;j+) coutkij ;coutendl;cout 转置后的方阵: endl;for(i=0;i4;i+)for(j=0;j4;j+)coutnji ; coutendl;return 0;5、 #include#includeusing namespace std;int main()int a1010;int i,j;for(i=0;i10;i+)for(j=0;j=i;j+)if(i=j)aij=1;else if(j=0)aij=1;elseaij=ai
11、-1j-1+ai-1j;for(i=0;i10;i+)for(j=0;j=i;j+)cout aij; coutendl;return 0;6、 #include using namespace std;int main()char z110=ddddd;char z210=zzzzz;int i,a;couta;for(i=0;i10;i+) *(z1+a+i)=*(z1+a+i);*(z1+a+i)=z2i;coutz1i;coutendl;return 0;7、 / 现有 10 个学生,期终考试有 5 门课程。求每个学生总成绩、平均成 绩,并按总成绩高分到低分输出。#include us
12、ing namespace std;const N=10,M=5;int main()double scoreNM,scoresum10,scoreavg10;int i,j;for(i=0;iN;i+)coutvv请输入i+1个学生;for(j=0;jM;j+)coutvv 第vvj+lvv门成绩scoreij;for(i=0;ivN;i+)scoresumi=0;for(j=0;jvM;j+)scoresumi+=scoreij;scoreavgi=scoresumi/M;cout 第 i+1 个学生的总成绩: scoresumi 平均成绩: scoreavgiendl;for(i=0;i
13、scoresumi+1) coutscoresumi ;else coutscoresumi+1 ;return 0;8.#include using namespace std;int main()int a10,b10,c20,i,j,k,l;coutkl;cout 请输入第一个数组: endl; for(i=0;iai;cout 请输入第二个数组: endl; for(j=0;jbj;int *p1=a,*p2=b;if (*(p1+i)(*(p2+j)ci+j=*(p1+i);elseci+j=*(p2+j);j+;cout 合并后的数组 ci+j ;return 0;9 #inclu
14、de using namespace std; int main() int a5; int i,r;cout 请输入每人当前有的糖果个数 :endl; for(i=0;iai;for(r=0;r5;r+)if(r=0)ar/=3;a4+=ar;a1+=ar; continue;if(r=4):endl;endl;endl;ar/=3;a3+=ar;a0+=ar;break;ar/=3;ar+1+=ar;ar-1+=ar;cout 重新分配后每人糖果数目为for(i=0;i5;i+)coutait;return 0;10、#includeusing namespace std;int main
15、()char name1100,name2100;int i,j,flag;cout 请输入第一个字符串:cin.getline(name1,100);cout 请输入第二个字符串:cin.getline(name2,100);for(j=0;name1j!=0;j+)if(name20=name1j)for(i=0;name2i!=/0;i+)flag=1; if(name2i!=name1j+i) flag=0;break; if(flag=0) cout 是子字符串 endl;else cout 不是子字符串 endl;return 0;11、#include using namespa
16、ce std;int main() char name1013= 计算机基础 , 编译原理 , 算法基础 , 计算机 原理, 高等数学, 线性代数, 离散数学, 大学物理 , 大学英语, 大学 英语听力 ;char temp13,look13;char *high,*low,*mid;int i,j,m;for(i=0;i10;i+) for(j=i+1;j10;j+) m=strcmp(namei,namej);if(m0)strcpy(temp,namei); strcpy(namei,namej); strcpy(namej,temp);for(i=0;i10;i+)coutnamei
17、;char (*p)13=name;high=&name00;low=&name90;*mid=(*high+*low)/2;cout 请输入要查找的书名 look;while(strcmp(mid,look)!=0)if(strcmp(look,mid)0)low=mid;else high=mid; *mid=(*low+*high)/2;if(strcmp(mid,look)=0)cout 找到 endl;elsecout 没有找到 endl;return 0;四、本次实验遇到的主要问题及解决方案编译错误:太多了,基本与前几次一样连接错误:无逻辑错误:太多越界访问无五、对本次实验内容及方法、手段的改进建议,以及实验心得实验心得包括 :1)哪些知识点已掌握2)哪些知识点有困难3)对讲课的建议:再给我两节课。4)对没有掌握知识的补救建议
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1