免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1559 | 回复: 5
打印 上一主题 下一主题

[C] 请教C中变量值的问题,小弟是菜鸟 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-04 14:15 |只看该作者 |倒序浏览
很早就知道,在这个论坛混的大侠们,都是牛人。
所以小弟不敢造次。

遇到一个问题,想不通,请大侠们解答一下

要求:

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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-02-04 14:19 |只看该作者
请把你的代码放在 [code]  [/code]之间


对于你的问题,建议你在不清楚i的值的地方,打印一下i,你就知道是多少了

论坛徽章:
0
3 [报告]
发表于 2009-02-04 14:21 |只看该作者
打印出来是多少就是多少,

事实胜于雄辩

臆想不如实践

论坛徽章:
0
4 [报告]
发表于 2009-02-04 14:26 |只看该作者
原帖由 daidai0628 于 2009-2-3 22:15 发表
很早就知道,在这个论坛混的大侠们,都是牛人。
所以小弟不敢造次。

遇到一个问题,想不通,请大侠们解答一下

要求:

2、编写函数diamond打印一个菱形。如果调用diamond(3, '*'),则打印:
         ...


k+1

论坛徽章:
0
5 [报告]
发表于 2009-02-04 15:16 |只看该作者
此题能用abs函数吗,要是能用的话算法上就简单得多了

  1. int  i,j;
  2.         int  m = n / 2;
  3.         for(i = -m;i <= m;i++)
  4.         {
  5.                 for(j = 1;j<=n - 2 * abs(i); j++)
  6.                         printf("%c",c);
  7.                 printf("\n");
  8.         }
复制代码

论坛徽章:
0
6 [报告]
发表于 2009-02-04 15:49 |只看该作者
牛人永远都是牛人,谢谢各位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP