| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:求助菱形问题
只看楼主 加入收藏
liquan1989
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-1-18
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:10 
求助菱形问题
#include "stdio.h"
int main(void)
{
int i,j,n;
n=4;
for (i=1;i<=n;i++)
  {
   for(j=0;j<n-i;j++)
    printf(" ");
   for (j=1;j<=2*i-1;j++)
    printf("*");               
   printf("\n");            


                       
  }
for(i=n-1;i>=1;i--)
  {
   for(j=0;j<n-i;j++)
    printf(" ");
   for(j=1; j<=2*i-1;j++)
    printf("*");
   printf("\n");
  }
}
输出后为菱形
   for(j=0;j<n-i;j++)
    printf(" ");
输出空格 为什么第一次输出为4个空格 而不是没有空格呢··
j第一次运算后 不是为0吗
为什么会输出4个空格
求助下
搜索更多相关主题的帖子: 菱形 
2010-03-24 20:18
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
循环了多少次就打印了多少个空格或者*, 仔细看看控制循环的条件。。。。把相应的n,i,j带进去看看值是多少
2010-03-24 20:25
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
循环了多少次就打印了多少个空格或者*, 仔细看看控制循环的条件。。。。把相应的n,i,j带进去看看值是多少
2010-03-24 20:47
cedars
Rank: 2
等 级:论坛游民
帖 子:14
专家分:24
注 册:2008-12-4
收藏
得分:0 
#include<stdio.h>
void main()
{ int i,j;
  for(i=0;i<3;i++)
    {for(j=0;j<5-i;j++)
      printf(" ");
     for(j=0;j<1+2*i;j++)
      printf("*");
      printf("\n");
     }
   for(i=0;i<2;i++)
     {for(j=0;j<4+i;j++)
      printf(" ");
     for(j=0;j<3-2*i;j++)
      printf("*");
      printf("\n");
     }
     getch();
}
PS:是不是你的空格没空出来?比如""当成了" "

[ 本帖最后由 cedars 于 2010-3-24 22:01 编辑 ]
2010-03-24 22:00
langren2526
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-12
收藏
得分:10 
n=4;
for (i=1;i<=n;i++)
  {
   for(j=0;j<n-i;j++)   /*n=4 i=1, 4-1=3, j=0, 0到3使for(j=0; j<n-i; j++)执行四次,所以得到四个空格;
    printf(" ");                j=0并不等于现实生活中的什么也没有之类的意思,只是和后面的条件作比较用的*/
2010-03-24 22:06
langren2526
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-12
收藏
得分:5 
n=4;
for (i=1;i<=n;i++)
  {
   for(j=0;j<n-i;j++)   
     printf(" ");   

不好意思,没细看, for(j=0; j<n-i; j++) 输出的是三个空格, 要输出四个空格应该把j<n-i写成j<=n-i。
2010-03-24 22:33
jhylj
Rank: 2
等 级:论坛游民
帖 子:3
专家分:12
注 册:2010-3-23
收藏
得分:5 
for (i=1;i<=n;i++)
  {
   for(j=0;j<n-i;j++)
    printf(" ");//执行完这一句之后,j就加一,怎么还会是0呢?
   for (j=1;j<=2*i-1;j++)
    printf("*");               
   printf("\n");            


                       
  }
这是一个大循环里面嵌套一个小循环吗?

学无止境!
2010-03-24 22:40
invention
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-3-23
收藏
得分:0 
回复 楼主 liquan1989
void printf_rhombus_2(int rhombus_len)
{
    char *p_space;
    p_space = new char[2*rhombus_len];
    char *p_char;
    p_char = new char[2*rhombus_len];
    unsigned int space_len,char_len,i;

    char_len=2*rhombus_len-1;

    for(i=0;i<char_len;i++)
    {
        p_char[i]='*';
    }
    p_char[char_len]='\0';
    //std::cout<<"p_char:"<<p_char<<std::endl;
    //std::cout<<"p_char:"<<p_char+3<<std::endl;


    space_len=rhombus_len-1;
    for(i=0;i<space_len;i++)
    {
        p_space[i]=' ';
    }
    p_space[space_len]='\0';
    //std::cout<<"p_space:"<<p_space<<std::endl;
    //std::cout<<"p_space:"<<p_space+3<<std::endl;

    std::cout<<"---------------------------------------"<<std::endl;

    for(i=0;i<char_len;i++)
    {
        std::cout<<(p_space+(space_len-abs(space_len-i)));
        std::cout<<(p_char+(abs(char_len-(2*i+1))))<<std::endl;
    }

    std::cout<<"---------------------------------------"<<std::endl;

    delete [] p_char;
    delete [] p_space;

    std::cout<<"end"<<std::endl;
}
2010-03-24 23:12
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:0 
动不到手
2010-03-25 07:36
鶄鵅
Rank: 2
来 自:广东潮州
等 级:论坛游民
帖 子:40
专家分:17
注 册:2010-4-5
收藏
得分:0 
提示: 该帖被管理员或版主屏蔽

http://wzqinyes.blog./
  鶄 鵅 在 人 间 !
2010-04-05 17:09
快速回复:求助菱形问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027127 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved