¿Cuál es el concepto de matriz?
Una matriz es una colección de variables del mismo tipo, a las que se puede hacer referencia con el mismo nombre. Las matrices se componen de unidades de almacenamiento continuas. La dirección más baja corresponde al primer elemento de la matriz y la dirección más alta corresponde al último elemento. La matriz puede ser unidimensional o multidimensional.
5.1 Matriz unidimensional
La forma de descripción general de una matriz unidimensional es la siguiente:
type-specifier var_name [size]; >
En lenguaje C, las matrices deben declararse explícitamente para que el compilador pueda asignarles espacio de memoria. En la fórmula anterior, el especificador de tipo especifica el tipo de matriz, es decir, el número de cada elemento de la matriz. El número total de bytes de la matriz unidimensional se puede calcular de la siguiente manera:
[Ejemplo 5-1] Cargue los números del 0 al 9 en una matriz de enteros.
main( )
{
int x[10] /* Define una matriz que contiene 10 números enteros, referenciados como x [0] , x [ 1 ] . x [ 9 ] * /
int
para (t=0; tlt; 10; t) x[t]=t;
}
El lenguaje C no verifica los límites de la matriz. Por lo tanto, ambos extremos de la matriz pueden salirse de los límites, provocando la destrucción de las matrices de otras variables e incluso del código del programa. . Es responsabilidad del programador realizar la verificación de los límites de la matriz cuando sea necesario. Por ejemplo, cuando utilice gets() para recibir entradas de caracteres, debe asegurarse de que la matriz de caracteres sea lo suficientemente larga para contener la cadena más larga.
Una matriz unidimensional es esencialmente una tabla compuesta de datos similares. Por ejemplo, para la siguiente matriz a:
char a[7]
Figura. 5 - 1 ilustra la situación de la matriz a en la memoria, suponiendo que la dirección inicial es 1000.
5.1.1 Pasar una matriz unidimensional a una función
Al pasar una matriz unidimensional a una función, simplemente llame a la función directamente con el nombre de la matriz como parámetro sin cualquier subíndice. De esta forma, la dirección del primer elemento de la matriz se pasará a la función. En lugar de pasar toda la matriz como argumento, C usa un puntero. Por ejemplo, el siguiente programa pasa la dirección del primer elemento de la matriz i a la función func1().
main()
{
int i[10];
func1(i); /*Llamada a función, parámetros reales Es el nombre de la matriz* /
.
}
Si la función quiere recibir la transferencia de una matriz unidimensional, puede hacerlo. utilice uno de los dos métodos siguientes para ilustrar los parámetros formales 1) matriz limitada 2) matriz ilimitada; Por ejemplo, la función func1() para recibir la matriz i se puede describir de la siguiente manera:
func1(str)
char str[10] /* Matriz delimitada, el subíndice; del conjunto solo puede ser menor o igual que el tamaño del conjunto pasado. * /
{
.
.
}
También se puede explicar como: <. /p >
func1(str)
char str[ ]; / * Matriz ilimitada* /
{
.
.
}
Los efectos de estos dos métodos de descripción son equivalentes. Ambos notifican al compilador que cree un puntero de carácter.
La primera descripción utiliza una descripción de matriz estándar; la última descripción utiliza una descripción de matriz mejorada, que simplemente indica que la función recibirá una matriz de números enteros de cierta longitud. Si lo piensa detenidamente, encontrará que en lo que respecta a la función, no importa qué tan larga sea la matriz, porque el lenguaje C no realiza pruebas de límites en la matriz. De hecho, en lo que respecta a la compilación de programas, las siguientes instrucciones también son factibles.
func1 (cadena);
int cadena[32];
{
. }
Debido a que el compilador solo genera código para hacer que la función func1() reciba un puntero, en realidad no genera una matriz que contenga 3 2 elementos.
5.1.2 Arreglos unidimensionales usados por cadenas
Obviamente, el uso más común de los arreglos unidimensionales es como cadenas. En lenguaje C, una cadena se define como una matriz de caracteres terminada en nulo. El carácter nulo se identifica con '\0' y normalmente no se muestra. Por lo tanto, al declarar una matriz de caracteres, debe especificar un carácter más que la cadena más larga que contendrá. Por ejemplo, si desea definir una matriz para almacenar una cadena de longitud 1 0, puede escribirla como:
char s[11]
Esto da el valor nulo; carácter al final de la cadena El espacio está reservado.
Aunque el lenguaje C no define cadena como un tipo de datos, permite el uso de constantes de cadena. Las constantes de cadena son listas de caracteres entre comillas dobles. Por ejemplo, las siguientes dos frases son constantes de cadena:
"hola"
"esto es una prueba"
No es necesario agregar un carácter nulo , el compilador de C hará esto automáticamente.
El lenguaje C admite múltiples funciones de operación de cadenas, las más utilizadas son:
Nombre de función
strcpy(s1 s2) copia s2 a s1
strcat(s1 s2) concatena s 2 hasta el final de s 1
strlen(s1) devuelve la longitud de s1
strcmp(s1, s2) si s1 y s2 son iguales, el valor de retorno es 0
Si s1 lt; el valor de retorno es menor que 0
Si s1 s2, el valor de retorno es mayor que 0
Ejemplo 5 - 2 Explica el uso de estas funciones.
[Ejemplo 5 - 2]
#includelt; stdio.hgt
main()
{
char s1[80], s2[80]; /*Definir matriz de caracteres* /
obtiene /*Cadena de entrada* /
obtiene (s2);
printf ("longitudesf: d d\n" , strlen(s1), strlen(s2)
if (!strcmp(s1, s2))
printf ("las cadenas son iguales \n");
strcat(s1, s2
printf ("s\n",
);}
Recuerde que cuando dos cadenas son iguales, la función strcmp() devolverá False. Por lo tanto, al probar la igualdad de cadenas, debe usar la lógica como en el ejemplo anterior. Invierta la condición de prueba.
Cuando el programa se ejecuta y toma las dos cadenas "hola" y "hola" como entrada, su salida es:
hola
hola
longitudes: 5 5
Las cadenas son iguales
holahola
5.2 Matriz bidimensional
5.2.1 Bidimensional dimensional La forma general de matriz
El lenguaje C permite el uso de matrices multidimensionales, y la matriz multidimensional más simple es una matriz bidimensional. De hecho, una matriz bidimensional es una matriz compuesta por matrices unidimensionales como elementos. Para describir d como una matriz entera bidimensional de tamaño (10, 20), se puede escribir como:
Preste atención a la declaración anterior. C no usa comas para distinguir subíndices como la mayoría de los otros lenguajes de computadora, sino que usa corchetes para encerrar los subíndices de cada uno. dimensión y la matriz Los subíndices bidimensionales se calculan a partir de 0.
De manera similar, para acceder al elemento con el subíndice (3, 5) en el array d, puedes escribir:
d[ 3 ][ 5 ]
En el ejemplo 5-3, los números enteros del 1 al 12 se cargan en una matriz bidimensional.
[Ejemplo 5 - 3]
main ( )
{
int t, i, num[3][4]
for (t=0; tlt; 3; t)
for (i=0; ilt; 4; i)
num[t][ i] = (t * 4) i 1;
}
En este ejemplo, el valor de num[0][0] es 1 y num[0][2 ] El valor de es 3, . y el valor de num[2][3] es 1 2. Puedes pensar en la matriz como la siguiente tabla:
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
Las matrices bidimensionales se almacenan en forma de matrices fila-columna. El primer subíndice representa la fila y el segundo subíndice representa la columna, lo que significa que al acceder a los elementos de la matriz en el orden en que realmente están almacenados en la memoria, el subíndice derecho cambia más rápido que el subíndice izquierdo. La Figura 5-2 muestra la situación de una matriz bidimensional en la memoria. De hecho, el primer subíndice puede considerarse como un puntero de fila.
Recuerde, una vez que se certifica una matriz, todos los elementos de la matriz tendrán asignado el espacio de almacenamiento correspondiente. Para una matriz bidimensional, se puede utilizar la siguiente fórmula para calcular el número de bytes de memoria necesarios:
Número de filas × número de columnas × número de bytes de tipo = número total de bytes
Por lo tanto, suponiendo un entero de doble byte, una matriz de enteros de tamaño (10, 5) requerirá: 10 × 5 × 2 = 100 bytes. Cuando se utiliza una matriz bidimensional como parámetro de una función, el primero. En realidad, se pasa el elemento (como [0] [0]) puntero. Sin embargo, la función debe definir al menos la longitud de la segunda dimensión, porque el compilador de C necesita conocer la longitud de cada fila para poder recuperar la matriz correctamente. Por ejemplo, una función que recibirá una matriz bidimensional de tamaño (10, 10) se puede describir de la siguiente manera:
func1(x)
int x[ ][10 ]
{
.
.
}
La longitud de la primera dimensión también puede ser especificado, pero no es necesario.
El compilador de C necesita conocer la longitud de las dos dimensiones al procesar las siguientes declaraciones en la función:
X[2][4]
Si la longitud de la fila no está definida, entonces es imposible saber dónde comenzar la tercera fila [Ejemplo 5-4] Utilice una matriz bidimensional para almacenar las puntuaciones de los estudiantes en cada clase impartida por un determinado profesor. Supongamos que el profesor tiene tres clases, cada una con un máximo de treinta alumnos. Preste atención a cómo cada función accede a la matriz.
#definir clases 3
#definir grados 30
#include lt; stdio.hgt
main()
{
void enter_grades();
void disp_grades(
int get_grade(
int a); [clases] [calificaciones] /* Defina una matriz bidimensional, cada fila almacena las calificaciones de los estudiantes en una clase* /
char ch;
for( ; ;)
do { /*Pantalla de menú* /
printf("(E)ntroducir calificaciones\n");
printf("(R)informar calificaciones \n");
printf("(Q)uit\n");
ch=toupper(getchar()); /* Convertir caracteres de entrada del teclado a mayúsculas* /
} while(ch!='E' amp; ch!='R' amp; ch!='Q');
switch(ch){
caso 'E':
enter_grades(
descanso
caso 'R':
disp_grades(calificación);
ruptura;
caso 'Q':
salida(0); >
}
}
void enter_grades(a)
int a[][calificaciones];
{ p>
int t, i;
for (t=0; tlt; clases; t )
{
printf("clase #d :\n" , t 1);
for(i=0; ilt; calificaciones; i )
a[t][i] = get_grade(i); p>
}
}
int get_grades(num)
int num;
{
char s[ 80];
printf("ingrese la calificación del estudiante # d:\n", n u m 1);
gets(s);
return(atoi(s));
}
void disp_grades(g) /*Mostrar calificaciones de los estudiantes* /
int g[ ][ calificaciones];
{
int t, i;
for(t
=0; tlt; clases; t) {
printf("clase # d:\n", t
for(i = 0; i lt; calificaciones; i)
printf("la calificación del estudiante #d es d\n", i 1, g[t][i]); }
Simplificamos el problema real a *** Hay 2 clases, cada clase tiene dos estudiantes, es decir, modificamos la definición constante en el programa de la siguiente manera:
#define clases 2 p>
#definir calificaciones 2
Ejecutar el programa:
(E)entrar calificaciones
(R)informar calificaciones p>
(Q)uit: e
clase #1:
ingrese la calificación del estudiante #1: 7 8
ingrese la calificación del estudiante # 2: 8 9
clase #2
ingrese la calificación del estudiante #1: 9 8
ingrese la calificación del estudiante #2: 9 0
(E )nter calificaciones
(R)informar calificaciones
(Q)uit: r
clase #1
la calificación del estudiante n.° 1 es 78
la calificación del estudiante n.° 2 es 89
clase n.° 2
la calificación del estudiante n.° 1 es 98
la calificación del estudiante #2 es 90
(E)nter calificaciones
(R)informar calificaciones
(Q)uit: q
Ejecute el programa, primero vemos un menú, seleccionamos "e" para ingresar resultados, seleccionamos "r" para mostrar los resultados y seleccionamos "q"
para salir. La función atoi() se utiliza para convertir la cadena de argumento en un número entero.
5.2.2 Matriz de cadenas
Las matrices de cadenas se utilizan a menudo en programación. Por ejemplo, un controlador de entrada de base de datos verificaría la validez de un comando ingresado por el usuario comparándolo con comandos válidos almacenados en una matriz de cadenas. Se puede crear una matriz de cadenas en forma de una matriz de caracteres bidimensional. El subíndice izquierdo determina el número de cadenas y el subíndice derecho indica la longitud máxima de la cadena. Por ejemplo, la siguiente declaración define una matriz de cadenas, que puede almacenar 30 cadenas y la longitud máxima de la cadena es de 80 caracteres:
char str_array[30][80];
Es fácil acceder a cadenas individuales especificando el subíndice izquierdo. Por ejemplo, la siguiente declaración llama a la función gets() con la tercera cadena de la matriz str_array como parámetro.
gets(str_array[2]);
Esta declaración es funcionalmente equivalente a:
gets(amp; str_array[2][0]) ;
Pero la primera forma es más común en programas en lenguaje C escritos por programadores profesionales.
Para ayudar a comprender el uso de matrices de cadenas, estudie los Ejemplos 5-5. Realiza una edición de texto simple basada en una matriz de cadenas.
[Ejemplo 5 - 5]
#includelt;stdio.hgt;
#define MAX 100
#define LEN 80
char text [MAX][LEN]
/* Un editor de texto muy sencillo* /
main()
{ p>
registrar int t, i, j;
for(t=0; tlt; MAX; t ) /*Ingresar cadena línea por línea* /
{
printf("d:", t);
obtiene(texto[t]
if(! texto[t][0] )
break; /* Salida de línea vacía*/
}
for(i = 0; i lt; t, i) /*Por línea, genera el cadena carácter por carácter* /
{
for(j=0; texto [i][j]; j )
putchar(texto [i ] [j]);
putchar( '\n');
}
}
Este programa ingresa líneas de texto hasta Se detiene cuando se encuentra una línea en blanco y luego vuelve a mostrar las líneas un carácter a la vez.
5.3 Arreglos multidimensionales
El lenguaje C permite arreglos de más de dos dimensiones. El límite en el número de dimensiones (si corresponde) lo determina el compilador específico. La forma de descripción general de las matrices multidimensionales es:
Nombre del especificador de tipo [a][b][c]...[z];
Debido a la gran cantidad de memoria ocupada, se utilizan con menos frecuencia dos Arrays de una o más dimensiones. Como se mencionó anteriormente, cuando se define la matriz, todos los elementos de la matriz se asignarán al espacio de direcciones. Por ejemplo, una matriz de caracteres de cuatro dimensiones de tamaño (10, 6, 9, 4) requiere 10×6×9×4 o 2160 bytes.
Si la matriz anterior es un entero de dos bytes, se requieren 4320 bytes. Si la matriz es una palabra doble (suponiendo que cada palabra doble tenga 8 bytes), se requieren 34560 bytes. La cantidad de almacenamiento aumenta. exponencialmente a medida que aumenta el número de dimensiones.
Una cosa a tener en cuenta sobre las matrices multidimensionales: la computadora pasa mucho tiempo calculando los subíndices de las matrices, lo que significa que acceder a los elementos de una matriz multidimensional lleva más tiempo que acceder a los elementos de una matriz unidimensional. formación. Por estas y otras razones, una gran cantidad de matrices multidimensionales generalmente utilizan el método de asignación dinámica de funciones y punteros en lenguaje C, y asignan dinámicamente espacio de almacenamiento a una parte de la matriz a la vez.
Cuando se pasa una matriz multidimensional a una función, se deben especificar todas las dimensiones excepto la primera dimensión. Por ejemplo, defina la matriz m como:
int m[4][3][6][5]
Entonces la función que recibe m debe escribirse como: ; p>
func1 (d)
int d[][3][6][5];
Por supuesto, también puedes agregar una descripción de la primera dimensión. si quieres.
5.4 Inicialización de matrices
5.4.1 Inicialización de matrices
El lenguaje C permite inicializar matrices globales y matrices locales estáticas durante la descripción, pero no no -Inicialización estática de la matriz local.
Al igual que otras variables, la forma general de inicialización de una matriz es la siguiente:
especificador de tipo nombre_matriz[tamaño1]...[tamaño]={lista de valores};
La lista de valores es una lista de constantes separadas por comas. Los tipos de estas constantes son consistentes con la especificación de tipo. La primera constante se almacena en la primera unidad de la matriz, la segunda constante se almacena en la segunda unidad, y así sucesivamente. Tenga en cuenta que se agrega un punto y coma después del corchete "}. ".
Se inicializa una matriz de enteros de 10 elementos para contener los números del 1 al 10 de la siguiente manera:
int i[10]={1, 2, 3, 4, 5, 6 , 7, 8, 9, 10 };
Esto significa que el valor de i[0] es 1 y el valor de i[9] es 10.
La inicialización de una matriz de caracteres para almacenar una cadena puede realizarse de la siguiente forma simplificada:
char array_name[size] = "string";
Para Por ejemplo, la siguiente sección de código inicializa str en "hola".
char str[6] = "hola";
El código anterior produce el mismo resultado que el siguiente código:
char str[6]={ 'h ', ' e ', ' l ', ' l ', ' o ', '\o '};
Debido a que todas las cadenas en lenguaje C terminan en caracteres NULL, es necesario hacer Asegúrese de que la matriz definida sea lo suficientemente larga para contener caracteres nulos. Es por eso que hello tiene solo 5 caracteres y str tiene 6 caracteres. Cuando se utilizan constantes de cadena, el compilador agrega automáticamente un carácter nulo al final.
El método para inicializar matrices multidimensionales es el mismo que el de las matrices unidimensionales. Por ejemplo, la siguiente fórmula inicializa sqrs del 1 al 1 0 y sus respectivos números cuadrados.
int sqrs[10][2]={
1, 1,
2, 4,
3, 9,
4, 1 6,
5, 2 5,
6, 3 6,
7, 4 9,
p>p>
8, 6 4,
9, 8 1,
1 0, 1 0 0,
};
5.4.2 Inicialización de una matriz de longitud variable
Imagine usar el método de inicialización de una matriz para crear una tabla de mensajes de error de la siguiente manera:
char e1[12] = "error de lectura\n";
char e2[13] = "error de escritura\n"
char e3[18] = "no se puede abrir el archivo\n"; /p>
Puedes imaginar lo problemático que sería calcular manualmente el número de caracteres de cada pieza de información para determinar la longitud de la matriz. El uso del método de inicialización de matriz de longitud variable permite a C calcular automáticamente la longitud de la matriz. La inicialización de matrices de longitud variable permite al compilador de C crear automáticamente una matriz lo suficientemente grande como para almacenar datos de inicialización sin especificar la longitud.
Usando este método, la tabla de información anterior se convierte en:
char e1[] = "error de lectura\n";
char e2[] = "error de escritura\n";
char e2[] = "error de escritura\n";< / p>
char e3[] = "no se puede abrir el archivo\n";
Dada la inicialización anterior, la siguiente declaración printf("s tiene una longitud d\n", e2, sizeof( e2) );
Imprimirá:
error de escritura
tiene longitud 13
Además de reducir los problemas, utilice matrices de longitud variable Inicialización permite al programador modificar cualquier información sin preocuparse por los errores de cálculo que puedan ocurrir en cualquier momento.
El método de inicialización de matrices de longitud variable no se limita a matrices unidimensionales. Sin embargo, al inicializar una matriz multidimensional, debe especificar la longitud de cada dimensión excepto la primera dimensión para que el compilador pueda recuperar la matriz correctamente. El método es similar a la descripción de los parámetros formales de una matriz. De esta manera, se pueden crear tablas de longitud variable y el compilador les asigna automáticamente espacio de almacenamiento. Por ejemplo, lo siguiente utiliza el
método de inicialización de matriz de longitud variable para definir los cuadrados de la matriz:
int sqrs[ ][2]={
1 , 1,
p>
2, 4,
3, 9,
4, 1 6,
5 , 2 5,
6, 3 6,
7, 4 9,
8, 6 4,
9, 8 1,
1 0, 1 0 0
};
En comparación con la inicialización de una matriz de longitud fija, la ventaja de esta descripción es que se puede aumentar en cualquier momento sin cambiar la longitud de cada dimensión de la matriz o acortar la longitud de la tabla.
5.5 Ejemplo de aplicación
[Ejemplo 5-6] Jugadores de competición de puntuación.
Método de cálculo: resta la puntuación más alta y la puntuación más baja de las puntuaciones de los 10 jueces, luego suma la puntuación total y divide por 8 para finalmente obtener la puntuación final del jugador (la puntuación adopta cien- sistema de puntos).
#includelt; stdio.hgt;
main()
{
int puntuación[10] / * Puntuación de 10 jueces * /
marca flotante; /* puntuación final* /
int i;
int max = -1 / *puntuación más alta* /< /p; >
int min = 101; /*puntuación mínima* /
int suma = 0; /*suma de 10 jueces* /
for( i = 0 ; i lt ; 10 ; i )
{
printf("Ingrese la puntuación del número d", i 1 );
scanf(" d\n ", amp; puntuación[i]);
suma = suma puntuación[i];
}
for(i = 0; i lt; 10 ; i)
{
if(puntuación[i] gt; max)
max = puntuación[i];
}
for(i = 0; i lt; 10; i )
{
if(score[i]lt; min) p>
min = puntuación[i];
}
marca = ( suma - min - max ) / 8.0
printf("La marca del El jugador es .1f\n", mark);
}
[Ejemplo 5-7] Ordenación secuencial, utilizando el método de selección para implementar la secuencia de 5 números Ordenar.
La idea del algoritmo del método de selección es: (orden descendente)
1. Coloque los n números a ordenar en la matriz num, es decir, num [0]. , número[1], .
2. Compare num[ 0 ] con num[1] posterior en secuencia, asegurándose de que el número grande aparezca primero y el número decimal sea el último. En esta comparación, num[0] es el más grande de la matriz.
3. Los n - 1 elementos restantes
4. num[1] y num[2] . número primero. Con el decimal después, esta vez num[1] es el máximo de todos los elementos.
Compare num[ n - 2 ] con num[ n - 1 ], num[ n - 2 ] almacena números grandes.
Num[n - 1] almacena decimales, finaliza la comparación y se ordenan los datos.
Ejemplo: Los 5 números a ordenar son: 44 76 82 63 71
Una clasificación: 1 comparación: 76 44 82 63 71
2 veces Comparación : 82 44 76 63 71
3 comparaciones: 82 44 76 63 71
4 comparaciones: 82 44 76 63 71
Máximo
#include lt; stdio.hgt;
main()
{
int num[5];
int i, j;
int temp;
número[0]=94; número[1]=76; número[2]=82; ]=71;
para(i=0; ilt; 4; i )
para(j=i 1; jlt; 5; j )
{
if(num[i]gt; num[j])
{
temp = num[i];
núm[i] = núm[j];
núm[j] = temporal
}
}
para(i =0; ilt; 5; i)
printf("4d", num[i]);
printf("ok\n");
}
Este es un programa de clasificación muy simple. Solo necesitamos expandirlo ligeramente para compilar muchos programas de gestión poderosos, como puntajes estadísticos totales de los estudiantes, clasificaciones de calificaciones promedio, etc.
[Ejemplo 5-8] Sistema simple de consulta de puntuación de estudiantes.
La Figura 5-3 muestra el formulario de registro de puntaje del estudiante. El siguiente programa de ejemplo completa las siguientes funciones:
1) Según el número de estudiante ingresado, se obtienen los puntajes de las pruebas y los puntajes promedio. dado
2) Según el número de veces que se ingresa al examen, imprima los puntajes de cada estudiante en el examen y proporcione el puntaje promedio
3) Descubra un; puntaje del estudiante basado en el número de estudiante Puntajes de las pruebas;
4) Ingrese los puntajes de las pruebas.
#include lt; stdio.hgt;
main()
{
int select;
int i, j;
int puntuación[5][7];
int promedio=0
int suma=0; p> do{
printf("Este programa tiene 4 funciones\n");
printf("1. Consulta las puntuaciones de los estudiantes según el número de estudiantes\n"); p>
p>
printf("2. Estadísticas de puntajes según el número de examen\n");
printf("3. Consulta de puntajes según el número de examen y el número de estudiante\n ");
printf("4. Entrada de partitura\n");
printf("0. Salir\n");
printf(" Introduzca su elección (0 - 4): ");
scanf("d\n", amp; select);
switch(select)
{
caso 0:
printf("OK\n");
salida(0)
descanso
p>caso 1:
printf("Ingrese el número de estudiante: ");
scanf("d\n", amp; i); p> for(j=1; jlt ;7; j )
{
printf("La puntuación de la materia d es d\n",j,score[i][ j]);
suma = puntuación[i][j];
}
promedio = suma/6;
printf ("La puntuación promedio del estudiante es d\n ", promedio
break;
caso 2:
printf("Ingrese el número de examen: ") ;
scanf( "d\n",amp;j);
for(i=1; ilt;5; i)
{ p>
printf("th d El puntaje de pregrado del estudiante No. es d\n", i, puntaje[i][j]);
suma = puntaje[i][j] ;
}
promedio = sum/4;
printf("La calificación promedio de pregrado es d\n", promedio
break
caso 3:
p >printf("Ingrese el número de estudiante y el número de examen:");
scanf("d d\n", amp;, i, amp; j
); printf ("La puntuación de la prueba de la materia d del estudiante d es d\n", i, j, puntuación[i][j]);
break
caso 4:
printf("Por favor ingrese la puntuación\n");
for(i=1; ilt; 5; i )
for(j=1 ; jlt; 7; j )
scanf("d\n", amp; puntuación[i][j]); :
break;
} while(1);
}
Como se puede ver en este ejemplo, cuando se trata de bidimensional Cuando se trabaja con matrices, los bucles for dobles generalmente se usan para acceder a los elementos.