01/10/2018, 15:04

Nhờ mọi người giải thích về 2 vòng lặp lồng trong nhau

chào mọi người,mình là newbie mới học lập trình c,có bài tập thế này:
Viết chương trình nhập vào n và in ra hình theo quy luật
INPUT
5
OUTPUT
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
sau khi mầy mò trên mạng mình có tìm được đoạn code cho bài này(copy)

#include<stdio.h>
int main(){
	int n,ss=1;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
		printf("%d ",ss);
		ss++;
		}
		printf("
");
	}
}

Bài trên mình có hiểu sơ sơ là nhập vào n in ra n^2;cứ in được n phần tử thì xuống dòng.Đoạn code copy phia trên mình chưa hiểu dòng khai báo i,j và2 vòng lặp for lồng vào nhau ạ,mọi người có thể giải thích giúp mình được không,2 vòng lặp for lồng vào với nhau thì có mục đích gì ạ?mình là newbie hỏi có ngu có gì mng bỏ qua ạ

Evil Artist viết 17:06 ngày 01/10/2018
for(int i=0;i<n;i++){ //lặp lại n dòng
    for(int j=0;j<n;j++){ //lặp lại n lần trên mỗi dòng
       printf("%d ",ss);
	ss++; // Chắc cái này tự hiểu
    }
    printf("\n"); // xuống dòng sau mỗi dòng
}
/*
    Mục đích sử dụng 2 vòng for để xét lần lượt qua từng dòng và từng cột. 
    Tuy nhiên bạn cũng có thể sử dụng 1 vòng for và 1 câu điều kiện như bên dưới
   Với cách này đề bài được hiểu là
   Cho số n, in ra n dòng, mỗi dòng n phần tử tăng dần từ 1 tới n^2
*/

for(int i=0;i<n*n;i++){     
    printf("%d ",ss);
    ss++;
    if (i%n == 0)
       printf("\n"); 
}
/*
    Cách này giống với cách hiểu của bạn hơn, nhưng lại không rõ số hàng và số cột
*/
/* n = 5
OUTPUT:
   1
   2  3
   4  5  6
   7  8  9 10
  11 12 13 14 15
Đây là dạng mở rộng của đề bài trên, bạn có thể thử theo cả 2 cách
*/

Bài liên quan
0