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

 
方法一(以循环为主打印)
- #include <stdio.h> 
- void print(int n) 
- { 
-     int i,j; 
-     for(i=1; i<=n; i++) 
-     { 
-         for(j=1; j<=n-i; j++) 
-         { 
-             printf(" "); 
-         } 
-         for(j=n-i+1; j<n+i; j++) 
-         { 
-             printf("*"); 
-         } 
-         printf("\n"); 
-     } 
-      
-     for(i=n-1; i>=1; i--) 
-     { 
-         for(j=1; j<=(n-i); j++) 
-         { 
-             printf(" "); 
-         } 
-         for(j=n-i+1; j<n+i; j++) 
-         { 
-             printf("*"); 
-         } 
-         printf("\n"); 
-     } 
- } 
-  
- void main() 
- { 
-     int n; 
-     printf("---------开始打印符号---------\n"); 
-     printf("请输入数字:"); 
-     scanf("%d",&n); 
-     print(n); 
-     printf("---------结束打印符号---------\n");     
- } 
 
方法二:(两个for,根据条件判断实现)
- #include <stdio.h> 
- //输出格式 
- void print(char ch) { 
-     putchar(ch); 
- } 
- //星号 
- void printstar(int n) 
- { 
-     int i,j;    //行,列 
-     for(i=0; i<2*n-1; i++) 
-     { 
-         for(j=0; j<2*n-1; j++) 
-         { 
-             if(i<n) 
-             { 
-                 if(j>=n-i-1&&j<n+i) 
-                 { 
-                     print('*'); 
-                 } 
-                 else 
-                 { 
-                     print(' '); 
-                 } 
-             } 
-             else 
-             { 
-                 if(j>=i-n+1&&j<3*n-i-2) 
-                 { 
-                     print('*'); 
-                 } 
-                 else  
-                 { 
-                     print(' '); 
-                 } 
-             } 
-  
-         } 
-         print('\n'); 
-     } 
- } 
-  
- void main() 
- { 
-     int n; 
-     printf("---------开始打印符号---------\n"); 
-     printf("请输入数字:"); 
-     scanf("%d",&n); 
-     printstar(n); 
-     printf("---------结束打印符号---------\n");     
- } 
 
说明:(2n-1)—(n-i-1)= n+i
      (2n-1)— (-(n-i-1))= 3n-i-2
 
以18为例
 
