求一个C++的小程序。一百行左右,要求有注释。 100
4个回答
展开全部
帮别人解答的一个题目,供楼主选用
题目:
某图初始状态为一个三角形,此后每一时间步内都以上一时间步内新增加的边为一边再构造一个新的三角形(参见下图),请设计程序计算如此经历20步(t=20),此时图中有多少条边,多少个点。
答案:
楼主不要被题目给唬住了,其实这是一个简单的循环问题。关键是找到其中的算法。其实很简单,要一条边一条边来看:以三角形的一个边再构造一个三角形,显然已经具备了2个点和一个边,再增加一个点和2条边就是一个新的三角形。所以有:
1)初始条件:一个三角形,因此有3个点,3条边。然后根据边数来计算就可以了
2)循环第一次,3条边等于新增3个点,新增6条边。
3)循环第二次,新增的6条边,等于新增6个点,新增12条边。
4)循环第三次,新增的12条边,等于新增12个点,新增24条边。
这样循环计算20次就可以了,通过2个变量将点数和边数累计就行了。楼主这个不难吧!
三角形个数也好统计,改了下程序。
#include
<stdio.h>
#include
<string.h>
void
main()
{
long
i;
/*循环次数*/
long
b;
/*每次新增的边数*/
long
tp,tb;
/*累计的点数和变数*/
long
s;
/*三角形个数*/
tp=3;
/*最初一个三角形,有三个点*/
tb=3;
/*最初一个三角形,有三条边*/
b=3;
/*刚开始时,只有一个三角形,所以初始条件新增的边数为3*/
s=1;
/*刚开始,三角形个数为1*/
for
(i=1;i<20;i++){
/*这个还要解释吗*/
tp=tp+b;
/*每次循环,增加的点数与上一次循环新增的边数相等,累加*/
tb=tb+2*b;
/*每次循环,增加的边数是上一次循环新增边数的2倍,累加*/
s=s+b;
/*每次循环,上一次循环新增一条边,本次就会新画出一个三角形*/
b=2*b;
/*每次循环,新增的边数等于上一次循环新增边数的2倍,用于下一次循环计算点数和边数*/
}
printf("point=%ld;
line=%ld\n",tp,tb);
/*这个还要解释吗*/
}
题目:
某图初始状态为一个三角形,此后每一时间步内都以上一时间步内新增加的边为一边再构造一个新的三角形(参见下图),请设计程序计算如此经历20步(t=20),此时图中有多少条边,多少个点。
答案:
楼主不要被题目给唬住了,其实这是一个简单的循环问题。关键是找到其中的算法。其实很简单,要一条边一条边来看:以三角形的一个边再构造一个三角形,显然已经具备了2个点和一个边,再增加一个点和2条边就是一个新的三角形。所以有:
1)初始条件:一个三角形,因此有3个点,3条边。然后根据边数来计算就可以了
2)循环第一次,3条边等于新增3个点,新增6条边。
3)循环第二次,新增的6条边,等于新增6个点,新增12条边。
4)循环第三次,新增的12条边,等于新增12个点,新增24条边。
这样循环计算20次就可以了,通过2个变量将点数和边数累计就行了。楼主这个不难吧!
三角形个数也好统计,改了下程序。
#include
<stdio.h>
#include
<string.h>
void
main()
{
long
i;
/*循环次数*/
long
b;
/*每次新增的边数*/
long
tp,tb;
/*累计的点数和变数*/
long
s;
/*三角形个数*/
tp=3;
/*最初一个三角形,有三个点*/
tb=3;
/*最初一个三角形,有三条边*/
b=3;
/*刚开始时,只有一个三角形,所以初始条件新增的边数为3*/
s=1;
/*刚开始,三角形个数为1*/
for
(i=1;i<20;i++){
/*这个还要解释吗*/
tp=tp+b;
/*每次循环,增加的点数与上一次循环新增的边数相等,累加*/
tb=tb+2*b;
/*每次循环,增加的边数是上一次循环新增边数的2倍,累加*/
s=s+b;
/*每次循环,上一次循环新增一条边,本次就会新画出一个三角形*/
b=2*b;
/*每次循环,新增的边数等于上一次循环新增边数的2倍,用于下一次循环计算点数和边数*/
}
printf("point=%ld;
line=%ld\n",tp,tb);
/*这个还要解释吗*/
}
展开全部
收费,你还会要吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要什莫样的小程序?
追问
能用就行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询