C++程序设计实验-2

Posted on 2018-03-18 16:01  旧城旧梦旧少年  阅读(443)  评论(0编辑  收藏  举报

南京信息工程大学实验报告

实验名称 C++简单程序设计-1 实验日期 2018-3-13 得分  指导教师  耿学华     

   计软院   专业计科    年级  2016     班次  (2)  姓名    余佳奇    学号  20161326022    

一、实验内容及结论。

1.函数的声明和函数的定义:

函数声明表示有这么个函数了,函数定义就是具体实现了。函数声明,只有函数头,比如主函数main里要调用add函数,可是add函数的定义放在main后面。就要在主函数先声明下。

2.函数的形参和实参,函数参数和返回值在函数中的作用:

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参。返回值用于返回一个值给函数或用来结束函数。

3.值传递和引用传递:

引用传递会影响当作参数的对象,而值传递不会影响当作参数的对象。引用传递就相当与对原件进行处理,而值传递相当于对备份进行处理,因而对原件无影响。

4.实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selcet one:”提示用户输入。A表示增加,D表示删除,S表示排序,Q表示退出。输入为A、D、S时分别提示“数据已经增加、删除、排序。”输入为Q时程序结束。

(1)要求使用if…else语句进行判断,用break,continue控制程序流程。

(2)要求使用switch语句。

(1)

Code:

#include<iostream>

using namespace std;

int main(){

    while(1){

        char ans;

        cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<<endl;

        cin>>ans;

        if(ans=='A'){cout<<"数据已经增加"<<endl;continue;}

        else if(ans=='D'){cout<<"数据已经删除"<<endl;continue;}

        else if(ans=='S'){cout<<"数据已经排序"<<endl;continue;}

        else if(ans=='Q'){break;}

        else continue;

    }

    return 0;

}

运行结果:

(2)

Code:

#include<iostream>

using namespace std;

int main(){

    while(1){

        char ans;

        cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<<endl;

        cin>>ans;

        switch(ans){

        case 'A':

            cout<<"数据已经增加"<<endl;break;

        case 'D':

            cout<<"数据已经删除"<<endl;break;

        case 'S':

            cout<<"数据已经排序"<<endl;break;

        case 'Q':

            return 0;

        default:

            break;

        }

    }

    return 0;

}

运行结果:

5.用穷举法找出1~100间的质数并显示出来。分别使用while,do…while,for循环语句实现。

  算法思路:用穷举法,从2开始到100,分别对每一个数进行检验,检验方法是若存在比2大且比该数字的一半小的数,那么从2开始直到该数字的一半一次与该数进行取余运算,若存在余数为0的数,即该数有因数,因此不是质数。若不存在这样的因数,即该数为质数直接输出。

Code:

#include<iostream>

using namespace std;

int main(){

    int i,j,n,m;

    i=2;

    while(i<101)

    {

        m=1,n=i/2,j=2;

        while(j<=n)

        {

            if(i%j==0)

            {

                m=0;

                break;

            }

            j++;

        }

        if(m)

            cout<<i<<" ";

        i++;

    }

}

运行结果:

6.在程序中定义一个整型变量,赋予1~100的值。要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用while,do…while语句实现循环。

(1)while

Code:

#include<iostream>

#include<Ctime>

using namespace std;

int main(){

srand((unsigned)time(NULL));

int n=rand()%100;

int guess=101;

while(guess!=n)

{

    cin>>guess;

    if(guess<n)cout<<"Answer is larger than ur guess number!"<<endl;

    else if(guess>n)cout<<"Answer is smaller than ur guess number!"<<endl;

}

cout<<"True Answer!"<<endl;

return 0;

}

运行结果:

(2)do…while

Code:

#include<iostream>

#include<Ctime>

using namespace std;

int main(){

srand((unsigned)time(NULL));

int n=rand()%100;

int guess=101;

do{

    cin>>guess;

    if(guess<n)cout<<"Answer is larger than ur guess number!"<<endl;

    else if(guess>n) cout<<"Answer is smaller than ur guess number!"<<endl;

}while (guess!=n);

cout<<"True Answer!"<<endl;

return 0;

}

运行结果:

7.口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中取出3个不同颜色的球,问有多少中取法?

  算法思路:计算出所有得颜色组合类型存放到数组中,再从中选择出没有相同颜色的结果,用一个n来计算其数量。最后输出n即可。

Code:

#include<iostream>

using namespace std;

void main()

{

 int i,j,k,n=0;

 char c[5][7]={"red","yellow","blue","white","black"};

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

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

   for (k=j+1;k<5;k++)

   {

    if (i != j && j !=k && k!=i)

    cout<<c[i]<<" "<<c[j]<<" "<<c[k]<<endl;

    n++;

   }

    cout<<n<<endl;

}

运行结果:

二、 实验总结和体会

   本次实验过程中我理解了C++中函数的定义和使用方法。了解了值传递和引用传递的区别,也更熟悉灵活运用了while,do…while,switch等语句。在编程过程中,我感受到了编程与数学逻辑的关系,首先得构思出一个算法过程,再将其对应转换为代码,这是编程的关键步骤。此外,在编程过程中我也发现自己不够灵活,很多时候比较刻板。整体来讲,这次实验对我的编程能力有很大帮助,能够较为轻松的完成这些简单程序的编写了。