Considerando a matriz M abaixo e o programa que imprime seu conteúdo, qual das alternativas abaixo, ao substituir DECLARAÇÃO na linha 3, não declara a matriz?
Questão
Considerando a matriz M abaixo e o programa que imprime seu conteúdo, qual das alternativas abaixo, ao substituir DECLARAÇÃO na linha 3, não declara a matriz?
Matriz M (4x2):
| A | B |
|---|---|
| C | D |
| E | F |
| G | H |
Trecho do programa que imprime a matriz:
#include <stdio.h> int main(){ DECLARAÇÃO; for(int i=0;i<4;i++){ for(int j=0;j<2;j++) printf(" %c",m[i][j]); printf(" \n"); } }
Alternativas
a) char m[][2]={{'A','B'},{'C','D'},{'E','F'},{'G','H'}};
b) char m[][2]={'A','B','C','D','E','F','G','H'};
c) char m[4][2]={'A','B','C','D','E','F','G','H'};
d) char m[4][2]={{'A','B','C','D'},{'E','F','G','H'}};
e) char m[4][2]={{'A','B'},{'C','D'},{'E','F'},{'G','H'}};
Explicação
A matriz do enunciado é 4x2, ou seja, precisa ter 4 linhas e 2 colunas (total de 8 chars), acessadas como m[i][j] com i<4 e j<2.
Analisando as declarações:
-
a)
char m[][2]={{'A','B'},{'C','D'},{'E','F'},{'G','H'}};
Válida: 2 colunas fixas e 4 linhas inferidas pelo compilador. -
b)
char m[][2]={'A','B','C','D','E','F','G','H'};
Válida: inicialização “linear”; com 2 colunas, o compilador infere 4 linhas. -
c)
char m[4][2]={'A','B','C','D','E','F','G','H'};
Válida: dimensões batem (4x2) e a lista linear preenche por ordem. -
d)
char m[4][2]={{'A','B','C','D'},{'E','F','G','H'}};
Inválida: cada linha tem tamanho 2, mas o inicializador da 1ª linha fornece 4 elementos ('A','B','C','D'). Isso viola o tamanho da segunda dimensão (2). Portanto, não declara corretamente a matriz. -
e)
char m[4][2]={{'A','B'},{'C','D'},{'E','F'},{'G','H'}};
Válida: exatamente 4 linhas com 2 colunas.