输入数字,打印菱形。

这是一道编程题,更是一道数学题。平常会以for循环打印输出,仔细想想,用两个for完全可以实现(2011-09-26)。

 

以数字5为例:

 

 

方法一(以循环为主打印)

 
  
  1. #include <stdio.h> 
  2. void print(int n) 
  3.     int i,j; 
  4.     for(i=1; i<=n; i++) 
  5.     { 
  6.         for(j=1; j<=n-i; j++) 
  7.         { 
  8.             printf(" "); 
  9.         } 
  10.         for(j=n-i+1; j<n+i; j++) 
  11.         { 
  12.             printf("*"); 
  13.         } 
  14.         printf("\n"); 
  15.     } 
  16.      
  17.     for(i=n-1; i>=1; i--) 
  18.     { 
  19.         for(j=1; j<=(n-i); j++) 
  20.         { 
  21.             printf(" "); 
  22.         } 
  23.         for(j=n-i+1; j<n+i; j++) 
  24.         { 
  25.             printf("*"); 
  26.         } 
  27.         printf("\n"); 
  28.     } 
  29.  
  30. void main() 
  31.     int n; 
  32.     printf("---------开始打印符号---------\n"); 
  33.     printf("请输入数字:"); 
  34.     scanf("%d",&n); 
  35.     print(n); 
  36.     printf("---------结束打印符号---------\n");     

 

方法二:(两个for,根据条件判断实现)

 
  
  1. #include <stdio.h> 
  2. //输出格式 
  3. void print(char ch) { 
  4.     putchar(ch); 
  5. //星号 
  6. void printstar(int n) 
  7.     int i,j;    //行,列 
  8.     for(i=0; i<2*n-1; i++) 
  9.     { 
  10.         for(j=0; j<2*n-1; j++) 
  11.         { 
  12.             if(i<n) 
  13.             { 
  14.                 if(j>=n-i-1&&j<n+i) 
  15.                 { 
  16.                     print('*'); 
  17.                 } 
  18.                 else 
  19.                 { 
  20.                     print(' '); 
  21.                 } 
  22.             } 
  23.             else 
  24.             { 
  25.                 if(j>=i-n+1&&j<3*n-i-2) 
  26.                 { 
  27.                     print('*'); 
  28.                 } 
  29.                 else  
  30.                 { 
  31.                     print(' '); 
  32.                 } 
  33.             } 
  34.  
  35.         } 
  36.         print('\n'); 
  37.     } 
  38.  
  39. void main() 
  40.     int n; 
  41.     printf("---------开始打印符号---------\n"); 
  42.     printf("请输入数字:"); 
  43.     scanf("%d",&n); 
  44.     printstar(n); 
  45.     printf("---------结束打印符号---------\n");     

 

说明:(2n-1n-i-1= n+i

      2n-1-n-i-1))= 3n-i-2

 

18为例