
#include <stdioh>
#include <graphicsh>
int main()
{
int i,j,gdriver,gmode,size;
void buf;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"d:\\tc2\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1,10);
circle(31,200,30);
floodfill(31,200,12);
size=imagesize(0,169,62,231);
buf=malloc(size);
getimage(0,169,62,231,buf);
putimage(500,269,buf,COPY_PUT);
putimage(320,170,buf,COPY_PUT);
while(1)
{
for(j=0;j<4;j++)
for(i=0;i<260;i++)
{
if(kbhit()) {closegraph();exit(0);}
switch(j)
{
case 0:
putimage(i,170,buf,COPY_PUT);
break;
case 1:
putimage(321+i,170,buf,COPY_PUT);
break;
case 2:
putimage(581-i,170,buf,COPY_PUT);
break;
case 3:
putimage(260-i,170,buf,COPY_PUT);
break;
}
}
}
}
方法如下:
1)算出最多要用多少箱子,如要放入13只球,就要分别放在4只盒子里
(如下程序算法)
2)假设这几只箱子里的球都是它的编号个数,如第只盒子里放1个球,第7只盒子里放7个球,算出总和,如要放5只盒子,就假设放:
1+2+3+4+5=15只球,再用15-(真正要放入球的个数)13=2,得到2,就倒过来,把第4只盒子加1,再把第3只盒子加1,这样球就用完了,得到1,3,4,5
3)输出
-----------------------------------------------------------
1)
DIM a(8)
INPUT k
FOR i = 1 TO k
a(i) = i + 1
s = s + a(i)
v = v + 1
IF s >= k THEN EXIT FOR
NEXT i
s = 0
2)
FOR i = 1 TO v
a(i) = i
s = s + a(i)
NEXT i
x = ABS(s - k)
i = v
FOR j = 1 TO x
a(i) = a(i) + 1
i = i - 1
NEXT j
3)
FOR i = 1 TO v
PRINT a(i);
NEXT i
-----------------------------------------------------------
总结归纳最后程序清单:
CLS
DIM a(8)
INPUT k
FOR i = 1 TO k
a(i) = i + 1
s = s + a(i)
v = v + 1
IF s >= k THEN EXIT FOR
NEXT i
s = 0
FOR i = 1 TO v
a(i) = i
s = s + a(i)
NEXT i
x = ABS(s - k)
i = v
FOR j = 1 TO x
a(i) = a(i) + 1
i = i - 1
NEXT j
FOR i = 1 TO v
PRINT a(i);
NEXT i
-----------------------------------------------------------
如:
输入
9
输出
2 3 4
输入
13
输出
1 3 4 5
输入
30
输出
1 2 3 4 5 7 8
-----------------------------------------------------------
回答你,“EXIT FOR”是退出循环的意思。
懂了没,以后你可以经常问我。
"EXIT FOR"是提前结束循环的意思,和后面的NEXT没有冲突
以上就是关于如何用c语言编写一个三个小球碰撞的程序啊全部的内容,包括:如何用c语言编写一个三个小球碰撞的程序啊、QBasic编程题:装球,设8个盒子,分别编1,2……同时13个小球进将13个小球装盒中去。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)