¿Qué es una matriz unidimensional?

Una matriz es una colección de varias variables del mismo tipo a las que se puede hacer referencia con el mismo nombre. La matriz consta de unidades de almacenamiento consecutivas, donde la dirección más baja corresponde al primer elemento y la dirección más alta corresponde al último elemento. Las matrices pueden ser unidimensionales o multidimensionales.

5.1 Matriz unidimensional

La descripción general de una matriz unidimensional es la siguiente:

Especificador de tipo var_name[tamaño];

En lenguaje C, las matrices deben describirse claramente para que el compilador pueda asignarles espacio de memoria. En la fórmula anterior, el especificador de tipo indica el tipo de matriz, es decir, el número de cada elemento de la matriz. El número total de bytes de una matriz unidimensional se puede calcular de la siguiente manera:

Tamaño de (tipo) *longitud de la matriz =Número total de bytes

[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 t;

for(t = 0; t lt10; t)x[t]= t;

p>

}

El lenguaje C no verifica los límites de la matriz, por lo que ambos extremos de la matriz pueden salirse de los límites, destruyendo otras matrices de variables e incluso el código del programa. Es responsabilidad del programador comprobar los límites de una 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, puede llamar a la función directamente con el nombre de la matriz como parámetro sin ningún subíndice. De esta forma, la dirección del primer elemento de la matriz se pasará a la función. El lenguaje C no pasa toda la matriz como parámetro, sino que utiliza 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]

func 1(I); llamado, el parámetro es el nombre de la matriz*/

. . .

}

Si una función quiere recibir una matriz unidimensional, puede usar uno de los dos métodos siguientes para interpretar los parámetros formales 1) matriz limitada 2) ilimitada; formación. Por ejemplo, la función func1() puede recibir la matriz I de la siguiente manera:

func1(string)

char str[10] /*Matriz delimitada, el subíndice de la matriz; solo puede ser menor o igual que el tamaño de la matriz pasada. * /

{

.

. .

}

También se puede interpretar como:

func1 (cadena)

char str[] /*matriz ilimitada*; /

{

.

. .

}

Los efectos de estos dos métodos son equivalentes. Ambos le dicen 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 solo indica que la función recibirá una matriz de números enteros de cierta longitud. Si lo piensas bien, no importa qué tan larga sea la matriz en lo que respecta a la función, porque el lenguaje C no verifica los límites de la matriz. De hecho, en lo que respecta al compilador, las siguientes instrucciones también son factibles.

func 1(cadena);

int cadena[32];

{

. . .

}

Debido a que el compilador solo genera código para permitir que la función func1() reciba un puntero, en realidad no genera una matriz con 3^2 elementos.

Arrays unidimensionales para cadenas 5.1.2

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 describir una matriz de caracteres, debe tener un carácter más que la cadena más larga que almacenará. Por ejemplo, si desea definir una matriz S para almacenar una cadena de longitud 1 0, puede escribirla de la siguiente manera:

char s[11];

Este es el carácter Un carácter nulo al final de la cadena deja un espacio.

Aunque el lenguaje C no define cadena como un tipo de datos, permite el uso de constantes de cadena. Una constante de cadena es una lista de caracteres entre comillas dobles. Por ejemplo, las dos frases siguientes son constantes de cadena:

"Hola"

"Esto es una prueba"

No es necesario agregarlas al final del carácter nulo de la cadena, el compilador de C lo hará 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) conecta s2 con el final de s1.

Strlen(s1) devuelve la longitud de s1.

Strcmp(s1, s2) Si s1 es igual a s2, el valor de retorno es 0.

Si s1

Si s1 > S2, el valor de retorno es mayor que 0

El ejemplo 5-2 ilustra el uso de estas funciones.

[Realización 5-2]

# include ltstdio.h gt

main()

{

char s1[80], S2[80]; /*Definir matriz de caracteres*/

gets(s 1);

printf ("longitudesf: d d\n ", strlen(s1), strlen(S2));

if (! strcmp(s1, s2))

printf("Cadena igual\n ");

strcat(s1, S2);

printf ("s\n ", s 1);

p >

}

Recuerde que la función strcmp() devolverá False cuando dos cadenas sean iguales, por lo que al probar la igualdad de cadenas, al igual que en el ejemplo anterior, ¡debe utilizar operadores lógicos! Invierta las condiciones de la prueba.

Cuando el programa se ejecuta y acepta las dos cadenas "hola" y "hola" como entrada, su salida es:

Hola

Hola

Longitud: 5 5

Las cadenas son iguales

holahola

5.2 Matriz bidimensional

5.2 .1 Forma general de matriz bidimensional

El lenguaje C permite el uso de matrices multidimensionales. La matriz multidimensional más simple es una matriz bidimensional. De hecho, una matriz bidimensional es una matriz compuesta de matrices unidimensionales. Para interpretar D como una matriz entera bidimensional de tamaño (10, 20), puede escribir:

int d[10][20]

Tenga en cuenta la afirmación anterior. A diferencia de la mayoría de los otros lenguajes informáticos, C no utiliza comas para distinguir los subíndices. En cambio, se utilizan corchetes para encerrar los subíndices en cada dimensión. Los subíndices bidimensionales de la matriz se calculan a partir de 0.

De manera similar, el elemento con índice (3, 5) al que se accederá en la matriz D se puede escribir como:

d[ 3 ][ 5 ]

En el ejemplo 5-3, los números enteros del 1 al 12 se cargan en una matriz bidimensional.

[Realización 5-3]

Principal( )

{

int t, I, num[3][4 ]

for(t = 0; t lt3; t)

for(I = 0; i lt4; i)

num[t][I ] =(t * 4) I 1;

}

En este ejemplo, el valor de num[0][0] es 1 y el valor de num[0][ 2] El valor es 3 y el valor de num[2][3] es 1^2. Puedes considerar esta 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 de filas y filas. El primer subíndice representa la fila y el segundo subíndice representa la columna, lo que significa que cuando se accede a los elementos de la matriz en el orden en que realmente se almacenan en la memoria, el subíndice derecho cambia más rápido que el subíndice izquierdo. La Figura 5-2 muestra una matriz bidimensional en la memoria. De hecho, el primer subíndice puede considerarse como un puntero a una fila.

Recuerde que una vez que se prueba una matriz, a todos los elementos de la matriz se les asignará el espacio de almacenamiento correspondiente. Para una matriz bidimensional, puede utilizar la siguiente fórmula para calcular la cantidad 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 dos bytes, una matriz de enteros de tamaño (10, 5) requeriría: 10 × 5 × 2 = 100 bytes. Cuando se utiliza una matriz bidimensional como parámetro de una función, lo que realmente se pasa es un puntero al primer elemento (como [0] [0]). Sin embargo, esta función debe definir al menos la longitud de la segunda dimensión, porque si el compilador de C quiere recuperar la matriz correctamente, necesita saber la longitud de cada fila. Por ejemplo, una función que recibe una matriz bidimensional de tamaño (10, 10) se puede describir de la siguiente manera:

func1(x)

int x[ ][10]

{

.

. .

}

También puede especificar la longitud de la primera dimensión, pero esto no es obligatorio.

El compilador de c compila las siguientes declaraciones en la función:

X[2][4]

Al procesar, necesita saber la longitud del dos dimensiones. Si la longitud de la línea no está definida, entonces es imposible saber dónde comienza la tercera línea [Ejemplo 5-4] Utilice una matriz bidimensional para almacenar las puntuaciones de los estudiantes para cada clase impartida por un maestro. Supongamos que el maestro tiene tres clases, cada una con hasta treinta estudiantes. Observe cómo cada función accede a la matriz.

#Definición categoría 3

#Definición nivel 30

# incluir ltstdio.h gt

Principal( )

{

void enter _ calificaciones();

void disp _ calificaciones()

int get _ calificación(); p>int a[class][level];/*Defina una matriz bidimensional, cada fila almacena la puntuación de una clase*/

char ch

for(;; )

Hacer {/*Visualización del menú*/

printf("(E)informar calificaciones\ n ");

printf("(R)informar grados\ n ");

printf("(Q)uit \ n ");

ch = toupper(getchar()); /*Convierte los caracteres de entrada del teclado a mayúsculas* /

} while(ch!= ' E ' amp ampch!= ' R ' amp ampch!= ' Q '); Cambiar (canal) {

Caso "E":

enter_grades();

Descanso

Caso "R":

disp_grades(calificaciones) ;

Romper

Caso "Q":

Salir(0);

}

void enter_grades(a)

int a[][Calificación];

{

int t, I;

for(t = 0; t lt clase; t)

{

printf("clase #d:\n ", t 1);

for(I = 0; I lt calificación; i)

a[t][I]= get _ calificación(I);

}

}

int get_grades(número)

int num

{

char s [ 80];

printf("Ingrese la puntuación del estudiante # d: \n ", n u m 1

Obtener /*Ingrese la puntuación*/

<); p >Return(atoi(s));

}

Void disp_grades(g) /*Mostrar las calificaciones de los estudiantes*/

int g[][ calificaciones ];

{

int t, I;

for(t = 0; t lt clase; t) {

printf ("clase # d:\n ",t 1);

for(I = 0; I lt score; i)

printf("La puntuación del estudiante #d es d \n ", i 1, g[t][I]);

}

}

Simplificamos el problema real para * * * Hay dos Hay dos clases en cada clase. En otras palabras, modificamos la definición de constantes en el programa de la siguiente manera:

#Definición Categoría 2

#Definición Nivel 2

Ejecutar programa:

(E) Nivel invierno

(R) Nivel informe

(Q)uit: e

Categoría #1:

Ingrese la puntuación del Estudiante #1: 7 8

Ingrese la puntuación del Estudiante #2

Puntaje: 8 9

Categoría 2

Ingrese el puntaje del estudiante #1: 9 8

Ingrese el puntaje del estudiante #2: 9 0

(E) Calificación de invierno

(R) Informe de calificaciones

(Q)uit: r

Categoría #1

Estudiante #1 la puntuación es 78

La puntuación del estudiante n.º 2 es 89

Categoría 2

La puntuación del estudiante n.º 1 es 98

La puntuación del estudiante n.º 2 es 90 puntos

(E) Calificación de invierno

(R) Informe de calificación

traje: Pregunta

Al ejecutar el programa, primero vea un menú, seleccione "E" para ingresar la puntuación, "R" para mostrar la puntuación, seleccione "Q"

La función quit atoi() se utiliza para convertir una cadena de parámetro en un número entero.

Matriz de cadenas

Las matrices de cadenas se utilizan a menudo en programación. Por ejemplo, el procesador de entrada de la base de datos compara los comandos ingresados ​​por el usuario con comandos válidos almacenados en una serie de cadenas para verificar su validez. Las matrices de cadenas se pueden crear como matrices de caracteres bidimensionales. 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 contener 30 cadenas con una longitud máxima de 80 caracteres:

char str _ array[30][80];

Acceder a un Una sola cadena es fácil, simplemente marque el subíndice izquierdo. Por ejemplo, la siguiente declaración llama a la función gets(), tomando la tercera cadena en la matriz str_array como parámetro.

Get (str _ array[2]);

Esta declaración es funcionalmente equivalente a:

Get (ampstr _ 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 el Ejemplo 5-5. Realiza una edición de texto simple basada en matrices de cadenas.

[Realización 5-5]

# incluir ltstdio.h gt

#Definir máximo 100

#Definir lente 80

p>

Texto de carácter [MAX][LEN]

/*Un editor de texto muy simple*/

Principal( )

{

Registrar int t, I, j;

for(t = 0; t ltMAXT) /*Ingresar cadena línea por línea*/

{

printf("d:",t);

gets(text[t]);

if (!text[t][0])

p >

Break; /*Salir con línea en blanco*/

}

for(I = 0; i ltt, i) /*Salir de la cadena línea por línea y carácter por carácter* /

{

for(j = 0; texto[I][j]; j )

putchar(texto[I][j ]);

putchar('\n');

}

}

El programa ingresa líneas de texto hasta que encuentra una línea en blanco y luego vuelva a mostrar las líneas un carácter a la vez.

5.3 Arreglos multidimensionales

El lenguaje C permite que los arreglos sean más grandes que dos dimensiones, y el límite de dimensiones (si lo hay) lo determina el compilador específico. La forma de descripción general de matrices multidimensionales es:

Nombre del especificador de tipo [a][b][c]...[z];

Bidimensional o multidimensional. Las matrices dimensionales rara vez se utilizan porque ocupan mucha memoria. Como se mencionó anteriormente, cuando se define una matriz, todos los elementos de la matriz se asignan en el espacio de direcciones.

Por ejemplo, una matriz de caracteres de cuatro dimensiones con un tamaño de (10, 6, 9, 4) requiere 10 × 6 × 9 × 4, que son 2160 bytes.

Si la matriz anterior es un entero de dos bytes, se necesitan 4320 bytes. Si la matriz es una palabra doble (asumiendo que cada palabra doble tiene 8 bytes), se necesitan 34560 bytes para almacenar. La capacidad aumenta exponencialmente. el número de dimensiones.

Una cosa a tener en cuenta acerca de las matrices multidimensionales es que la computadora dedica mucho tiempo a calcular 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. Por estas y otras razones, los arreglos multidimensionales grandes generalmente usan el lenguaje C para asignar dinámicamente funciones y punteros para asignar dinámicamente espacio de almacenamiento para parte del arreglo a la vez.

Al pasar una matriz multidimensional a una función, se deben interpretar todas las dimensiones excepto la primera. Por ejemplo, la matriz m se define como:

int m[4][3][6][5]

Entonces la función que recibe m debe escribirse como:

func1 (d)

int d[][3][6][5];

Por supuesto, también puedes agregar una descripción del primero dimensión si lo desea.

5.4 Inicialización de matrices

6.5438 0 inicialización de matrices

El lenguaje C permite inicializar matrices globales y matrices locales estáticas durante la descripción, pero matrices locales no estáticas no se puede inicializar.

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 compatibles con la descripción del tipo. La primera constante se almacena en la primera celda de la matriz, la segunda constante se almacena en la segunda celda y así sucesivamente. Tenga en cuenta que se agrega un punto y coma después del corchete "}".

Inicializa uno de los siguientes arreglos de enteros de 1 0 elementos y carga los números del 1 al 10:

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 utilizada para almacenar cadenas puede tomar la siguiente forma simplificada:

char array _ nombre[tamaño] = "cadena"

; Por ejemplo, el siguiente fragmento 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'};

Debido a que todas las cadenas en lenguaje C terminan en caracteres nulos, asegúrese de definir suficientes matrices largas. para dar cabida a caracteres nulos. Es por eso que hello tiene solo cinco caracteres y str tiene seis caracteres. Cuando se utilizan constantes de cadena, el compilador agrega automáticamente un carácter nulo al final.

Las matrices multidimensionales se inicializan de la misma manera que las matrices unidimensionales. Por ejemplo, la siguiente fórmula inicializa sqrs del 1 al 1 0 y sus respectivos cuadrados.

int sqrs[10][2]={

1, 1,

2, 4,

3, 9,

4, 1 6,

5, 2 5,

6, 3 6,

7, 4 9,

p>

8, 6 4,

9, 8 1,

1 0, 1 0 0,

};

5.4.2 Inicialización de matrices de longitud variable

Imagínese usar el método de inicialización de matrices 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";

Puedes imaginar lo problemático que es contar manualmente el número de caracteres en cada mensaje para determinar la longitud de la matriz. c puede calcular automáticamente la longitud de una matriz inicializando una matriz de longitud variable. La inicialización de una matriz de longitud variable es para permitir que el compilador de C cree automáticamente una matriz de longitud no especificada lo suficientemente grande como para almacenar los datos de inicialización. 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 e3[] = "No se puede abrir el archivo\n";

Dada la inicialización anterior, la siguiente declaración printf ("haslength d\n",e2,sizeof( E2));

Imprimirá:

Error de escritura

La longitud es 13

Además de reducir los problemas, la inicialización de la matriz de longitud variable La aplicación permite a los programadores 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, se debe especificar la división al inicializar una matriz multidimensional.

La longitud de las dimensiones distintas de la primera para que el compilador pueda recuperar la matriz correctamente. El método es el mismo que el de los parámetros de matriz

Las instrucciones son similares. De esta manera, se puede crear una tabla de longitud variable y el compilador le asigna automáticamente espacio de almacenamiento. Por ejemplo, se utiliza el siguiente contenido

El método para inicializar una matriz de longitud variable define la matriz sqrs:

int sqrs[ ][2]={

1, 1,

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 puede ser Se utiliza sin cambiar la longitud de cada dimensión de la matriz, aumenta o disminuye la longitud de la tabla en cualquier momento.

5.5 Ejemplo de aplicación

[Ejemplo 5-6] Califica a los concursantes.

Método de cálculo: reste la puntuación más alta y la puntuación más baja de las puntuaciones de los 65,438 00 jueces, luego divida la puntuación total entre 8 y finalmente obtenga la puntuación final del jugador (la puntuación se basa en cien- sistema de puntos).

# include ltstdio.h gt

Principal ( )

{

int score[10];/* Puntuación de 10 jueces * /

Boya; /*Puntuación final*/

int I;

int max =-1 /*Puntuación más alta*/

int min = 101; /*Puntuación mínima*/

int sum = 0; /*Suma de 10 jueces*/

for(I = 0; ilt10; i )

{

printf("Ingrese la puntuación del No. d", I 1

scanf("d\n ", ampscore[); I]);

suma = suma puntuación[I];

}

for(I = 0; ilt10; i)

{

if(puntuación[I] gt;max)

max = puntuación[I];

}

para ( I = 0; i lt10; i)

{

if(puntuación[I] lt;mínimo)

min = puntuación[I];

}

mark =(sum-min-max)/8.0;

printf("La marca del jugador es .1f\n ",mark);< / p>

}

[Ejemplo 5-7] Ordenación de secuencia, utilice el método de selección para ordenar la secuencia de 5 números.

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], número [n-1].

2. Compare num[0] con el siguiente num[1]...Num[n-1] para garantizar que el número grande aparezca primero y el número pequeño llegue al final. En esta comparación, num[0] es el más grande de la matriz.

3. Los n-1 elementos restantes

4. Número [1] y número [2]...num[n-1] se comparan en secuencia, el más grande. primero, con el decimal después, este número [1] es el más grande de todos los elementos.

En comparación con num[n-2], num[n-1] contiene una cantidad mayor.

Num[n-1] almacena decimales, la comparación finaliza y la disposición es ordenada.

Ejemplo: El número de 5 a ordenar es: 44 76 82 63 71.

Clasificación de un viaje: 1 comparación: 76 44 82 63 71

Dos comparaciones: 82 44 76 63 71

Tres comparaciones: 82 44 76 63 71

Cuatro comparaciones: 82 44 76 63 71

Más alto

# include ltstdio.h gt

Principal( )

{

int num[5];

int i, j;

Temperatura interna

num [0]= 94;núm[1]= 76;núm[2]= 82;núm[3]= 63;núm[4]= 71;

for(I = 0;ilt4; i )

for(j = I 1; j lt5; j )

{

if(num[I] gt; número[j])

{

temp = num[I];

Número[i] =Número[j];

num[j]= temp;

}

}

for(I = 0;ilt5;i)

printf("4d ", num [I]);

printf(" ok \ n ");

}

Este es un programa de clasificación muy simple, solo necesitamos agregar un poco Las extensiones pueden compilar muchos potentes programas de gestión, como puntuaciones totales de los estudiantes, clasificaciones medias de puntuaciones, etc.

[Ejemplo 5-8] Sistema simple de consulta del desempeño de los estudiantes.

La Figura 5-3 muestra el formulario de registro de grado del estudiante. El siguiente programa de muestra completa las siguientes funciones:

1) Según el número de estudiante ingresado, se obtienen los puntajes de las pruebas y los puntajes promedio.

2) Imprime a cada estudiante según el número ingresado; número de puntajes de las pruebas de exámenes y dar el puntaje promedio;

3) Encuentre los puntajes de las pruebas del estudiante de acuerdo con el número de estudiantes

4) Ingrese los puntajes de las pruebas;

# incluir ltstdio.h gt

main()

{

int select

int i, j;

int puntuación[5][7];

int promedio = 0

int suma = 0; {

Printf("Este programa tiene cuatro funciones\ n ");

Printf("1, verifique las puntuaciones de los estudiantes según el número de estudiantes\ n "); p>Printf("2, resultados estadísticos basados ​​en el número de pruebas\ n ");

Printf("3, resultados de consulta basados ​​en el número de examen y número de estudiante\ n ");

Printf ("4, entrada de calificación \ n ");

Printf("0, salida \ n "); 4): ") ;

scanf("d\n ", selección de amplificador);

cambiar(seleccionar)

{

Caso 0:

printf(" OK \ n ");

Salir(0)

Pausa;

Caso 1:

Printf("Ingrese el número de estudiante:");

scanf("d\n ", ampI);

for(j = 1; j lt7 ; j )

{

Printf ("La calificación d es d\n ",j,score[I][j]);

suma = puntuación [I][j ];

}

Promedio = suma/6

Printf("La puntuación promedio de los estudiantes es d\n ", promedio

Pausa;

Caso 2:

Printf("Ingrese el número de examen:");

scanf("d\ n ", ampj);

for(I = 1; i lt5; i )

{

Printf("La calificación universitaria del estudiante # d es d\ n ", I, puntuación[I][j]);

suma = puntuación[I][j];

}

Promedio = suma/ 4;

p>

Printf("La calificación promedio de pregrado es d\n ", promedio

Descanso

Caso 3:

Printf("Ingrese el número de estudiante y el número de examen: ");

scanf("d d\n ", amp, I, ampj

Printf( "Estudiante d obtuvo d \n ", I , j, puntaje[I][j]);

Descanso;

Caso 4:

Printf( "Por favor, introduzca la puntuación\n ");

for(I = 1;i lt5;i)

for(j = 1;j lt7;j)

scanf("d\n ", ampscore[I][j]);

Pausa;

Valor predeterminado:

Pausa;

} mientras(1);

}