c語言自由落體
❶ 求一個c語言小球自由落體的代碼,要求超過100行
#include<stdio.h>
intmain(){
intcurve[31][37]={0};//圖像保存在30*36矩陣內
doubleA,AM=30;//第一周期幅值
doublek=0.18;//幅值遞減率
inti,x,y;
for(i=0;i<4;++i){//共畫出4個周期
A=(1-i*k)*AM;
for(x=0;x<9;++x){//每個周期用9個點描畫
y=-(int)(x*A*(x-8)/16.0);
curve[y][x+i*8]=1;
}
}
for(y=30;y>=0;--y){
for(x=0;x<37;++x){
if(curve[y][x])printf("+");
elseprintf(".");
}
printf(" ");
}
return0;
}
❷ c語言求自由落體
1、
按你寫的scanf("請輸入時間:%d",&t) ;
那麼輸入時,引號內所有的內容都要輸入,例如想輸入t的值為5,那麼你需要輸入
請輸入時間:5
一般不是這樣寫的,而是用printf語句輸出提示語句,用scanf語句輸入數值。
printf("請輸入時間:");
scanf("%d",&t);
2、
pow函數一般要求兩個參數都是double型,至少第一個參數嚴格要求是double型,因此pow(t,2)不符合標准(個別簡化版本允許兩個都是int型)。應該將t強制轉為double型,即:pow((double)t,2)
程序:
#include<stdio.h>
intmain()
{
intg,t;
doubles;
printf("請輸入時間:");
scanf("%d",&t);
g=10;
s=g*pow((double)t,2)/2;
printf("在前%d秒內下落的距離:%.2f",t,s);
return0;
}
運行示例:
❸ c語言程序設計小球的自由落體運動
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(void)
{int gmode,gdriver=DETECT;
void *ball;
int x,y,t,f,v;
unsigned int size;
initgraph(&gdriver,&gmode, " ");
x=100;
y=200;
t=0;
f=0.1;
circle(x+10,y,10);
size=imagesize(x,y-10,x+20,y+10);
ball=malloc(size);
setfillstyle(SOLID_FILL,BLACK);
while(!kbhit()){
cleardevice();
t++;
y=y-9.8*(1-f)*t*t/2;
outtextxy(100,100, "v ");
v=(1-f)*9.8*t;
circle(x+10,y,10);
printf( "%d ",v);
delay(1000);
}
free(ball);
closegraph();
return 0;
❹ 編寫自由落體運動的C語言程序
公式:h=1/2*gt^2,g=9.8
#include<stdio.h>
#include<math.h>
main()
{
floath,t;
printf("pleaseinputheight: ");
scanf("%f",&h);
t=sqrt(2*h/9.8);
printf("Thetimeis:%f",t);
getch();
}
❺ C語言-自由落體
#include<stdio.h>
voidJiSuan(double&h,inta[],intn)
{
inti,j;
for(i=0;i<n;i++)//一共收入了n個數
{
h=100.0;
for(j=0;j<a[i];j++)//根據數的大小知道到底是第幾次求高
{
h=h*0.7;
}
if(a[i]==0)//要是最後一個數據為0,則程序停止
{
return;
}
printf("%.2f ",h);
}
}
voidmain()
{
doubleh=100.0;
int*p,i,n;
printf("請輸入數組長度: ");//動態數組
scanf("%d",&n);//n值即為要求多少組所要求的數據
p=newint(n);
printf("請輸入數據: ");
for(i=0;i<n;i++)
{
scanf("%d",(p+i));
}
JiSuan(h,p,n);
}
/*有問題可以HI我,呵呵*/
/*由於不知道要求多少組數據,故採用了動態數組*/
❻ C語言 自由落體
m = m/2; y = y+m*3;
表明的是 一次彈起到最高點的時候經過的路程,問題是什麼? 樓主可以看看 是第N次落地時候反彈多高,共經過多少米,樓主的計算公式比它多了個最後彈起的高度 ,應該減去最後一次彈起的高度!
舉個例子 1000米的時候 彈起一次反彈多高呢 ? 顯然是500 經過的路程呢 1000 按照樓主的計算公式就是1500米,多在了最高多計算了一次 減去就行了!改程序的循環部分 我還沒沒有想好 ,不過按下面這樣改
#include<stdio.h>
#include<string.h>
int main()
{
float m,n,i,y=0;
scanf("%f%f",&m,&n);
for(i=0;i<n;i++)
{
m=m/2;
y=y+m*3;
}
y -= m;
printf("%.2f %.2f\n",m,y);
}
❼ C語言關於小球自由落體的循環設計
#include<stdio.h>
#include<math.h>
int main()
{int m,i;
double sum=0,n;
printf("輸入小球落下的高度,小球反彈次數: ");
scanf("%lf %d",&n,&m);
sum+=n;
for(i=0;i<m;i++)
{
n=n/2.0;
printf("第%d次彈跳%lf高 ",i+1,n);
if(i<m-1)
{
sum+=n*2;
printf("彈跳第%d次下一次沒到,經過的路程: %lf ",i+1,sum);
}
printf(" ");
}
printf("前%d次彈跳共經過:%lf ",m,sum);
return 0;
}