回 帖 发 新 帖 刷新版面

主题:[讨论]考考高手们,这样的图形题目你会编程吗?

    5
   444
  33333
 2222222
111111111


    1
   121
  12321
 1234321
123454321

上面这两个图形怎么编程呢?是两道题目哦。

回复列表 (共30个回复)

沙发

用vs2008(c++)写了一个,在basic下思路也差不多,改改语法表达就行

#include "stdafx.h"
#include <iostream>
using namespace std;

void PrintNumA(int N)
{
    int col = 1;
    for(int i = N;i > 0;i--)
    {
        int space = i - 1;      //空格数
        int times = col * 2 -1; //每行输出的数字个数
        for(int k = 0;k < space;k++)
        {
            cout<<" ";          //输出前方空格
        }
        for(int j = 1;j <= times;j++)
        {
            cout<<i;            //输出每行数字
        }
        col++;
        cout<<endl;             //输出换行
    }
}

void PrintNumB(int N)
{
    for(int i = 1;i <= N;i++)
    {
        int space = N - i;//空格数
        for(int k = 0;k < space;k++)
        {
            cout<<" ";    //输出前方空格
        }
        for(int j = 1;j <= i;j++)
        {
            cout<<j;      //输出每行前方的数字
        }
        for(int m = i - 1;m > 0;m--)
        {
            cout<<m;      //输出每行后方的数字
        }
        cout<<endl;       //输出换行
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    PrintNumA(5);
    PrintNumB(5);
    system("pause");
    return 0;
}

板凳

谢谢楼上,这么及时的回复。可惜我是菜鸟不是很能看的懂。
主要的问题是在QB里数字是有符号位的,所以不会出现像题目中那样没有空隙的。这个怎么解决呢?

3 楼

楼上的高手还在吗?

4 楼

5
   444
  33333
 2222222
111111111


第一个图形

CLS
DIM space AS INTEGER
DIM l AS INTEGER
FOR i = 5 TO 1 STEP -1
   space = i * 3
  ' FOR j = 0 TO space
   PRINT TAB(space);
  ' NEXT j
 ' tab$(i)
   FOR k = 0 TO l
   PRINT i;
   NEXT k
   PRINT
   l = l + 2
NEXT i

5 楼

第二个自己写吧

6 楼

楼主
#include<stdio.h>
main()
{long int a=5,b=444,c=33333,d=2222222,e=111111111;
 printf("    %ld    \n   %ld   \n  %ld  \n %ld \n%ld\n",a,b,c,d,e);
 getch();
}


可以这样不。。 我晕我都不好意思写出来 高手们看了别笑,才学两星期,有高手肯教我更好啦,QQ=285693832,谢谢各位了

7 楼

print       4
           333
          22222
         1111111
sleep

8 楼

F

9 楼

第一个图形的答案
CLS
INPUT N
FOR I = 1 TO N
  PRINT TAB(N + 1 - I);
  FOR J = 1 TO 2 * I - 1
    PRINT USING "#"; N + 1 - I;
  NEXT J
  PRINT
NEXT I
END


第二个图形的答案
CLS
INPUT N
FOR I = 1 TO N
  PRINT TAB(N + 1 - I);
  FOR J = 1 TO 2 * I - 1
    IF I >= J THEN PRINT USING "#"; J;  ELSE PRINT USING "#"; 2 * I - J;
  NEXT J
  PRINT
NEXT I
END

10 楼

我是QBASIC的菜鸟,错了多多包涵
第二道
CLS
A$="12345"
N=5
FOR I=1 TO 5
 PRINT TAB(N);
 N=N-1
 FOR J=I TO 2 STEP-1
  PRINT MID$(A$,J,1);
 NEXT J
 PRINT LEFT$(A$,I)
NEXT I
END

我来回复

您尚未登录,请登录后再回复。点此登录或注册