- 论坛徽章:
- 0
|
很早就知道,在这个论坛混的大侠们,都是牛人。
所以小弟不敢造次。
遇到一个问题,想不通,请大侠们解答一下
要求:
2、编写函数diamond打印一个菱形。如果调用diamond(3, '*'),则打印:
*
* * *
*
如果调用diamond(5, '+'),则打印:
+
+ + +
+ + + + +
+ + +
+
如果用偶数做参数则打印错误信息。
------------------------------------------------------------------------------------------
以下为我自己编写的,wintc调试已通过。
开始时我在函数中,声明处,定义了 i 的初值为1
但后来想试一下,不给 i 赋值会如何
结果仍然通过了,不解?
我已把问题写在注释处了,请各位指点一下!!
还有就是,程序写得有点乱,几乎没有算法思想,见笑了!
程序:
#include <stdio.h>
int diamond(int n,char c);
int diamond(int n,char c)
{
int i,j,k;
if(n%2!=0)
{
for(k=n;k>=0;k--)
{
for(i=1;i<=k;i++) //此处,i 被初始化为1
printf("\t" ;
for(j=2*i-1;j<=n;j++) // 那么在这个循环中,i 的值是多少?
printf("%c\t",c);
printf("\n" ;
}
for(k=1;k<=n-2;k++)
{
for(i=k;i>=1;i--)
printf("\t" ;
for(j=n-2*k;j>0;j--)
printf("%c\t",c);
printf("\n" ;
}
}
else
printf("ERROR!" ;
}
int main(void)
{
int n;
char c;
printf(" lease Input One Num and One Char [ex:5,*] :" ;
scanf("%d,%c",&n,&c);
diamond(n,c);
getch();
return 0;
}
[ 本帖最后由 daidai0628 于 2009-2-4 14:18 编辑 ] |
|