C/C++ L7

2018/07/07 C/C++

C/C++程序语言设计 Level7。

MAC

将数组名作为函数的参数

数组名本身是一个指针,所以传递数组作为函数参数实际上传递的是指针的值,也就是数组第一个元素的地址。

例子:

#include <iostream>
#include <cmath>
using namespace std;

float average(float array[], int n){
    float aver, sum = 0.0;
    for(int i=0;i<n;i++){
        sum += array[i];
    }
    aver = sum/n;
    return aver;
}

int main(){
    float score1[5] = {98.5, 97, 91, 60, 55};
    float score2[10] = {67.5, 89.5, 99, 69.5, 77, 89.5, 76.5, 54, 60, 99.5};
    cout << "class A的平均成绩是" << average(score1, 5) << endl;
    cout << "class B的平均成绩是" << average(score2, 10) << endl;
    return 0;
}

如果是二维数组名作为函数参数,则需要指定第二维的长度。

例子:

#include <iostream>
#include <cmath>
using namespace std;

int max_value(int array[][4], int n){
    int max = array[0][0];
    for(int i=0;i<n;i++){
        for(int j=0;j<4;j++){
            if(array[i][j]>max){
                max = array[i][j];
            }
        }
    }
    return max;
}

int main(){
    int a[3][4] = {
        {1,3,5,7},
        {2,4,6,8},
        {3,6,9,12},
        {15,17,18,21}
    };
    int max = max_value(a, 3);
    cout << max << endl;
    return 0;
}

局部变量与全局变量

在一个函数内部定义的变量只能在本函数范围内有效,也就是说,只有在本函数内才能引用它们。在此函数以外是不能使用这些变量的。这样的变量称为局部变量。

而在函数内定义以外的变量是全局变量,全局变量可以在整个程序中任何地方使用。

#include <iostream>
using namespace std;

float Max = 0.0, Min = 0.0;

float average(float array[], int n){
    float aver, sum = 0.0;
    Max = Min = array[0];
    for(int i=0;i<n;i++){
        if(array[i]>Max){
            Max = array[i];
        } else if(array[i]<Min) {
            Min = array[i];
        }
        sum += array[i];
    }
    aver = sum/n;
    return aver;
}

int main(){
    float aver, score[10];
    for(int i=0;i<10;i++){
        cin >> score[i];
    }
    aver = average(score, 10);
    cout << "Max = " << Max << endl;
    cout << "Min = " << Min << endl;
    cout << "Ave = " << aver << endl;
    return 0;
}

结构体

C语言提供了一些由系统定义好的数据类型,例如int、float、char等等。用户可以在程序中用它们定义变量,解决一般的问题。但是人们要处理的问题往往比较复杂,只有系统提供的类型还不能满足应用的要求,C语言允许用户根据需要自己建立一些数据类型,用它定义变量。

例如:

struct Student{
    int num;
    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
};

上面指定了一个结构体类型,用struct作为声明结构体的关键字。上面的例子中定义了一个结构体类型,它与系统提供的标准类型具有相似的作用,都可以用来定义变量。只不过int等类型是系统已经声明的,而结构体类型是由用户根据需要在程序中指定的。

例子:

#include <iostream>
using namespace std;

struct Person{
    char name[20];
    int count;
}leader[3] = {"Li", 0, "Zhang", 0, "Sun", 0};

int main(){
    char leader_name[20];
    for(int i=1;i<=10;i++){
        cin >> leader_name;
        for(int j=0;j<3;j++){
            if(strcmp(leader_name, leader[j].name) == 0){
                leader[j].count++;
            }
        }
    }
    cout << endl << "Result:" << endl;
    for(int i=0;i<3;i++){
        cout << leader[i].name << ":" << leader[i].count << endl;
    }
    return 0;
}

Search

    Table of Contents