Tutorial avanzado del lenguaje C: matriz del lenguaje C (1)

Tutorial avanzado del lenguaje C: matriz del lenguaje C (1)

inserte la descripción de la imagen aquí

A menudo necesitamos almacenar una gran cantidad de valores de datos de algún tipo en un programa.

  • Por ejemplo, si escribe un programa que realiza un seguimiento del rendimiento de un equipo de baloncesto, debe almacenar los puntos del juego y los puntos de los jugadores de una temporada y luego generar los puntos de un jugador para toda la temporada, o calcular la puntuación de la temporada como resultado del juego. progresa puntuación media.
  • Podemos escribir un programa que use una variable diferente para cada puntuación. Sin embargo, si hay muchos juegos en una temporada, esto puede ser muy engorroso, porque cada jugador con un juego necesita muchas variables.
  • todos los puntajes de baloncestoLos tipos son los mismos, la diferencia es la puntuación., pero todos son puntajes de baloncesto.
  • Idealmente, estos puntos deben organizarse bajo un nombre, como el nombre del jugador, de modo que no haya necesidad de definir variables para cada elemento de datos.
  • Este artículo presentará cómo usar matrices en programas de lenguaje C y luego cómo referirse a un conjunto de valores por un nombre al escribir programas que usan matrices.

En primer lugar, la introducción del problema.

  • La mejor manera de ilustrar el concepto de arreglos y su utilidad es a través de un ejemplo de cuán simples pueden llegar a ser los programas cuando se trabaja con arreglos. Este ejemplo calculará la calificación promedio de los estudiantes en una clase.

Para calcular la calificación promedio de los estudiantes en una clase, suponga que solo hay 10 estudiantes en la clase. Para calcular el promedio de un conjunto de números, súmalos todos y divide por el número de números para obtener el promedio:

  • El procedimiento es el siguiente
#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;
}

Presione F5 para depurar el resultado de la siguiente manera
inserte la descripción de la imagen aquí

  • Si solo está interesado en el promedio, no necesita almacenar los puntajes anteriores. Este programa suma todos los puntajes y los divide por conteo (que es 10).
  • Este programa simple solo usa una calificación variable para almacenar cada calificación ingresada en el bucle. El ciclo se ejecuta cuando el valor de i es 0, 1, 2, 3...9 para un total de 10 iteraciones.
  • Suponga que desea escribir este programa en un programa más complejo, necesita ingresar algunos valores, luego generar la puntuación de cada persona y finalmente generar la puntuación promedio.
  • En el programa anterior, solo hay una variable. Cada vez que se agrega un punto, el valor del punto anterior se sobrescribe y no se puede volver a utilizar.
  • ¿Cómo almacenar todas las puntuaciones? Puede declarar 10 variables enteras para almacenar fracciones, pero no puede ingresar estos valores en un bucle for. En su lugar, debe agregar código para leer estos valores uno por uno. Pero esto es demasiado complicado.
  • En este momento, las matrices deben usarse para resolver el problema del almacenamiento numérico.

2. ¿Qué es una matriz?

  • Una matriz es un número fijo de elementos de datos del mismo tipo, y los elementos de datos de la matriz se denominan elementos.
  • Los elementos de la matriz son todos de tipo int, long o de otro tipo.
  • La siguiente declaración de matriz es muy similar a declarar una variable normal con un solo valor, pero con un número entre corchetes después del nombre.

números largos[10];

  • El número entre corchetes define el número de elementos que se almacenarán en la matriz, denominada dimensión de la matriz. Los arreglos tienen un tipo que combina el tipo de elementos y la cantidad de elementos en el arreglo. Entonces, si dos arreglos tienen el mismo número de elementos y el mismo tipo, los dos arreglos son del mismo tipo.
  • Se accede a cada elemento de datos almacenado en la matriz con el mismo nombre, que en este caso son
    números.
  • Para seleccionar un elemento, use el valor de índice entre corchetes después del nombre de la matriz.
  • Los valores del índice son números enteros consecutivos a partir de 0. 0 es el valor de índice del primer elemento, y el valor de índice de elemento de la matriz de números anterior es 0~9. El valor de índice
    0 representa el primer elemento y el valor de índice 9 representa el último elemento. Por lo tanto, los elementos de la matriz se pueden representar como números[0],
    números[1], números[…números[9].

Como se muestra abajo
inserte la descripción de la imagen aquí

3. Usa arreglos

  • A continuación, se utilizará el conocimiento de la matriz para resolver el problema del puntaje promedio.
  • Utilice una matriz para almacenar todas las puntuaciones que se van a promediar. es decir, almacenar todas las partituras para que puedan reutilizarse.

Ahora reescriba el programa para calcular el promedio de 10 puntajes: el
código se ve así:

#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;
}

Presione F5 para depurar el resultado de la siguiente manera
inserte la descripción de la imagen aquí

  • El programa comienza con el habitual #include <stdio.h>, ya que aquí se utilizan las funciones printf() y scanf().
  • Al comienzo de la función main(), declare una matriz de 10 enteros, seguida de algunas variables necesarias para el cálculo:
    // 存储学生成绩的数组
    int grades[10];

    // 学生人数
    unsigned int count = 10;
                   
    // /成绩的总和
    long sum = 0L;
             
    // 成绩的平均值
    float average = 0.0f;
  • La variable de conteo es de tipo int sin signo porque no debe ser negativa.

  • Luego, solicite una puntuación con la siguiente declaración:

printf("输入十个学生的成绩分数值:\n");   
  • A continuación, use un bucle para leer los valores y acumularlos:
 	for (unsigned int i = 0; i < count; ++i)
    {
    
    
        printf("输入第%d个学生成绩--> ", i + 1);
        scanf("%d", &grades[i]);               
        sum += grades[i];                      
    }
  • El ciclo for usa el formato estándar, y el ciclo continúa mientras i sea menor que contar. El ciclo cuenta de 0 a 9,
    no de 1 a 10, por lo que se puede acceder directamente a cada miembro de la matriz utilizando la variable de ciclo i.

  • Use la función scanf() para leer cada valor de la entrada en el elemento i de la matriz: el primer valor se almacena en el número [0], el segundo valor de entrada se almacena en el número [1]... el décimo valor de entrada es almacenado en número[9].

  • En cada iteración del bucle, el valor leído se suma a la suma. Cuando finalice el ciclo, calcule y muestre el promedio con la siguiente declaración:

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

    printf("\n十个学生的平均成绩是: %.2f\n", average);
  • El método para calcular el promedio es dividir la suma por el número de fracciones contadas, y el valor de la cuenta es 10.

Este programa también puede agregar la función de ingresar las calificaciones de cada estudiante.El
código agregado es el siguiente

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

Presione F5 para depurar el resultado de la siguiente manera
inserte la descripción de la imagen aquí

  • Este bucle for itera sobre los elementos de la matriz y genera cada valor. Utilice la variable de control de bucle como
    el número de secuencia correspondiente a cada elemento y acceda al elemento de matriz correspondiente. Los valores numéricos de estos elementos obviamente corresponden a los números ingresados.
  • Para obtener una puntuación que comience en 1, puede usar la expresión i+1 en la declaración de salida para obtener una puntuación de 1 a 10, ya que i es de 0
    a 9.

4. Programa completo

El código completo del programa es el siguiente

  • archivo principal.h
#pragma once


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


  • archivo principal.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;
}


inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_47419053/article/details/126567250
Recomendado
Clasificación