标题:出事了, 怎么出不了棱形???
只看楼主
a935245228
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:45
专家分:56
注 册:2012-3-12
结帖率:83.33%
已结贴  问题点数:20 回复次数:9 
出事了, 怎么出不了棱形???
#include <stdio.h>
int  main(void)
{
    char str[]=("*************************************************");
    long row, half;
    int i, j;
    printf("输入行数:");
    scanf("%d", &row);
    if (row / 2 == 0)
    --row;
    half = row / 2;
    for (i = 1, j = 1; i <= half; ++i, ++j)
    printf("%*.*s\n", j + half, 2j -1, str);
    for (; i <= row; ++i, --j)
    printf("%*.*s", j + half, 2j - 1, str);
}
搜索更多相关主题的帖子: long include void 
2012-05-21 19:54
nongzhaobo
Rank: 3Rank: 3
来 自:广西南宁
等 级:论坛游侠
帖 子:59
专家分:155
注 册:2012-4-8
得分:2 
不好意思,我不熟悉C语言.....
2012-05-21 22:01
ln6265431
Rank: 5Rank: 5
等 级:职业侠客
帖 子:66
专家分:325
注 册:2012-3-29
得分:2 
printf("%*.*s\n", j + half, 2j -1, str);
这句是什么? 不能这样用吧,分成几个简单的表示吧……
2012-05-21 23:48
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:2 
#include <stdio.h>
void putstar(int n);
void putspace(int n);
int  main(void)
{
    int column,i,j,half_column;
    printf("input the columns:\n");
    scanf("%d",&column);
    printf("start:\n");
    if((column % 2)==0) column--;
    half_column=column/2+1;
    for(i=1;i<=column;i++)
    {
        //打印上半部分
        if(i<=half_column)
        {
        putspace(half_column-i);
        putstar(2*i-1);
        putspace(half_column-i);
        printf("\n");
        }
        //下半部分
        else
        {
        putspace((column-(4*half_column-2*i-1))/2);
        putstar(4*half_column-2*i-1);
        putspace((column-(4*half_column-2*i-1))/2);
        printf("\n");   
        }
    }
}

void putstar(int n)
{
    int i;
    for(i=0;i<n;i++) putchar('*');
    return;
}
void putspace(int n)
{
    int i;
    for(i=0;i<n;i++) putchar(' ');
    return;
}


效果如下:

input the columns:
5
start:
  *
 ***
*****
 ***
  *
paul@ubuntu:~/prog$ ./a.out
input the columns:
7
start:
   *  
  ***
 *****
*******
 *****
  ***
   *
显示有点问题,实际终端的是对称的


[ 本帖最后由 pauljames 于 2012-5-26 19:58 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-05-26 19:55
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
得分:2 
#include <stdio.h>
int main ()
{
    int g,a,b,c,d,i;
    c = 39;
    d = 1;
    while (true)
    {
    printf ("请输入菱形的高\n");
    scanf ("%d", &g);
    if ( g < 4)
        printf ("高大于3\n");
    else if ( g % 2 == 0)
        printf ("高不能为偶数。\n");
    else
    {
        for (i = 0; i < g/2;i++)
        {
            for (a = 0; a < c;a++)
            printf (" ");
            for (b = 0 ; b < d;b++)
                printf ("*");
            c--;
            d +=2;
            printf ("\n");
        }
        c++;
        d-=2;
         for (i = 0; i < g/2-1; i++)
        {
            c++;
            d -= 2;
            for (a = 0; a < c; a++)
                printf (" ");
            for (b = 0; b < d; b++)
                printf ("*");
            printf ("\n");
        }
    }
    }   
        return 0;
}
2012-05-26 21:00
twt141664
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2012-5-26
得分:2 
楼上厉害!
2012-05-26 21:21
lknight
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:37
专家分:187
注 册:2008-9-17
得分:2 
要是只看结果的话,这样比较好。。。
程序代码:
#include <stdio.h>

int main()
{
    printf("     *\n");
    printf("    ***\n");
    printf("   *****\n");
    printf("  *******\n");
    printf(" *********\n");
    printf("***********\n");
    printf(" *********\n");
    printf("  *******\n");
    printf("   *****\n");
    printf("    ***\n");
    printf("     *\n");
    return 0;
}
2012-05-27 11:11
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
得分:2 
瞧咱的:

#include <stdio.h>

int main(void)
{
    int i, j, n;
    printf("请输入一个数:");
    scanf("%d", &n);
    for(i=1;i<=n;i++){
        for(j=n-i;j>0;j--){
            printf(".");
        }
        if(i==1){
            printf("*");
        }
        else{
            for(j=2*i-1;j>0;j--){
                printf("*");
            }
        }
        printf("\n");
    }
    for(i=n-1;i>0;i--){
        for(j=n-i;j>0;j--){
            printf(".");
        }
        if(i==1){
            printf("*");
        }
        else{
            for(j=2*i-1;j>0;j--){
                printf("*");
            }
        }
        printf("\n");
    }
    return 0;
}
运行结果: 请输入一个数:6
.....*
....***
...*****
..*******
.*********
***********
.*********
..*******
...*****
....***
.....*
请按任意键继续. . .


Edsger Dijkstra:算法+数据结构=程序
2012-05-27 15:24
我是中国人民
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2012-5-27
得分:2 
我正在学C语言
2012-05-27 22:53
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
得分:2 
给你一个随便可以显示多大的,试试看
#include <stdio.h>
int main()
        int i,j,k,n,tmp;
        printf("请输入一个奇数:");
        scanf("%d",&n);
        tmp=(n+1)/2;
        for(i=1;i<=n;i++)
        {
                k=i;
                if(k>tmp)  k=i-2*(i-tmp);
                for(j=k;j<tmp;j++)  printf(" ");
                for(j=0;j<2*k-1;j++)  printf("*");
                printf("\n");
        }
}

[ 本帖最后由 hecate3835 于 2012-5-27 23:49 编辑 ]
2012-05-27 23:47



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




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

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