① 如何實現c語言程序各顏色數字雨代碼
#include<stdio.h>
#include<time.h>
#include<windows.h>
typedef struct
{
int x,y;
char ch;
}STU;
STU st[100];
//出現位置
void gotoxy(int x, int y)
{
HANDLE hout;
COORD pos;
pos.X = x;
pos.Y = y;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout, pos);
}
/*隱藏游標*/
void show_cursor(int hide)
{
CONSOLE_CURSOR_INFO cciCursor;
HANDLE hout;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
if(GetConsoleCursorInfo(hout, &cciCursor))
{
cciCursor.bVisible = hide;
SetConsoleCursorInfo(hout, &cciCursor);
}
}
/*設置顏色*/
void set_color(int color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}
main()
{
int i,j;
show_cursor(0);
srand(time(NULL));
//初始化結構體
for (i=0;i<100;i++)
{
st[i].x = rand()%80;
st[i].y = rand()%20;
st[i].ch = rand()%(49-47)+48;
}
while (1)
{
for (i=0;i<100;i++)
{
gotoxy(st[i].x,st[i].y);
set_color(0x2);//最先出現的顏色;
putchar(st[i].ch);
gotoxy(st[i].x,st[i].y-5);
putchar(' ');
st[i].y++;
st[i].ch = rand()%(49-47)+48;
if (st[i].y-5>=18)
{
gotoxy(st[i].x,st[i].y-1);
putchar(' ');
gotoxy(st[i].x,st[i].y-2);
putchar(' ');
gotoxy(st[i].x,st[i].y-3);
putchar(' ');
gotoxy(st[i].x,st[i].y-4);
putchar(' ');
gotoxy(st[i].x,st[i].y-4);
putchar(' ');
}
if (st[i].y > 23)
{
st[i].x = rand()%80;
st[i].y = rand()%20;
}
gotoxy(st[i].x,st[i].y);
set_color(0xA);//由前一個顏色漸變成的顏色
putchar(st[i].ch);
}
Sleep(120);
}
}

幾個基本的顏色;
② 求:用單片機C語言做題目
時鍾
#include<reg52.h>
char code ma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //0-9數碼管,共陰
char code wema[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7}; //片選,1-8個數碼管
char j;
char h_num,m_num,s_num; //分別定義小時、分鍾、秒
char h_shi,h_ge,m_shi,m_ge,s_shi,s_ge;
sbit fm=P3^4;
void delay(char x)
{
char a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void inter_init()
{
EA=1; //開總中斷
ET0=1; //本例中使用的是定時器T0,如果用T1。則為ET1=0,TMOD=0x10。
TMOD=0x01; //定時器工作方式1
TH0=(65535-50000)/256; //因為晶振用的是11.0592MHZ。在取初值時,大概定義為一個中斷為50MS
TL0=(65535-50000)%256;
TR0=1;
}
void display(char h_shi,h_ge,m_shi,m_ge,s_shi,s_ge)
{
P2=ma[h_shi];
P1=wema[0];
delay(8);
P2=ma[h_ge];
P1=wema[1];
delay(8);
P2=ma[10];
P1=wema[2];
delay(8);
P2=ma[m_shi];
P1=wema[3];
delay(8);
P2=ma[m_ge];
P1=wema[4];
delay(8);
P2=ma[10];
P1=wema[5];
delay(8);
P2=ma[s_shi];
P1=wema[6];
delay(8);
P2=ma[s_ge];
P1=wema[7];
delay(8);
}
void main()
{
inter_init();
s_num=55; //初始時間設置。分別是秒,分,小時
m_num=59;
h_num=10;
while(1)
{
if(j==20)
{
j=0;
if(s_num==59)
{
s_num=-1;
if(m_num==59)
{
m_num=-1;
if(h_num==24)
h_num=-1;
h_num++;
fm=0; //到整點後蜂鳴器會響一下
delay(50);
fm=1;
}
m_num++;
}
s_num++;
}
h_shi=h_num/10;
h_ge =h_num%10;
m_shi=m_num/10;
m_ge =m_num%10;
s_shi=s_num/10;
s_ge =s_num%10;
display(h_shi,h_ge,m_shi,m_ge,s_shi,s_ge);
}
}
void time()interrupt 1 using 1 //如果用T1的話,應為interrupt 3
{
TH0=(65535-50000)/256; //因為晶振用的是11.0592MHZ。在取初值時,大概定義為一個中斷為50MS
TL0=(65535-50000)%256;
j++;
}
③ c語言現在正在下雨嗎死循環
你好,C語言中,強制終止死循環可以用CTRL+BREAK組合鍵或者CTRL+C組合鍵。
命令解釋:
CTRL+BREAK 設置或清除 DOS 系統的擴展。CTRL+C 檢測這個命令是為了與 DOS 系統的兼容而保留的,在 Windows里不起作用。如果命令擴展被啟用,並且操作平台是Windows,BREAK 命令會在被調試程序調試時輸入一個硬代碼中斷點。
通過CTRL+BREAK組合鍵或者CTRL+C組合鍵能夠實現中斷死循環。
④ 雨滴 感測器C語言程序
沒給出整體原理圖是沒法寫驅動代碼的
⑤ 怎麼用c寫 下雨或下雪的 程序
初始化
void Init_Data()
{
int i;
for( i=0; i< POINT; i++)
{
Snow[i].x=0;
Snow[i].y=0;
Snow[i].size=0;
}
for( i=0; i<MaxX; i++)
Map[i]=MaxY;
}
顯示:
void MakeSnow()
{
int i;
if( CurSnow>=POINT ) return;
for( i=0; Snow[i].size; i++ )
;
CurSnow++;
Snow[i].x=random(MaxX);
Snow[i].y=random(DOWNSPEED);
Snow[i].size=random(MaxSize)+1;
}
設定顯示坐標
void ShowSnow( int x, int y, int size, int flag )
{
int color=0;
if ( flag ) color=15;
switch( size )
{
case 1:
putpixel( x, y, color );
break;
case 2:
setcolor( color );
line( x-1, y-1, x+1, y+1 );
line( x-1, y+1, x+1, y-1 );
break;
case 3:
setcolor( color );
line( x-1, y-1, x+1, y+1 );
line( x-1, y+1, x+1, y-1 );
/*
line( x-2, y-2, x+2, y+2 );
line( x-2, y+2, x+2, y-2 );*/
line( x-2, y, x+2, y );
line( x, y-2, x, y+2 );
break;
}
}
雪花移動效果:
void Move( int n, int tox, int toy )
{
int x, y, size, i, j;
float person;
x=Snow[n].x;
y=Snow[n].y;
size=Snow[n].size;
/* check end */
j=y;
if( x<tox )
{
person=(DOWNSPEED *1.0) / ( tox-x )*1.0;
for( i=x; i<=tox; i++ )
{
if( j>=Map[i] )
{
tox=i-size;
break;
}
j+=(int)( (i-x+1)*person );
}
}
else if( x>tox )
{
person=(DOWNSPEED *1.0) / ( x-tox )*1.0;
for( i=x; i>=tox; i-- )
{
if( j>=Map[i] )
{
tox=i+size;
break;
}
j+=(int)( (x-i+1)*person );
}
}
if( y+DOWNSPEED>=Map[tox] )
{
switch( size )
{
case 1:
Map[x]--;
break;
case 2:
Map[x]-=2;
if( x>0 && Map[x-1]>Map[x] ) Map[x-1]=Map[x];
if( x<MaxX-1 && Map[x+1]>Map[x] ) Map[x+1]=Map[x];
break;
case 3:
Map[x]-=3;
if( x>1 && Map[x-2]>Map[x] ) Map[x-1]=Map[x];
if( x>0 && Map[x-1]>Map[x] ) Map[x-1]=Map[x];
if( x<MaxX-2 && Map[x+2]>Map[x] ) Map[x+1]=Map[x];
if( x<MaxX-1 && Map[x+1]>Map[x] ) Map[x+1]=Map[x];
break;
}
CurSnow--;
y=Map[x]+size;
Snow[n].x=x;
Snow[n].y=y;
Snow[n].size=0;
}
else /* not end */
{
Snow[n].x=tox;
Snow[n].y=toy;
}
}
⑥ 用C語言編寫一個程序判斷下雨天是否要軍訓
正好手頭有代碼。。。 #include #include typedef struct _node { int data; struct _node *next;} Node;int main() { int n, i, maxNum = 2, num = 1; scanf("%d", &n); Node *head = (Node*)malloc(sizeof(Node)); head->next = NULL; for(i = n; i > 0; i--) { Node *p = (Node*)malloc(sizeof(Node)); p->data = i; p->next = head->next; head->next = p; } Node *cur = head; while(head->next->next->next->next) { if(cur->next) { if(num == maxNum) { cur->next = cur->next->next; } else { cur = cur->next; } num = num % maxNum + 1; } else { num = 1; maxNum = 5 - maxNum; cur = head; } } for(cur = head->next; cur; cur = cur->next) { printf("%d\n", cur->data); } return 0;}
⑦ c語言問題
你好像沒有弄懂變數與值之間的關系,也沒有弄懂if語句的用法
先說說if的用法:if語句後面的括弧裡面應該是一個數,或者是一個能算出具體數的表達式。舉一個最簡單的例子if(1)printf("我是天才");if語句中括弧里的數如果是0則不執行後邊的分支語句,或執行else(看是否有else),如果是1就執行後邊的分支語句,並且不執行else,如果不是1也不是0那麼而是別的具體的數,就當作1處理。所以剛才我寫的這句話就肯定會執行(也就是說我絕對是天才:))。再比如if(a>b)a=b;這回括弧裡面的是一個表達式(或者說是一個運算),如果a真的大於b那麼運算結果為1,即a>b=1;否則a>b=0,所以看a和b的關系來決定是否執行後邊的賦值語句。
另外,說說變數。
變數一般用字母和數字來表示(應該還包括"_")所以,變數「朝霞」「晚霞」
是非法的。
另外,如果你要輸入的是連個漢字的話,用一個變數就可以了。還有如果輸入的是漢字的話就應該用「%s」。
下面是我寫的程序,/*和*/之間的是註解,作為一名程序員或軟體工程師,這時一個良好的習慣。//後面的也是註解,是根據你的程序寫得,可替換前邊的一句,但是對於基礎還沒有學好的你來說復雜(其實我也懶得用你那種方法,很少有人用輸入漢字這種方法的),不太適合你用,最好不要替換前邊的一句。
/*程序目的:輸入朝霞或晚霞,然後顯示第二天是晴天還是雨天*/
#include<stdio.h>
void main()
{
int a,flag=0;
//char a[4];
printf("生活就像瘋子一樣\n總是有事沒事的給自己找一些麻煩\n\n\n\n請輸入今天是朝霞還是晚霞?\n請輸入序號:\n1.朝霞\n2.晚霞\n");
//printf("生活就像瘋子一樣\n總是有事沒事的給自己找一些麻煩\n請輸入今天是朝霞還是晚霞?輸入漢字「朝霞」或「晚霞」");
do
{
scanf("%d",&a);
//scanf("%s",a);
if(a==1)
//if(a=="朝霞")
{
printf("明天會下雨\n");
flag=0;
}
else if(a==2)
//else if(a=="晚霞")
{
printf("明天不會下雨\n");
flag=0;
}
else
{
printf("本程序禁止開玩笑,做人要厚道\n請你輸入1或2,不許輸入別的,請你再輸入一遍!\n");
//printf("本程序禁止開玩笑,做人要厚道\n請你輸入"朝霞"或"晚霞",不許輸入別的,請你再輸入一遍!\n");
flag=1;
}
}while(flag);
}
⑧ 這個C程序的目的很簡單,計算每年的總降雨量,年平均降雨量,月平均降雨量,編譯器沒報錯,
for(y=0;y<YRS;y++)
{
for(m=0;m<MONTHS;m++)
total+=ar[y][m];
printf("%d%10.1f\n",1990+y,total);
}
你要計算每年的total,但是這里的total是不斷累加的,每次外循環時應該把total置為0;
下面那個函數也一樣
⑨ C語言編寫程序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inttemperature;//溫度
intweather;//天氣
charstr_weather[5];
intwind;//風
srand((unsigned)time(0));//初始化隨機種子
temperature=rand()%63-20;//獲取-20到42的隨機數
while(1)
{
weather=rand()%3;//獲取天氣情況:0為雨,1為雪,2為晴
if(temperature<0&&weather==0)//如果溫度小於0度並且天氣為雨,則重新獲取
{
continue;
}
switch(weather)
{
case0:
strcpy(str_weather,"雨");
break;
case1:
strcpy(str_weather,"雪");
break;
case2:
strcpy(str_weather,"晴");
break;
}
break;//如果符合規則,則退出循環
}
wind=rand()%13;//獲取風級:0-12
printf("今天溫度:%d天氣:%s風級:%d級 ",temperature,str_weather,wind);
return0;
}
⑩ 如何用C語言寫出模擬打雷下雨的場景的函數
用C是沒法寫的,flash有自己的編程語言,Action Script 。