面向对象程序设计——函数和数组

一、实验目的:

  1. 掌握函数的定义和使用方法;掌握函数调用的方法;掌握函数参数传递的机制;掌握全局变量、局部变量、静态变量的使用方法;掌握函数重载的方法。

  2. 熟练掌握一维数组和二维数组的定义、引用和初始化;掌握字符数组与字符串的关系以及字符串变量的表示,熟练字符串处理函数的应用。

  3. 熟练掌握各种类型指针的定义、引用和运算;掌握数组指针和指向数组的指针变量,以及字符串的指针和指向字符串的指针变量。

二、实验内容:

  1. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
    ⑴提示
    把输入的10个整数存入数组中,10个中最小的放与数组的第一个元素对换,最大的数与数组的第10个元素对换。其他的保持不变。
    ⑵要求
     定义3个函数:
void input(int number[ ]);     /*此函数实现输入10个元素*/
void max_min_value(int array[ ]); 
/*此函数实现交换数组的对应元素*/
void output(int array[ ]);  /*此函数实现输出10个元素*/

 在main函数中调用上述3个函数,实现题目要求的功能;
源代码:

#include <iostream>
using namespace std;
//声明三个将要用的函数
void input(int number[]);
void max_min_value(int array[]);
void output(int array[]);

int main()
{
    int number[10]={};
//定义储存十个整数的一维数组
    input(number);
    max_min_value(number);
    output(number);
//调用三个函数
    return 0;
}
//定义三个函数
void input(int number[])
{
    int i;

    cout<<"请输入十个整数"<<endl;
    for(i=0;i<10;i++)
        cin>>number[i];
}
//用for循环完成十个整数的录入
void max_min_value(int array[])
{
    int i,max_,min_,temp1,temp2,max_num,min_num;
//定义辅助变量i,储存最大值和最小值的变量max_、min_,
//定义用于交换位置的空变量temp1、temp2,用于储存最大值最小值处的数组元素位置
    max_=array[0];
    min_=array[0];
    for(i=1;i<10;i++)
        if(array[i]>=max_)
            {
                max_=array[i];
                max_num=i;
            }
    for(i=1;i<10;i++)
        if(array[i]<=min_)
            {
                min_=array[i];
                min_num=i;
            }
//完成最大值最小值的确定
    temp1=array[max_num];
    array[max_num]=array[9];
    array[9]=temp1;
    temp2=array[min_num];
    array[min_num]=array[0];
    array[0]=temp2;
//完成最大值最小值与数组最后一位和第一位的交换
}
//用for循环输出完成就绪的数组,元素间以空格间隔
void output(int array[])
{
    int i;

    for(i=0;i<10;i++)
        cout<<array[i]<<" ";
}

运行截图:
在这里插入图片描述

  1. 编写程序统计一个字符串“C++ is beginer’s language”中单词的个数,并将统计的每个单词存入二维数组array[ ][ ]中的一行,即数组array中的元素:array[0]=”C++”, array[1]=”is”, array[2]=”beginer’s”, array[3]=”language”。最后输出每个单词。

源代码:

#include <iostream>
using namespace std;

int main()
{
    int i,m=0,n=0,k=0;
    char str[]="C++ is beginer's language";
//定义题目要求的字符串以及辅助变量i,m,n,k
    for(i=0;;i++)
        {
            if(str[i]==' '&&str[i+1]!=' ')
                k++;
            if(str[i]=='\0')
                break;
        }
    char array[k][10]={};
//用for循环统计单词个数k,从而定义二维数组并初始化
    for(i=0;i<26;i++)
    {
        if(str[i]!=' ')
        {
            array[m][n]=str[i];
            n++;
        }
        else {array[m][n]='\0';m++;n=0;}
    }
//对字符串的字符向二维数组转移,遇见空格时,
//结束向二维数组的一行录入,并添加结束字符'\0'
    for(m=0;m<4;m++)
        for(n=0;n<10;n++)
            if(array[m][n]!='\0')
                cout<<array[m][n];
            else {cout<<endl;break;}
//用两个for循环对二维数组输出,遇见上面添加的'\0'时,
//停止对一行的输出,并尾部添加换行、且跳出循环,开始输出下一行
    return 0;
}

运行截图:
在这里插入图片描述

  1. n个人围成一圈,从第一个人开始报数,报到5的人就退出圈(图中白色的表示退出圈),再从下个人开始报数,问最后剩下的那个人是第几个人。
    在这里插入图片描述
    提示:

(1)建立一个结构体:
struct Node //定义一个结点结构类型
{ int num; //序号
char name[10]; //姓名
struct Node *next;
} stNode;
并将头指针设为全局变量stNode *head;

(2)要求在程序建立几个函数:

  • void initStLink() //初始化链表
  • void CreateStLink( ) //创建循环链表
  • void dispStLink( ) //输出链表信息
  • stNode *find( ) //报数为5的人出队列

在主函数中调用以上函数,实现程序要求

学习掌握:

在调用函数,传递数组参数时,要特别注意形参和实参的格式,函数调用时数组的传递,传递的是地址,在函数内部将创建一个新的数组,只是大小内容和实参一样,所以数组的返回通常也不能直接用return返回,需要使用引用或者指针的方式,才能直接返回原数组。字符串都是以“\0”为结尾的,因此可以用来作为遍历字符串的终止,遇见空格,可以直接用==“ ”,双引号内一个空格与其匹配判断。

在编写程序时,要善于使用函数来完成一些可以封装,多次重复使用的操作过程,让程序更加简洁,明了。程序改进时,对一些输入操作或者其他部分,可以在源代码上多添加一些输出性提示语句,让程序运行时更加富有步骤性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值