输入数字,打印菱形。
这是一道编程题,更是一道数学题。平常会以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为例