html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

c语言如何输出菱形_编程语言综合

[ ] 已经帮助:人解决问题

 适有同学问起一些C语言题目,本想上网搜索了事,但网上的方法都是分为上下部分用两个嵌套for循环输出。我想有没有合起来输出的呢,这样符合简洁又美观的要求呢?答案是有的。VF2HTML5中文学习网 - HTML5先行者学习网

题目:输出行列都相等的菱形,如5行5列:VF2HTML5中文学习网 - HTML5先行者学习网

行列 12345VF2HTML5中文学习网 - HTML5先行者学习网

1      *VF2HTML5中文学习网 - HTML5先行者学习网

2     ***VF2HTML5中文学习网 - HTML5先行者学习网

3    *****VF2HTML5中文学习网 - HTML5先行者学习网

4     ***VF2HTML5中文学习网 - HTML5先行者学习网

5      *VF2HTML5中文学习网 - HTML5先行者学习网

  1.  

    分析:VF2HTML5中文学习网 - HTML5先行者学习网

    当行数等于总行数的一半时,'*'是递增的,递增为2。VF2HTML5中文学习网 - HTML5先行者学习网

    当行数大于总行数的一半时,'*'是递减的,递增为2。VF2HTML5中文学习网 - HTML5先行者学习网

     VF2HTML5中文学习网 - HTML5先行者学习网

    设有一个行列为n的菱形,VF2HTML5中文学习网 - HTML5先行者学习网

    我们用变量i作为行数,以0开始,i<n。VF2HTML5中文学习网 - HTML5先行者学习网

    k作为n菱第i行要输出的'*'个数。VF2HTML5中文学习网 - HTML5先行者学习网

     VF2HTML5中文学习网 - HTML5先行者学习网

    则i<=n的中值(用m表示,m=(n-1)/2)时,k递增,i>m时,k递减。VF2HTML5中文学习网 - HTML5先行者学习网

    因为k相对于m行对称,所以:VF2HTML5中文学习网 - HTML5先行者学习网

    当i>m时,i每增加i-m时的k值就和第m-i行的k值相等,即第i-m行和第m-(i-m)相对称。VF2HTML5中文学习网 - HTML5先行者学习网

    所以得出结果:VF2HTML5中文学习网 - HTML5先行者学习网

    当i<=m时,k=2i+1VF2HTML5中文学习网 - HTML5先行者学习网

    当i>m时,k=2(m-(i-m))+1,(m=(n-1)/2)。即k=2n-2i-1VF2HTML5中文学习网 - HTML5先行者学习网

     VF2HTML5中文学习网 - HTML5先行者学习网

    由于我们只需要输出'*'左边的空格即可,所以每行'*'左边的空格的个数为:(n-每行的k)/2。VF2HTML5中文学习网 - HTML5先行者学习网

    每行循环输出空格,再循环输出每行的'*',再输出回车,结束一行。VF2HTML5中文学习网 - HTML5先行者学习网

     VF2HTML5中文学习网 - HTML5先行者学习网

    这样我们就可以开始编程了。VF2HTML5中文学习网 - HTML5先行者学习网

  2.  

    #include<stdio.h>VF2HTML5中文学习网 - HTML5先行者学习网

    int main()VF2HTML5中文学习网 - HTML5先行者学习网

    {VF2HTML5中文学习网 - HTML5先行者学习网

     int i,j,k,n;//定义四个变量:i是行,j每行*号前的空格数,k每行的*号数VF2HTML5中文学习网 - HTML5先行者学习网

     printf("please input odd n:");VF2HTML5中文学习网 - HTML5先行者学习网

     scanf("%d",&n);  //输入奇数nVF2HTML5中文学习网 - HTML5先行者学习网

     for (i=0;i<n;i++)  //循环所有行VF2HTML5中文学习网 - HTML5先行者学习网

     {VF2HTML5中文学习网 - HTML5先行者学习网

      if(n>=2*i+1)  //判断k值VF2HTML5中文学习网 - HTML5先行者学习网

        k=2*i+1;VF2HTML5中文学习网 - HTML5先行者学习网

      elseVF2HTML5中文学习网 - HTML5先行者学习网

        k=2*n-2*i-1;VF2HTML5中文学习网 - HTML5先行者学习网

      for(j=(n-k)/2;j>0;j--)  //循环输出空格VF2HTML5中文学习网 - HTML5先行者学习网

        printf(" ");VF2HTML5中文学习网 - HTML5先行者学习网

      for(;k>0;k--)  //循环输出*号VF2HTML5中文学习网 - HTML5先行者学习网

        printf("*");VF2HTML5中文学习网 - HTML5先行者学习网

      printf("n");  //输出回车结束一行VF2HTML5中文学习网 - HTML5先行者学习网

    }VF2HTML5中文学习网 - HTML5先行者学习网

     VF2HTML5中文学习网 - HTML5先行者学习网

  3.  

    本来呢题目就到止结束了,但上面的程序还不够完美VF2HTML5中文学习网 - HTML5先行者学习网

    比如说,别人输入n值为偶数怎么办?输入非数值呢?VF2HTML5中文学习网 - HTML5先行者学习网

    我们加一点东西进去:VF2HTML5中文学习网 - HTML5先行者学习网

    #include<stdio.h>VF2HTML5中文学习网 - HTML5先行者学习网

     VF2HTML5中文学习网 - HTML5先行者学习网

    int main()VF2HTML5中文学习网 - HTML5先行者学习网

    {VF2HTML5中文学习网 - HTML5先行者学习网

    int i,j,k,n=0;  //这里给n赋初值,即使输入非数值,n也可有确切的值。VF2HTML5中文学习网 - HTML5先行者学习网

    do{             //增加一个大循环,可以令n可以输入多次以观察不同的结果。VF2HTML5中文学习网 - HTML5先行者学习网

    printf("please input odd n, 0 to exit:");//当输入0的时候,退出大循环,结束程序。VF2HTML5中文学习网 - HTML5先行者学习网

    scanf("%d",&n);VF2HTML5中文学习网 - HTML5先行者学习网

    if (!(n%2))     //增加对输入偶数的判断。VF2HTML5中文学习网 - HTML5先行者学习网

    {VF2HTML5中文学习网 - HTML5先行者学习网

    printf("you input a even, please input again.n");VF2HTML5中文学习网 - HTML5先行者学习网

    continue;VF2HTML5中文学习网 - HTML5先行者学习网

    }VF2HTML5中文学习网 - HTML5先行者学习网

    for (i=0;i<n;i++)VF2HTML5中文学习网 - HTML5先行者学习网

    {VF2HTML5中文学习网 - HTML5先行者学习网

    if(n>=2*i+1)VF2HTML5中文学习网 - HTML5先行者学习网

    k=2*i+1;VF2HTML5中文学习网 - HTML5先行者学习网

    elseVF2HTML5中文学习网 - HTML5先行者学习网

    k=2*n-2*i-1;VF2HTML5中文学习网 - HTML5先行者学习网

    j=(n-k)/2;VF2HTML5中文学习网 - HTML5先行者学习网

    for(;j>0;j--)VF2HTML5中文学习网 - HTML5先行者学习网

    printf(" ");VF2HTML5中文学习网 - HTML5先行者学习网

    for(;k>0;k--)VF2HTML5中文学习网 - HTML5先行者学习网

    printf("*");VF2HTML5中文学习网 - HTML5先行者学习网

    printf("n");VF2HTML5中文学习网 - HTML5先行者学习网

    }VF2HTML5中文学习网 - HTML5先行者学习网

    }while(n);VF2HTML5中文学习网 - HTML5先行者学习网

    return 0;VF2HTML5中文学习网 - HTML5先行者学习网

    }VF2HTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助