标题:怎样改,才能打出菱形来啊。
只看楼主
xiao92010
Rank: 2
来 自:江西,赣州
等 级:论坛游民
帖 子:16
专家分:17
注 册:2010-8-5
结帖率:100%
已结贴  问题点数:0 回复次数:9 
怎样改,才能打出菱形来啊。
#include "stdio.h"
void main()
{
    int i,j,k,x,y;
   
    for(i=1;i<=20;i++)
    {
        if(i<=10)
        {
            for(j=1;j<=20-i;j++)
            {
                printf(" ");
            }
            for(k=1;k<2*i;k++)
            {
                printf("*");
            }
        }
        if(i>10)
        {
            for(x=1;x<=i;x++)
            {
                printf(" ");
            }
            for(y=1;y<=20-2*i;y++)
            {
                printf("*");
            }
        }
        printf("\n");
    }
   
   
   
}


最好把空心的也教一下我啊,,谢谢。。
搜索更多相关主题的帖子: 菱形 
2010-08-19 21:30
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
得分:20 
#include "stdio.h"
void main()
{
    int i,j,k,x,y;
   
    for(i=1;i<=20;i++)
    {
        if(i<=10)
        {
            for(j=1;j<=20-i;j++)
            {
                printf(" ");
            }
            for(k=1;k<2*i;k++)
            {
                printf("*");
            }
        }
        if(i>10)
        {
            for(x=1;x<=i;x++)
            {
                printf(" ");
            }
            for(y=1;y<=20-2*i;y++)   //逻辑错误
            {
                printf("*");
            }
        }
        printf("\n");
    }
   
正确如下
#include "stdio.h"
void main()
{
    int i,j,k,x,y;
   
    for(i=1;i<=20;i++)
    {
        if(i<=10)
        {
            for(j=1;j<=20-i;j++)
            {
                printf(" ");
            }
            for(k=1;k<2*i;k++)
            {
                printf("*");
            }
        
        }
        else if(i>10)
        {
            for(x=1;x<=i;x++)
            {
                printf(" ");
            }
            for(y=1;y<=2*(20-i);y++)    //改成这样
            {
                printf("*");
            }
            
        }
        printf("\n");
        
    }
   
   
   
}
2010-08-19 23:28
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
你去 C 区搜一下“菱形”这个关键字,相关的帖子多的是。这是入门的循环题,讨论过很多了。
2010-08-19 23:32
xishui777
Rank: 2
等 级:论坛游民
帖 子:53
专家分:94
注 册:2010-8-17
得分:0 
这个问题太简单了
2010-08-21 00:59
holychild
Rank: 2
等 级:论坛游民
帖 子:21
专家分:31
注 册:2010-8-22
得分:0 
楼主给的这个代码是三角形啊
2010-08-22 17:50
holychild
Rank: 2
等 级:论坛游民
帖 子:21
专家分:31
注 册:2010-8-22
得分:0 
#include<stdio.h>
void main()
{
    int i,j,x,y,k,h,num; // num是行数, h是右移距离
    char change;
   
    for(;;)
    {
        printf("请依次输入菱形的行数、右移距离.注意行数一般为奇数,偶数自动加一行:\n");
        scanf("%d%d",&num,&h);
        printf("是否为空心y or n:\t");
        fflush(stdin);
        scanf("%c",&change);
        if(num+h>79||num<=1||change!='y'&&change!='n')
            printf("输入有误!![行数+右移距离不能大于79,只识别y/n]请重新输入!\n");
        else break;
    }
   
    x=num/2+1;
    y=num/2;   
   
    for(i=0;i<=x-1;i++)
    {
        
        for(j=1;j<=x-1-i+h;j++)
        {
            printf(" ");
        }
        if(change=='y')
        {
            printf("*");
            for(k=3;k<=2*i+1;k++)
            {
                printf(" ");
            }
            if(i!=0)
                printf("*\n");
            else
                printf("\n");
        }
        if(change=='n')
        {
            for(k=1;k<=2*i+1;k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
   
    for(i=0;i<=y-1;i++)
    {
        
        for(j=0;j<=i+h;j++)
        {
            printf(" ");
        }
        if(change=='y')
        {
            printf("*");
            for(k=3;k<=2*(y-1)+1-2*i;k++)
            {
                printf(" ");
            }
            if(i!=y-1)
                printf("*\n");
            else
                printf("\n");
        }
        if(change=='n')
        {
            for(k=1;k<=2*(y-1)+1-2*i;k++)
            {
                printf("*");
            }
            printf("\n");
        }
    }
   
}

这个既能够打印实心菱形,还能够打印空心菱形,能够自选行数和右移距离(以中间那行为准)。编译过,正确的。
2010-08-22 18:44
holychild
Rank: 2
等 级:论坛游民
帖 子:21
专家分:31
注 册:2010-8-22
得分:0 
回复 2楼 carmeloyin
你这样的打印出来的不是标准菱形啊。上下都不对称啊!
2010-08-24 18:59
holychild
Rank: 2
等 级:论坛游民
帖 子:21
专家分:31
注 册:2010-8-22
得分:0 
回复 2楼 carmeloyin
菱形的右下方多了一斜行下来啊。
2010-08-24 19:00
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
得分:0 
额··没有注意
那再-1吧
就可以了
 for(y=1;y<=2*(20-i)-1;y++)
2010-08-24 20:16
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
温暖
2010-08-25 01:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-316267-1-1.html




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

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