/ / Многомерен масив: таблица за добавяне на печат в C - c

Многоизмерно масив: таблица за добавяне на печата в C - c

int main(){
int row=0,col=0;
printf("Enter number of rows of the tablen");
scanf("%d",&row);
printf("Enter number of columns of the tablen");
scanf("%d",&col);
printTable(row,col);
}

void printTable(int row,int col){
int i =0,j=0,k=1,L=1,num=0;
printf("row: %d, col: %dn",row,col);
int table[row][col];
for (i;i<row;i++){
for (j;j<col;j++){
table[i][j] = i+j;
printf("%d ", table[i][j]);
}
printf("n");
}
}

Опитвайки се да отпечатам таблица за добавяне с помощта на многоизмерен масив, изходът ми изглежда така:

ред: 4, кол: 4

0 1 2 3

Но аз трябва да получа

0 1 2 3

1 2 3 4

2 3 4 5

3 4 5 6

Моля, помогнете ми да получите правилния изход. Благодаря

Отговори:

4 за отговор № 1
for (j;j<col;j++){

Не правите нулиране j до нула преди преминаването на втория и следващите. Променете това на

for (j=0;j<col;j++){

Може да искате да промените другия цикъл (включен) i) също. Като цяло, освен ако нямате много добра причина за това, винаги трябва да инициализирате променливата на цикъла преди първото преминаване; ето защо тази първа клауза на for в крайна сметка съществува синтаксис.

Между другото, ако сте Не мислех "т искате да инициализирате променливата на цикъла, бихте могли да го напишете като for (;j<col;j++){ - както сте го написали, j е концептуално просто извличане на стойността на променливата и изхвърлянето й, и for позволява просто да оставите клаузите за инициативиране, тестване и / или актуализиране празни, ако не ви трябват. Всъщност, for(;;) { означава същото като while(true) {, цикъл завинаги ... и някои хора обичат да настройват макрос,

#define EVER ;;

само за да могат да напишат любезното for(EVER) {


1 за отговор № 2

Ако искате изход като

0 1 2 3

1 2 3 4

2 3 4 5

3 4 5 6

След това следващият код отпечатва същия разход

for (i=0;i<row;i++){
for (j=0;j<col;j++){
table[i][j] = i+j;
printf("%d ", table[i][j]);
}
printf("n");
}