Tutoriel avancé du langage C - Tableau du langage C (1)

Tutoriel avancé du langage C - Tableau du langage C (1)

insérez la description de l'image ici

Nous avons souvent besoin de stocker un grand nombre de valeurs de données d'un certain type dans un programme.

  • Par exemple, si vous écrivez un programme qui suit les performances d'une équipe de basket-ball, vous devez stocker les points de jeu et les points de joueur pour une saison, puis générer les points d'un joueur pour toute la saison, ou calculer le score de la saison comme le jeu progresse score moyen.
  • Nous pouvons écrire un programme qui utilise une variable différente pour chaque score. Cependant, s'il y a beaucoup de jeux dans une saison, cela peut être très lourd, car chaque joueur avec un jeu a besoin de nombreuses variables.
  • tous les scores de basketLes types sont les mêmes, la différence est le score, mais ce sont tous des scores de basket-ball.
  • Idéalement, ces points devraient être organisés sous un nom, tel que le nom du joueur, afin qu'il ne soit pas nécessaire de définir des variables pour chaque élément de données.
  • Cet article présentera comment utiliser les tableaux dans les programmes en langage C, puis comment faire référence à un ensemble de valeurs par un nom lors de l'écriture de programmes qui utilisent des tableaux.

Tout d'abord, l'introduction du problème

  • La meilleure façon d'illustrer le concept de tableaux et leur utilité consiste à illustrer à quel point les programmes peuvent devenir simples lorsqu'ils travaillent avec des tableaux. Cet exemple calcule la note moyenne des élèves d'une classe.

Pour calculer la note moyenne des élèves d'une classe, supposons qu'il n'y a que 10 élèves dans la classe. Pour calculer la moyenne d'un ensemble de nombres, additionnez-les tous et divisez par le nombre de nombres pour obtenir la moyenne :

  • La procédure est la suivante
#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"

int main()
{
    
    
	system("color 3E");

    // 存储学生成绩值
    int grade = 0;              
   
    // 学生人数
    unsigned int count = 10;
                   
    // /成绩的总和
    long sum = 0L;
             
    // 成绩的平均值
    float average = 0.0f;

    for (unsigned int i = 0; i < count; ++i)
    {
    
    
        printf("输入第%d个学生成绩: ", i + 1);
        scanf("%d", &grade);
        sum += grade;                      // 把它加到sum
    }

    average = (float)sum / count;          // 计算平均值

    printf("\n十个学生的平均成绩是: %f\n", average);


	system("pause");
	return 0;
}

Appuyez sur F5 pour déboguer le résultat comme suit
insérez la description de l'image ici

  • Si vous n'êtes intéressé que par la moyenne, vous n'avez pas besoin de stocker les scores ci-dessus. Ce programme additionne tous les scores et les divise par nombre (qui est 10).
  • Ce programme simple utilise simplement une note variable pour stocker chaque note entrée dans la boucle. La boucle s'exécute lorsque la valeur de i est 0, 1, 2, 3...9 pour un total de 10 itérations.
  • Supposons que vous vouliez écrire ce programme dans un programme plus complexe, vous devez entrer des valeurs, puis sortir le score de chaque personne, et enfin sortir le score moyen.
  • Dans le programme ci-dessus, il n'y a qu'une seule variable. Chaque fois qu'un point est ajouté, l'ancienne valeur de point est écrasée et ne peut plus être utilisée.
  • Comment stocker toutes les partitions ? Vous pouvez déclarer 10 variables entières pour stocker des fractions, mais vous ne pouvez pas entrer ces valeurs dans une boucle for. Au lieu de cela, vous devez ajouter du code pour lire ces valeurs une par une. Mais c'est trop compliqué.
  • À ce stade, les tableaux doivent être utilisés pour résoudre le problème du stockage numérique

2. Qu'est-ce qu'un tableau

  • Un tableau est un nombre fixe d'éléments de données du même type, et les éléments de données du tableau sont appelés éléments.
  • Les éléments du tableau sont tous de type int, long ou autre.
  • La déclaration de tableau suivante est très similaire à la déclaration d'une variable normale avec une seule valeur, mais avec un nombre entre crochets après le nom.

nombres longs[10] ;

  • Le nombre entre crochets définit le nombre d'éléments à stocker dans le tableau, appelé la dimension du tableau. Les tableaux ont un type qui combine le type des éléments et le nombre d'éléments dans le tableau. Donc si deux tableaux ont le même nombre d'éléments et le même type, les deux tableaux sont du même type.
  • Chaque élément de données stocké dans le tableau est accessible avec le même nom, qui dans ce cas est un
    nombre.
  • Pour sélectionner un élément, utilisez la valeur d'index entre crochets après le nom du tableau.
  • Les valeurs d'index sont des entiers consécutifs commençant à 0. 0 est la valeur d'index du premier élément, et la valeur d'index d'élément du tableau de nombres précédent est 0~9. La valeur d'index
    0 représente le premier élément et la valeur d'index 9 représente le dernier élément. Ainsi, les éléments du tableau peuvent être représentés par des nombres[0],
    des nombres[1], des nombres[… des nombres[9].

Comme indiqué ci-dessous
insérez la description de l'image ici

3. Utilisez des tableaux

  • Ce qui suit utilisera la connaissance des tableaux pour résoudre le problème du score moyen.
  • Utilisez un tableau pour stocker tous les scores à moyenner. c'est-à-dire stocker tous les scores afin qu'ils puissent être réutilisés.

Réécrivez maintenant le programme pour calculer la moyenne de 10 scores : le
code ressemble à ceci :

#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"

int main()
{
    
    
	system("color 3E");
	
    // 存储学生成绩的数组
    int grades[10];

    // 学生人数
    unsigned int count = 10;
                   
    // /成绩的总和
    long sum = 0L;
             
    // 成绩的平均值
    float average = 0.0f;

    printf("输入十个学生的成绩分数值:\n");   
    
    for (unsigned int i = 0; i < count; ++i)
    {
    
    
        printf("输入第%d个学生成绩--> ", i + 1);
        scanf("%d", &grades[i]);               
        sum += grades[i];                      
    }

    average = (float)sum / count;              // 计算平均值

    printf("\n十个学生的平均成绩是: %.2f\n", average);

	system("pause");
	return 0;
}

Appuyez sur F5 pour déboguer le résultat comme suit
insérez la description de l'image ici

  • Le programme démarre avec l'habituel #include <stdio.h>, puisque les fonctions printf() et scanf() sont utilisées ici.
  • Au début de la fonction main(), déclarez un tableau de 10 entiers, suivi de quelques variables nécessaires au calcul :
    // 存储学生成绩的数组
    int grades[10];

    // 学生人数
    unsigned int count = 10;
                   
    // /成绩的总和
    long sum = 0L;
             
    // 成绩的平均值
    float average = 0.0f;
  • La variable count est de type entier non signé car elle doit être non négative.

  • Ensuite, demandez un score avec la déclaration suivante :

printf("输入十个学生的成绩分数值:\n");   
  • Ensuite, utilisez une boucle pour lire les valeurs et les accumuler :
 	for (unsigned int i = 0; i < count; ++i)
    {
    
    
        printf("输入第%d个学生成绩--> ", i + 1);
        scanf("%d", &grades[i]);               
        sum += grades[i];                      
    }
  • La boucle for utilise le format standard et la boucle continue tant que i est inférieur à count. La boucle compte de 0 à 9, et
    non de 1 à 10, de sorte que chaque membre du tableau est accessible directement à l'aide de la variable de boucle i.

  • Utilisez la fonction scanf() pour lire chaque valeur de l'entrée dans l'élément i du tableau : la 1ère valeur est stockée dans number[0], la 2ème valeur d'entrée est stockée dans number[1]...la 10ème valeur d'entrée est stocké dans le numéro[9].

  • A chaque itération de la boucle, la valeur lue est ajoutée à la somme. Lorsque la boucle se termine, calculez et affichez la moyenne avec l'instruction suivante :

    average = (float)sum / count;              // 计算平均值

    printf("\n十个学生的平均成绩是: %.2f\n", average);
  • La méthode de calcul de la moyenne consiste à diviser la somme par le nombre de fractions, et la valeur de count est 10.

Ce programme peut également ajouter la fonction de saisie des notes de chaque étudiant. Le
code ajouté est le suivant

    for (unsigned int i = 0; i < count; i++)
    {
    
    
        printf("第%d个学生的成绩是: %d\n", i, grades[i]);
    }

Appuyez sur F5 pour déboguer le résultat comme suit
insérez la description de l'image ici

  • Cette boucle for parcourt les éléments du tableau et génère chaque valeur. Utilisez la variable de contrôle de boucle comme
    numéro de séquence correspondant à chaque élément et accédez à l'élément de tableau correspondant. Les valeurs numériques de ces éléments correspondent évidemment aux nombres saisis.
  • Pour obtenir un score commençant à 1, vous pouvez utiliser l'expression i+1 dans l'instruction de sortie pour obtenir un score de 1 à 10, puisque i est compris entre 0
    et 9.

4. Programme complet

Le code complet du programme est le suivant

  • fichier main.h
#pragma once


#include <stdio.h>
#include <stdlib.h>


  • fichier main.c
#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"

int main()
{
    
    
	system("color 3E");

     存储学生成绩值
    //int grade = 0;              
   
     学生人数
    //unsigned int count = 10;
    //               
     /成绩的总和
    //long sum = 0L;
    //         
     成绩的平均值
    //float average = 0.0f;

    //for (unsigned int i = 0; i < count; ++i)
    //{
    
    
    //    printf("输入第%d个学生成绩: ", i + 1);
    //    scanf("%d", &grade);
    //    sum += grade;                      // 把它加到sum
    //}

    //average = (float)sum / count;          // 计算平均值

    //printf("\n十个学生的平均成绩是: %f\n", average);




    // 存储学生成绩的数组
    int grades[10];

    // 学生人数
    unsigned int count = 10;
                   
    // /成绩的总和
    long sum = 0L;
             
    // 成绩的平均值
    float average = 0.0f;

    printf("输入十个学生的成绩分数值:\n");   
    for (unsigned int i = 0; i < count; ++i)
    {
    
    
        printf("输入第%d个学生成绩--> ", i + 1);
        scanf("%d", &grades[i]);               
        sum += grades[i];                      
    }

    average = (float)sum / count;              // 计算平均值

    for (unsigned int i = 0; i < count; i++)
    {
    
    
        printf("第%d个学生的成绩是: %d\n", i, grades[i]);
    }

    printf("\n十个学生的平均成绩是: %.2f\n", average);

	system("pause");
	return 0;
}


insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/m0_47419053/article/details/126567250
conseillé
Classement