2015-09-25 58 views
-1

我想打印像这样的C语言的模式:打印模式用C

1 
2 6 
3 7 10 
4 8 11 13 
5 9 12 14 15 

目前我有这样的:

int main() 
{ 
    int i,j; 
    for(i=1;i<=5;i++) 
    { 
     for(j=1;j<=5;j++) 
     { 
      if(i>=j) 
      { 
       printf(" %d ",j+i-1); 
      } 
     } 
     printf("\n"); 
    } 
    printf("\n"); 
} 

我没有得到任何人可以期望的result.Please帮助

回答

4

基本上,如果你分析每行数字的区别:

1 
    2 6 
    3 7 10 
    4 8 11 13 
    5 9 12 14 15 
    ^^^ ^
diff 4 3 2 1 

然后,对于每一列(除了第一个,它等于该行)的公式为:

 col_value = val(row, col-1) + (5-col)) 

例如,最后一列:

5 9 12 14 15 

    9 = 5 + (5-1) 
    12 = 9 + (5-2) 
    14 = 12 + (5-3) 
    15 = 14 + (5-4) 

代码:

#include<stdio.h> 
int main() 
{ 
    int i,j,k; 
    for(i=1;i<=5;i++) 
    { 
    k = i; 
    for(j=1;j<=i;j++) 
    { 
     printf("%d ", k); 
     k += 5-j; 
    } 
    printf("\n"); 
    } 
    return 0; 
} 
+0

上述代码工作..但我不能够理解üPLZ的code..can xplain它给我 –

0
int main() 
{ 
int i,j,temp=0,l; 
for(i=1;i<=5;i++) 
{ 
    l=4; 
    temp = i; 
    for(j=1;j<=i;j++) 
    { 
     if(j>1) 
     { 
      printf("%d\t",temp+l); 
      temp = temp+l; 
      l=l-1; 
     } 
     else 
      printf("%d\t",i); 
    } 
    printf("\n"); 
    } 
    getch(); 
    return 0; 
} 
1

检查:

int main() 
{ 
int i,j; 
for(i=1;i<=5;i++) 
{ 
    int temp = 4; 
    int sum = 0; 
    for(j=1;j<=i;j++) 
    { 
     if (j == 1) 
      sum = i; 
     else{ 
      sum = sum + temp --; 
     } 
     printf("%d ",sum); 
    } 
    printf("\n"); 
} 
} 
1
int main() { 
    int k,i, j; 
    for (i = 1; i <=5; i++) { 
     k = i; 
     for (j = 1; j <= i; j++) { 
      printf ("%d ", k); 
      k = k + (5-j); 
     } 
     printf ("\n"); 
    } 
} 

的逻辑非常简单。

1)行中元素的数量等于行号。因此,使用j = 1到j的内循环< = i

2)如果你看到模式,你会发现每一行以等于行索引的数字开始,下一个数字是+4,然后是+3等等。

3)因此使用K = K +(5-J)