c語言月亮
A. 月球圍繞地球,地球圍繞太陽的C語言代碼
A、當地球繞太陽公轉從B到C,太陽直射點由赤道向南回歸線移動,淮安的白晝越來越短,故不符合題意;B、當地球繞太陽公轉從B到C,太陽直射點由赤道向南回歸線移動,淮安的西北季風越來強盛,故不符合題意;C、當地球繞太陽公轉從B到C,太陽直射點由赤道向南回歸線移動,時間從9月23日到12月22日,梅雨時間一般在6月下旬到7月上旬,故不符合題意;D、當地球繞太陽公轉從B到C,太陽直射點由赤道向南回歸線移動,淮安的黑夜越來越長,故正確.故選:D.
B. 求C語言程序設計實例,要100行以上,求高手解答,不要太難
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "string.h"
#define MAX 370000
typedef struct
{
char string[12];
int state;
int x;
int y;
}string;
typedef struct Queue
{
string queue[MAX];
int low;
int top;
}queue;
queue s1,s2;
char start[12];
char goal[9]={"123456789"};
char flag[MAX];
char step[2][MAX];
int xd[4]={0,-1,0,1};
int yd[4]={1,0,-1,0};
int fact[9]={1,1,2,6,24,120,720,5040,40320};
int cantor(char *s){
int i,j,count;
int sum=0;
for(i=0;i<8;i++)
{
count=0;
for(j=i+1;j<=8;j++)
if(s[i]>s[j])
count++;
sum+=fact[8-i]*count;
}
return sum;
}
int judge(int x,int y)
{
if(x>=0&&x<3&&y>=0&&y<3)
return 1;
return 0;
}
int ckey(char *s){
int i,j;
int sum=0,count;
for(i=8;i>=0;i--)
{
count=0;
if(s[i]=='9')
continue;
for(j=i-1;j>=0;j--)
{
if(s[j]=='9')
continue;
if(s[i]<s[j])
count++;
}
sum+=count;
}
if(sum%2)
return 0;
return 1;
}
int BFS()
{
string t1,t2;
int i;
while(s1.low<s1.top&&s2.low<s2.top)
{
t1=s1.queue[++s1.low];
for(i=0;i<4;i++)
{
if(judge(t1.x+xd[i],t1.y+yd[i]))
{
int currentstate,z,nz;
char t[12];
strcpy(t,t1.string);
z=3*t1.x+t1.y;
nz=3*(t1.x+xd[i])+t1.y+yd[i];
t[z]^=t[nz];
t[nz]^=t[z];
t[z]^=t[nz];
currentstate=cantor(t);
if(!flag[currentstate])
{
flag[currentstate]=1;
step[0][currentstate]=step[0][t1.state]+1;
strcpy(s1.queue[++s1.top].string,t);
s1.queue[s1.top].x=t1.x+xd[i];
s1.queue[s1.top].y=t1.y+yd[i];
s1.queue[s1.top].state=currentstate;
}
else if(flag[currentstate]==2)
return step[0][t1.state]+step[1][currentstate]+1;
}
}
t2=s2.queue[++s2.low];
for(i=0;i<4;i++)
{
if(judge(t2.x+xd[i],t2.y+yd[i]))
{
int currentstate,z,nz;
char t[12];
strcpy(t,t2.string);
z=3*t2.x+t2.y;
nz=3*(t2.x+xd[i])+t2.y+yd[i];
t[z]^=t[nz];
t[nz]^=t[z];
t[z]^=t[nz];
currentstate=cantor(t);
if(!flag[currentstate])
{
flag[currentstate]=2;
strcpy(s2.queue[++s2.top].string,t);
step[1][currentstate]=step[1][t2.state]+1;
s2.queue[s2.top].x=t2.x+xd[i];
s2.queue[s2.top].y=t2.y+yd[i];
s2.queue[s2.top].state=currentstate;
}
if(flag[currentstate]==1)
return step[1][t2.state]+step[0][currentstate]+1;
}
}
}
return -1;
}
void main()
{
int i,result;
char hb[9];
while(scanf("%s",hb)!=EOF)
{
result=0;
start[0]=hb[0];
for(i=1;i<9;i++)
{
scanf("%s",hb);
start[i]=hb[0];
}
for(i=0;i<9;i++)
if(start[i]=='x')
{
start[i]='9';
break;
}
if(!ckey(start))
result=-1;
else if(!strcmp(start,goal))
result=0;
else
{
memset(flag,0,sizeof(flag));
memset(step,0,sizeof(step));
s1.low=s1.top=-1;
s2.low=s2.top=-1;
flag[s1.queue[++s1.top].state=cantor(start)]=1;
flag[s2.queue[++s2.top].state=cantor(goal)]=2;
strcpy(s1.queue[s1.top].string,start);
strcpy(s2.queue[s2.top].string,goal);
s1.queue[s1.top].x=i/3;
s1.queue[s1.top].y=i%3;
s2.queue[s2.top].x=2;
s2.queue[s2.top].y=2;
result=BFS();
}
if(result<0)
printf("unsolvable\n");
else printf("%d\n",result);
}
}
這是經典的八數碼問題的求解。。。雙向BFS,。。。問題是給出一個初始狀態。。求到達目標狀態最小需要多少步。。。。其中目標狀態固定。。。為1 2 3 4 5 6 7 8 x。。。x代表空格。。這九個數代表3*3的矩陣。。說白了就是小時候玩的拼圖游戲。。。我把注釋都消了。。。你慢慢看。。。。
C. C語言問題
為什麼捨不得懸賞分? 我相信沒人願意給正確答案的 即使做好。
D. 地球與月球之間的距離大約是238857英里寫C語言程序在屏幕上顯示出地球與月球之間的大約是多少公里
#include<stdio.h>
main()
{
doublea=238857;
printf("%lf",a*1.609);
}
如圖所示,望採納。。。。。。
E. C語言課程設計之太陽,地球,月亮天體的運動
#include<graphics.h>
#include<dos.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
int gd=DETECT,gm,color;
double a,b;
initgraph(&gd,&gm,"C:\\TC3\\BGI");
for(a=0;a<=3.1;a=a+0.1){
setcolor(YELLOW);
setbkcolor(BLACK);
settextstyle(SMALL_FONT,HORIZ_DIR,3);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(320,400,"Tian Ti Yun Dong");
outtextxy(320,450,"By LQP 080502123");
setcolor(RED);
setfillstyle(1,RED);
circle(320,200,70);
floodfill(320,200,4);
delay(100);
setcolor(BLUE);
setfillstyle(1,BLUE);
circle(120*cos(a)+320,120*sin(a)+200,15);
floodfill(120*cos(a)+320,120*sin(a)+200,1);
delay(100);
for(b=0;b<=12.4;b=b+0.1){
setcolor(WHITE);
setfillstyle(1,WHITE);
circle(30*cos(b)+(120*cos(a)+320),30*sin(b)+(120*sin(a)+200),5);
floodfill(30*cos(b)+(120*cos(a)+320),30*sin(b)+(120*sin(a)+200),WHITE);
cleardevice();
}
}
getch();
closegraph();
}
F. 請用for循環 break和完成折紙上月球的C語言小練習 假定:地月距離3633000.0mm
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int tmp = rand() % (500 - 88 + 1) + 88;
double thickness = tmp / 1000.0;
double totals = 0;
int n = 0;
for (totals=thickness; totals < 3633000.0; totals = totals * 2)
n++;
printf("紙張厚度為:%fmm的紙共計折疊:%d次後厚度達到:%fmm", thickness,n, totals);
}