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);
}