主题:[讨论]考考高手们,这样的图形题目你会编程吗?
wh030109035
[专家分:0] 发布于 2010-03-30 08:56:00
5
444
33333
2222222
111111111
1
121
12321
1234321
123454321
上面这两个图形怎么编程呢?是两道题目哦。
最后更新于:2010-03-30 10:07:00
回复列表 (共30个回复)
沙发
rtygbwwwerr [专家分:910] 发布于 2010-03-30 10:15:00
用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;
}
板凳
wh030109035 [专家分:0] 发布于 2010-03-30 12:09:00
谢谢楼上,这么及时的回复。可惜我是菜鸟不是很能看的懂。
主要的问题是在QB里数字是有符号位的,所以不会出现像题目中那样没有空隙的。这个怎么解决呢?
3 楼
wh030109035 [专家分:0] 发布于 2010-03-31 08:23:00
楼上的高手还在吗?
4 楼
liudan319 [专家分:3780] 发布于 2010-03-31 16:16:00
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 楼
liudan319 [专家分:3780] 发布于 2010-03-31 16:19:00
第二个自己写吧
6 楼
转基因蚊子 [专家分:0] 发布于 2010-03-31 21:45:00
楼主
#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 楼
net56789 [专家分:210] 发布于 2010-04-16 22:09:00
print 4
333
22222
1111111
sleep
8 楼
WZJTFK [专家分:0] 发布于 2010-04-19 20:00:00
F
9 楼
njbkw [专家分:30] 发布于 2010-04-28 22:36:00
第一个图形的答案
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 楼
小心哦哦 [专家分:140] 发布于 2010-06-01 16:46:00
我是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
我来回复