首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言的程序的小疑点

2013-11-21 
c语言的程序的小问题我有一点小问题想请教一下,希望各位可以帮忙解答一下,非常感谢。有关于图案的小问题在

c语言的程序的小问题
我有一点小问题想请教一下,希望各位可以帮忙解答一下,非常感谢。
有关于图案的小问题在排列时应怎样思考程序设计。
例:编程打印出一下数字金字塔图案。
                      1
                1  2  1
              1 2  3  2  1
            1 2 3  4  3  2   1
帮忙解答一下。请说明一下为什么, 非常感谢!!!
[解决办法]


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    int i;
    int j;
    int k;
    scanf("%d",&num);//输入几层

    for(i = 1 ; i < num+1 ;i++)
       for(j = i ; j < num+1 ;j++){

            if(j == num ){
                for(k = 1 ;k < i + 1 ;k++)
                  printf("%d",k);
                for(k = i -1  ; k >= 1; k--)
                  printf("%d",k);

                  printf("\n");
            }
           //输出数字
            else
                printf(" ");//判断要输入几层 要输出几个空格在开头
       }
    return 0;
}


[解决办法]
当输入的数 代表的是俩位数 甚至更多 想要对齐的话 需要进一步处理
判断数的位数 特殊处理
[解决办法]
前几天好像有人问过一模一样的题……
[解决办法]

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int   i, j;
    int   n = 5;

    for (i = 1; i < n + 1; i++) {           // 控制层数
        for (j = 0; j < (n - i) * 2 ; j++)  // 打印前导空格
            printf(" ", j);
        for (j = 1; j <= i; j++)            // 打印每一层前半部分的数字
            printf("%d ", j);
        for (j = j - 2; j >= 1; j--)        // 打印每一层后半部分的数字
            printf("%d ", j);
        printf("\n");
    }
    return 0;
}

输出结果:
        1
      1 2 1
    1 2 3 2 1
  1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1

[解决办法]
先找到数学规律,再写代码实现

热点排行