newguy 发表于 2010-4-15 14:29

关于C语言的请教

本帖最后由 iptton 于 2010-4-15 17:12 编辑

我是刚开始学C语言的~~这里是有一道题是要求输出
      *
    ***
*****
*******
*****
    ***
      *
这个图案~~下面是我自己写的一个代码~~可能不严谨兼垃圾吧~~大家别急着扔砖头~~给我说说哪里出错了~~或者提供我一个更好的代码~~谢谢大家
#include<stdio.h>
#include<math.h>
void main()
{
    int line,seat_1,seat_2,k,j;
    for(line=1;line<=7;line++)
    {
      k=abs((line-4)*(line-4));
      j=7-2*k;
      for(seat_1=1;seat_1<=k;seat_1++) printf("");
      for(seat_2=1;seat_2<=j;seat_1++) printf("*");
      printf("\n");
    }
}

iptton 发表于 2010-4-15 17:11

算是计算题吧?计算下规律就可以算对了。。
#include<stdio.h>
#include<math.h>

void printStart(int line);
void main()
{
    printStart(7);
}
void printStart(int line){
        int mid=line/2+1;
        int numOfStar,numOfSpace;
        for(int i=0;i<line;++i){
                if(i<mid){
                        numOfSpace=mid-i-1;
                        numOfStar=i*2+1;
                }else{
                        numOfSpace=i-mid+1;
                        numOfStar=(line-i)*2-1;
                }
                for(int j=0;j<numOfSpace;++j)printf(" ");
                for(int k=0;k<numOfStar;++k)printf("*");
                printf("\n");
        }
}

iptton 发表于 2010-4-15 17:16

本帖最后由 iptton 于 2010-4-17 07:51 编辑

刚好今天有空,计算一下...orz
#include<stdio.h>
#include<math.h>

void printStar(int line);
void main()
{
    printStart(7);
}
void printStar(int line){
        int mid=line/2;
        int numOfStar,numOfSpace;
        for(int i=0;i<line;++i){
                numOfSpace=abs(mid-i);
                numOfStar=line-abs((mid-i)*2);
                for(int j=0;j<numOfSpace;++j)printf(" ");
                for(int k=0;k<numOfStar;++k)printf("*");
                printf("\n");
        }
}

newguy 发表于 2010-4-15 19:08

谢谢楼上的~~我先研究研究``

尚观小熊 发表于 2010-12-28 17:08

哇。看起来就很复杂。。我才开始学习C语言。。好好请教最近听说有个免费的讲座时介绍Linux知识的,他们邀请了著名的Linux讲师分析嵌入式知识。可以去听下哦。。是免费的在广州市越秀区东风西路140号东方金融大厦610。。大家好好加油啦
页: [1]
查看完整版本: 关于C语言的请教