輸入數字,打印菱形。
這是一道編程題,更是一道數學題。平常會以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為例
