济南有回收手表的吗:关于一个菱形的输出

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/09 03:17:45
我有一个c语言的题目不会做,自己写了写,但是错了,高手指点一下!
题目为:
一个菱形,共有N行,输入N,使菱形为N行。
如:输入N=5,则图形为:
*
***
*****
***
*
输入N=7,则图形为:
*
***
*****
*******
*****
***
*
ps:N为奇数。

我自己写了一个:但是第11行老是出错,自己看不懂,哪个指出一下,谢谢了!
#include <stdio.h>
main()
{int i,j,a,c,d,n;
printf("Please input a odd:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{if(i<=n/2+1)
{for(a=(n/2+1)-i;a>0;a--)
putchar(' ');
for(j=1;j<=2i-1;j++)
putchar('*');
putchar('\n');
}
else
{for(c=1;c<=i-1-n/2;c++)
putchar(' ');
for(d=1;d<=j;j--)
putchar('*');
putchar('\n');
}
}
}
我希望帮我指出一下,我自己写的第11行为什么出错了!!谢谢!!

我可以只用一个for循环输出出来,这个是效率最高的方法
方法很多的,要学就要想最bt的,不能应付作业哦,我给出的是<29的情况,可以自己动脑筋扩展一下看看 hoho~~~~

#include <stdio.h>
main(void)
{
int i,n_input;
printf("Please input a odd:");
scanf("%d",&n_input);

for(i=0; i<n_input; i++)
{
char str[30], blank =' ' ;
int n = i;
strcpy(str,"****************************");
if(i > n_input/2)n = n_input-i-1;
printf("%*c",n_input/2-n+2,blank);
printf("%*.*s\n",n+1,2*n+1,str);
}
}

#include "stdio.h"
void main()
{
int i,j,n;
printf("请输入菱形半径:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
printf(" ");
}
for(j=0;j<2*i+1;j++)
{
printf("*");
}
printf("\n");
}

for(i=0;i<n-1;i++)
{
for(j=0;j<i+1;j++)
{
printf(" ");
}
for(j=0;j<2*(n-1)-(2*i+1);j++)
{
printf("*");
}
printf("\n");
}
}

C中*不可省的。
应写成2*i-1.