c华科第四次作业讲解.docx

上传人:b****0 文档编号:17860107 上传时间:2023-08-04 格式:DOCX 页数:17 大小:30.28KB
下载 相关 举报
c华科第四次作业讲解.docx_第1页
第1页 / 共17页
c华科第四次作业讲解.docx_第2页
第2页 / 共17页
c华科第四次作业讲解.docx_第3页
第3页 / 共17页
c华科第四次作业讲解.docx_第4页
第4页 / 共17页
c华科第四次作业讲解.docx_第5页
第5页 / 共17页
c华科第四次作业讲解.docx_第6页
第6页 / 共17页
c华科第四次作业讲解.docx_第7页
第7页 / 共17页
c华科第四次作业讲解.docx_第8页
第8页 / 共17页
c华科第四次作业讲解.docx_第9页
第9页 / 共17页
c华科第四次作业讲解.docx_第10页
第10页 / 共17页
c华科第四次作业讲解.docx_第11页
第11页 / 共17页
c华科第四次作业讲解.docx_第12页
第12页 / 共17页
c华科第四次作业讲解.docx_第13页
第13页 / 共17页
c华科第四次作业讲解.docx_第14页
第14页 / 共17页
c华科第四次作业讲解.docx_第15页
第15页 / 共17页
c华科第四次作业讲解.docx_第16页
第16页 / 共17页
c华科第四次作业讲解.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c华科第四次作业讲解.docx

《c华科第四次作业讲解.docx》由会员分享,可在线阅读,更多相关《c华科第四次作业讲解.docx(17页珍藏版)》请在冰点文库上搜索。

c华科第四次作业讲解.docx

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个互不相同的两位整数存放到一维数组中,并输出其中的素数。

#include

#include

#include

usingnamespacestd;

constints=10;

intmain()

{

intarr[s];

inti,a,n,m;

for(i=0;i<10;i++)

arr[i]=10+rand()%89;

for(a=0;a

if(arr[i]==arr[a])

{

i--;

break;

}

for(i=0;i

cout<

m=sqrt(double(arr[i]));

for(n=2;n<=m;n++)

if(arr[i]%n==0)

{

break;

}

if(n>sqrt(double(arr[i]))&&arr[i]!

=1)

cout<

41

4

return0;

}

 

2、#include

usingnamespacestd;

voidmain()

{

cout<<"请输入数组"<

inta[10],b[10];

inti;

for(i=0;i<10;i++)

{

cin>>a[i];

b[i]=i;

}

for(i=0;i<6;i++)

for(intj=i+1;j<6;j++)

{

if(a[i]

{

inttemp=a[i];

a[i]=a[j];

a[j]=temp;

temp=b[i];

b[i]=b[j];

b[j]=temp;

}

}

cout<<"排序后数组从大到小为:

"<

for(i=0;i<6;i++)

cout<

cout<

cout<<"下标为:

"<

for(i=0;i<6;i++)

cout<

cout<

}

3、

#include

usingnamespacestd;

intmain()

{

cout<<"输入10个字符";

intn;

chars[11];

for(n=0;n<10;n++){

cout<<"第"<

";

cin>>s[n];

}

cout<<"原字符数组:

";

n=0;

do{

cout<

n++;

}while(n<10);

n--;

while(n>4){

s[10]=s[n];

s[n]=s[9-n];

s[9-n]=s[10];

n--;

}

cout<<'\n'<<"逆序字符数组:

";

n=0;

for(n=0;n<10;n++)

cout<

return0;

}

4、#include

usingnamespacestd;

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;i<4;i++){

for(j=0;j<4;j++)

k[i][j]=m[j][i];

}

for(i=0;i<4;i++){

for(j=0;j<4;j++)

n[j][i]=m[i][j];

}

cout<<"原方阵:

"<

for(i=0;i<4;i++){

for(j=0;j<4;j++)

cout<

cout<

}

cout<<"转置后的方阵:

"<

for(i=0;i<4;i++){

for(j=0;j<4;j++)

cout<

cout<

}

return0;

}

5、#include

#include

usingnamespacestd;

intmain()

{

inta[10][10];

inti,j;

for(i=0;i<10;i++)

{

for(j=0;j<=i;j++)

{

if(i==j)

a[i][j]=1;

elseif(j==0)

a[i][j]=1;

else

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}

for(i=0;i<10;i++)

{

for(j=0;j<=i;j++)

cout<<""<

cout<

}

return0;

}

6、#include

usingnamespacestd;

intmain()

{

charz1[10]="ddddd";

charz2[10]="zzzzz";

inti,a;

cout<<"请输入插入的位置";

cin>>a;

for(i=0;i<10;i++)

{

*(z1+a+i)=*(z1+a+i);

*(z1+a+i)=z2[i];

}

for(i=0;i<10;i++)

cout<

cout<

return0;

}

7、//现有10个学生,期终考试有5门课程。

求每个学生总成绩、平均成绩,并按总成绩高分到低分输出。

#include

usingnamespacestd;

constN=10,M=5;

intmain()

{

doublescore[N][M],scoresum[10],scoreavg[10];

inti,j;

for(i=0;i

cout<<"请输入"<

for(j=0;j

{

cout<<"第"<

cin>>score[i][j];

}

}

for(i=0;i

scoresum[i]=0;

for(j=0;j

scoresum[i]+=score[i][j];

}

scoreavg[i]=scoresum[i]/M;

}

for(i=0;i

cout<<"第"<

"<

"<

for(i=0;i

if(scoresum[i]>scoresum[i+1])

cout<

else

cout<

}

return0;

}

8.#include

usingnamespacestd;

intmain()

{

inta[10],b[10],c[20],i,j,k,l;

cout<<"请依次输入两个数组的个数:

";

cin>>k>>l;

cout<<"请输入第一个数组:

"<

for(i=0;i

cin>>a[i];

cout<<"请输入第二个数组:

"<

for(j=0;j

cin>>b[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<<"合并后的数组"<

return0;

}

9.#include

usingnamespacestd;

intmain(){

inta[5];

inti,r;

cout<<"请输入每人当前有的糖果个数:

"<

for(i=0;i<5;i++)

cin>>a[i];

for(r=0;r<5;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<<"重新分配后每人糖果数目为:

"<

for(i=0;i<5;i++)

cout<

return0;

}

10、#include

usingnamespacestd;

intmain()

{

charname1[100],name2[100];

inti,j,flag;

cout<<"请输入第一个字符串:

"<

cin.getline(name1,100);

cout<<"请输入第二个字符串:

"<

cin.getline(name2,100);

for(j=0;name1[j]!

='\0';j++)

{

if(name2[0]==name1[j])

{

for(i=0;name2[i]!

='/0';i++)

{

flag=1;

if(name2[i]!

=name1[j+i])

{flag=0;break;}

}

}

}

if(flag==0)

cout<<"是子字符串"<

else

cout<<"不是子字符串"<

return0;

}

11、#include

usingnamespacestd;

intmain()

{

charname[10][13]={"计算机基础","编译原理","算法基础","计算机原理","高等数学","线性代数","离散数学","大学物理","大学英语","大学英语听力"};

chartemp[13],look[13];

char*high,*low,*mid;

inti,j,m;

for(i=0;i<10;i++)

for(j=i+1;j<10;j++)

{m=strcmp(name[i],name[j]);

if(m<0)

{

strcpy(temp,name[i]);

strcpy(name[i],name[j]);

strcpy(name[j],temp);

}

}

for(i=0;i<10;i++)

cout<

char(*p)[13]=name;

high=&name[0][0];

low=&name[9][0];

*mid=(*high+*low)/2;

cout<<"请输入要查找的书名"<

cin>>look;

while(strcmp(mid,look)!

=0)

{

if(strcmp(look,mid)>0)

low=mid;

elsehigh=mid;

*mid=(*low+*high)/2;

};

if(strcmp(mid,look)==0)

cout<<"找到"<

else

cout<<"没有找到"<

return0;

}

四、本次实验遇到的主要问题及解决方案

编译错误:

太多了,基本与前几次一样

连接错误:

逻辑错误:

太多

越界访问无

五、对本次实验内容及方法、手段的改进建议,以及实验心得

实验心得包括:

1)哪些知识点已掌握

2)哪些知识点有困难

3)对讲课的建议:

再给我两节课。

4)对没有掌握知识的补救建议

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2