由键盘输入任意一个自然数 N ,输出如下图:形如“沙漏”的由数字组成的图形。

由键盘输入任意一个自然数 N ,输出如下图:形如“沙漏”的由数字组成的图形。

回答不易 求求您采纳点赞哦 感激不尽

用程序来构建如下图形,首先初始化一个N x N的字符数组,并将所有单元格设置为字符空格。接下来,从中心开始向四周绘制数字,以把所有的单元格都填满,形成如下图形。

#include <stdio.h>
 
int main(void) {
    int n;
    printf("Input N:\n");
    scanf("%d", &n);
 
    char arr[n][n];
    int i, j;
     
    for(i=0; i<n; i++) {
        for(j=0; j<n; j++) {
            arr[i][j] = ' ';
        }
    }
 
    int startRow = 0;
    int startCol = 0;
    int number = 1;
 
    while(number <= (2*n-1)) {
        if(number <= n) {
            for(i=startRow; i<(n-startCol); i++) {
                arr[i][startCol] = (char)(number + 48);
            }
             startCol++;
        }
        else {
            for(i=startCol; i<(n-startRow); i++) {
                arr[n-startRow-1][i] = (char)(number + 48);
            }
            startRow++;
        }
        number++;
    }
 
    for(i=0; i<n; i++) {
        for(j=0; j<n; j++) {
            printf("%c", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

以下是在 JavaScript 中实现的代码示例:


```javascript
function hourglass(n) {
  for (let i = 1; i <= n; i++) {
    let spaces = " ".repeat(n - i);
    let numbers = "".padStart(2 * i - 1, i);
    console.log(spaces + numbers + spaces);
  }

  for (let i = n - 1; i >= 1; i--) {
    let spaces = " ".repeat(n - i);
    let numbers = "".padStart(2 * i - 1, i);
    console.log(spaces + numbers + spaces);
  }
}

const N = 7;
hourglass(N);


上面的代码实现了输入自然数 N ,并输出形如沙漏的图形。

```