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 за отговор № 1for (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");
}