| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1087 人关注过本帖
标题:c语言小题,求最简洁高效算法
只看楼主 加入收藏
xueyuhanhai
Rank: 4
等 级:业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
收藏
得分:0 
六楼的此处错误啊。
if(mid-(k-i)==j||j==mid+(k-i))
 
if(mid-(i-1)==j||j==mid+(i-1))
其他的没有问题啊。高手啊。能这么轻松做出来,不容易啊。
2010-05-07 18:08
编程菜鸟as
Rank: 1
来 自:嘉兴
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-7
收藏
得分:0 
回复 楼主 itma
我回复了

[color=red]我是小菜鸟!
2010-05-07 19:09
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:5 
闲着写了个,简洁,但不高效:

程序代码:
#include<stdio.h>
#include<stdlib.h>
#define N 30

int main(void)
{
    unsigned n;
    int i,j,k;

    while((scanf("%d",&n))==1)
    {
        if(n%2==0||n>N)
        {
            continue;
        }
        k=(int)(n/2);
        for(i=-k;i<=k;++i)
        {
            for(j=-k;j<=k;++j)
            {
                printf("%c",abs(i)+abs(j)==k?'*':' ');
            }
            puts("");
        }
    }

    return 0;
}
2010-05-07 19:20
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
收藏
得分:0 
#include<stdio.h>
#include<math.h>
main()
{
    int n,j,i,z;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        if(i<=n/2+1)
        j=2*i-1;
        else
        j=n-(i-n/2-1)*2;
        for(z=1;z<=abs(n/2-i+1);z++)printf(" ");
        for(z=1;z<=j;z++)
            if(z==1||z==j)printf("*");
            else printf(" ");
            printf("\n");
    }
}

楼主看看。。。。

[ 本帖最后由 kinwyb 于 2010-5-7 20:50 编辑 ]

学习c语言痛苦!!但是要坚持~~
2010-05-07 20:46
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
收藏
得分:7 
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    int n,j,i,z;
    scanf("%d",&n);
    if(n%2==1)
        for(i=1;i<=n;i++)
        {
            if(i<=n/2+1)
            j=2*i-1;
            else
            j=n-(i-n/2-1)*2;
            for(z=1;z<=abs(n/2-i+1);z++)printf(" ");
            for(z=1;z<=j;z++)
                if(z==1||z==j)printf("*");
                else printf(" ");
                printf("\n");
        }
       else
           printf("error\n");   
}
加上奇数的判断。。。

学习c语言痛苦!!但是要坚持~~
2010-05-07 21:01
☆白开水
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-4-15
收藏
得分:4 
# include <stdio.h>
 void main ()
{
 int i,j,x;
 char a=32,b=42;
 printf ("please input a odd number.\n");
 scanf ("%d",&x);
 for (i=1;i<2*x;i++)
  {
    printf("\n");
   if (i%2==0) printf ("\n");
   else {
     for(j=1;j<2*x;j++)
      {
      if (i<x+1)
        {
         if (x-i+1==j ||j==x+i-1) j%2==0?putchar(a):putchar(b);
         else putchar(a);
         }
      else
          {
           if (i-x+1==j||j==x+2*x-i-1) j%2==0?putchar(a):putchar(b);
           else putchar(a);
           }
       }
      }
  }
  printf("\n");
}
2010-05-07 22:27
itma
Rank: 4
等 级:业余侠客
帖 子:105
专家分:266
注 册:2010-2-8
收藏
得分:0 
我自己也写了一个。。
程序代码:
#include"stdio.h"
#include"math.h"
main()
{
    int i,j,n;
    printf("请输入n的值:");
    scanf("%d",&n);
    if(n%2!=0){
        for(i=-(n-1)/2;i<=(n-1)/2;i++)
        {
            for(j=-(n-1)/2;j<=(n-1)/2;j++)
                if(abs(i)+abs(j)==(n-1)/2) printf("*");
                else printf(" ");
                printf("\n");
        }
    }else{
        printf("请输入奇数");
    }
}

 
2010-05-08 12:13
itma
Rank: 4
等 级:业余侠客
帖 子:105
专家分:266
注 册:2010-2-8
收藏
得分:0 
以下是引用让最段细在2010-5-7 15:54:37的发言:

可以用数组解吧,那个会不会方便点
你来试试吧
2010-05-08 12:46
itma
Rank: 4
等 级:业余侠客
帖 子:105
专家分:266
注 册:2010-2-8
收藏
得分:0 
以下是引用编程菜鸟as在2010-5-7 19:09:41的发言:

我回复了
???在哪?
2010-05-08 12:47
快速回复:c语言小题,求最简洁高效算法
数据加载中...
 
   



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

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