C++第三次实验项目1、2、4

来源:互联网 发布:android 在线源码 编辑:程序博客网 时间:2024/05/21 17:41

项目1

一、问题及代码

#include<iostream>using namespace std;void sort (int p[],int n);//数组排序bool prime(int x);//素数判断void print(int p[],int n);//输出数组int main(){    int a[10]={1,2,3,4,5,6,7,8,9,10};      int b[10];    int i=0;    int j=0;      for(i=0;i<10;i++)      {          if(prime(a[i]))//将a中的素数存入b数组         b[j++]=a[i];     }      print(b,10);//输出排序前的b数组        sort(b,10);//对数组b排序      print(b,10);//输出排序后的b数组  return 0;}void sort(int p[],int n){    int i,j,t;    int k=0;    for(i=0;i<n-1;i++)    {        for(j=0;j<n-1-i;j++)        {            if(p[j]<p[j+1])            {                t=p[j];                p[j]=p[j+1];                p[j+1]=t;            }        }    }}bool prime(int x){    int i,j;    j=x;    for(i=2;i<j;i++)    {        if(x%i==0) return 0;    }    else return 1;}void print(int p[],int n){    int j=0;    for(j=0;j<n;j++)        cout<<p[j]<<" ";}

运行结果


心得体会

我真的不知道这哪里错了啊

知识点总结

bool 函数的用法   函数调用  数组的结合


项目2

一、问题及代码

/*  * 文件名称:Ex4-2.cpp  * 作    者:周世豪* 完成日期:2017 年 4月 10 日  * 版 本 号:cb v1.25.0* 对任务及求解方法的描述部分: * 输入描述:无  * 问题描述: 定义一个有10个的数组a,输出数组a中所有的奇数的阶乘和和偶数的阶乘和。其中将奇偶数的判断和阶段的计算定义为函数。* 程序输出:略* 问题分析:略 * 算法设计:略  */   #include<iostream>using namespace std;int fac(int n){    int i,f=1;    for(i=1;i<n;i++)        f*=i;    return f;}int fun(int a[],int n){    int p=0;    int q=0;    for(int i=0;i<n;i++)    {        if(a[i]%2==0) p+=fac(a[i]);        else q+=fac(a[i]);    }    cout<<"偶数阶乘之和"<<p<<endl;    cout<<"奇数阶乘之和"<<q<<endl;}int main(){    int a[10];    int i;    for(i=0;i<10;i++)        cin>>a[i];    fun(a,10);}

运行结果

心得体会

我本以为要写两个fac函数,后来和同学交流,发现一个就行。后来还发现fac函数要比之前写的要简单点,因为有限定条件,比较好写。

知识点总结

求阶乘 函数调用


项目4

一、问题及代码

/*  * 文件名称:Ex4-2.cpp  * 作    者:周世豪* 完成日期:2017 年 4月 10 日  * 版 本 号:cb v1.25.0* 对任务及求解方法的描述部分: * 输入描述:无  * 问题描述: 定义一个有10个的数组x,求出数组中的MAX,MIN,比MAX大的数有几个* 程序输出:略* 问题分析:略 * 算法设计:略  */   #include<iostream>using namespace std;//用引用传递返回多个函数的值int aver(int x[],int *,int *);//用指针传值int count(int x[],int n,double ave);int main(){    int x[10]={4,6,8,16,19,14,5,10,1,21};    int n;    int min;    int max;    min=x[0];    max=x[0];    double ave=aver(x,&max,&min);    n=count(x,10,ave);    cout<<"MAX="<<max<<" "<<",MIN="<<min;    return 0;}int aver(int x[],int *a,int *b)//指针a,b分别传递max,min的值{    int i=0;    int sum=0;    double ave;    for(i=0;i<10;i++)    {        sum+=x[i];        if(x[i]>*a)            *a=x[i];        if(x[i]<*b)            *b=x[i];    }    ave=sum/10.0;    cout<<"平均值"<<ave<<endl;    return ave;}int count(int x[],int n,double ave){    int i=0;    int num=0;    for(i=0;i<10;i++)    {        if(x[i]>ave)            num++;    }    cout<<"比平均值大的数有"<<num<<"个。"<<endl;    return num;}


二、运行结果

三、心得体会

这题就比较难,想了很久,才想出来了用指针传递数值(数值不会改变)、利用指针来比较和x其实是x[i]的第一个元素的地址。还有就是不要只在主函数里输出值,那样会给自己带来麻烦。还有就是函数的声明与调用要清晰,不要使自己看不清。

四、知识点总结

函数调用(主函数与副函数,副函数与副函数)  指针传值,比较值

0 0