㈠ 請高手幫忙,要解題思路或者是代碼,最好c語言。
給個思路你吧,如果要代碼我再給你凱讓寫
首先可以用一個char類型的二維數組保存名字,一個char類型的二維數組保存分數
當輸入完成後判斷
先判斷分數的字元串長度最長的就是最高分,如果長度相同,就比較第一個字元,大的就高分,悄賀否則低分,如果相等,那麼就繼盯運局續比較第二個字元串,以此類推。如果兩個字元串完全相等,那麼就比較名字的字元串,比較字母的大小。
那樣就能排個續出來了,然後列印
㈡ 給我提供個小游戲的C 語言代碼
2L你給的什麼呀,明明是加密演算法調用我給你一個貪吃蛇的 C# #define N 200/*定義全局常量*/
#define m 25
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define Esc 0x011b
int i,j,key,k;
struct Food/*構造食物結構體*/
{
int x;
int y;
int yes;
}food;
struct Goods/*構造寶貝結構體*/
{
int x;
int y;
int yes;
}goods;
struct Block/*構造障礙物結構體*/
{
int x[m];
int y[m];
int yes;
}block;
struct Snake{/*構造蛇結構體*/
int x[N];
int y[N];
int node;
int direction;
int life;
}snake;
struct Game/*構建游戲級別參數體*/
{
int score;
int level;
int speed;
}game;
/*定義函數*/
void init(void);/*定義圖形驅動*/
void close(void);/*定義關閉函數*/
void drawk(void);/*定義界面函數*/
void gameover(void);/*定義游戲結束函數*/
void gameplay(void);/*定義游戲主函數*/
void prscore(void);/*定義得分函數*/
void main(void){/*主函數體,調用以下四個函數*/
init();
setbkcolor(7);
drawk();
gameplay();
close();
}
void init(void){/*構建圖形驅動函數*/
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
cleardevice();
}
void drawk(void){/*構建游戲界面函數*/
/*setbkcolor(LIGHTGREEN);*/
char str3[50];
setfillstyle(SOLID_FILL,BLUE);/*條型邊框,顯示版本信息*/
bar3d(48,9,610,38,1,45);
setcolor(YELLOW);/*版本信息*/
sprintf(str3,"Version:5.01,Powerwing Studio");
outtextxy(330,20,str3);
setfillstyle(LTSLASH_FILL,YELLOW);/*設定牆邊的填充形式*/
bar3d(48,48,58,462,0,0);/*設定牆邊*/
bar3d(48,39,611,48,0,0);
bar3d(48,452,611,462,0,0);
bar3d(602,39,611,462,0,0);
}
void gameplay(void){/*構建游戲主函數*/
/*初始化游戲角色*/
randomize();/*隨機數發生器*/
goods.yes=1;
block.yes=1;
food.yes=1;/*場景中需建立新的食物*/
snake.life=1;/*初始化蛇生命值*/
snake.direction=1;/*蛇起始的移動方向定義為向右*/
snake.x[0]=100;snake.y[0]=100;/*蛇頭的位置坐標初始化*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*蛇初始化節數,共兩節只有蛇頭*/
/*初始化障礙物的數組*/
block.x[0]=170;block.y[0]=270;/*level 1*/
block.x[1]=410;block.y[1]=310;
block.x[2]=300;block.y[2]=200;
block.x[3]=320;block.y[3]=420;
block.x[4]=250;block.y[4]=350;
block.x[5]=220;block.y[5]=320;/*level 2*/
block.x[6]=310;block.y[6]=410;
block.x[7]=400;block.y[7]=500;
block.x[8]=230;block.y[8]=230;
block.x[9]=280;block.y[9]=280;
block.x[10]=170;block.y[10]=280;/*level 3*/
block.x[11]=420;block.y[11]=310;
block.x[12]=310;block.y[12]=200;
block.x[13]=320;block.y[13]=400;
block.x[14]=250;block.y[14]=260;/*level 4*/
block.x[15]=220;block.y[15]=330;
block.x[16]=130;block.y[16]=410;
block.x[17]=310;block.y[17]=510;
block.x[18]=230;block.y[18]=340;
block.x[19]=280;block.y[19]=380;
block.x[20]=270;block.y[20]=170;/*level 5*/
block.x[21]=410;block.y[21]=450;
block.x[22]=190;block.y[22]=200;
block.x[23]=150;block.y[23]=320;
block.x[24]=270;block.y[24]=350;
block.x[25]=340;block.y[25]=320;
game.score=0;
game.speed=50000;
game.level=1;
prscore();/*得分初始化*/
while(1){/*判斷為真可以按Esc退出循環結束游戲*/
while(!kbhit()){/*無按鍵按下時,蛇自己移動身體*/
if(game.level==1){/*畫出障礙物*/
for(j=0;j<5;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==2){/*畫出障礙物*/
for(j=0;j<9;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==3){/*畫出障礙物*/
for(j=0;j<14;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==4){/*畫出障礙物*/
for(j=0;j<19;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==5){/*畫出障礙物*/
for(j=0;j<25;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(food.yes==1){/*需要畫出新的食物*/
food.x=rand()%400+60;/*獲得間隔60的隨機數食物坐標值*/
food.y=rand()%350+60;
while(food.x%10!=0)/*判斷坐標值是否滿足被10整除,否,自動增加*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*新的食物已經產生*/
}
if(goods.yes==1){/*需要畫出新的寶物*/
goods.x=rand()%380+60;/*獲得間隔60的隨機數寶貝坐標值*/
goods.y=rand()%320+80;
while(goods.x%10!=0)/*判斷坐標值是否滿足被10整除,否,自動增加*/
goods.x++;
while(goods.y%10!=0)
goods.y++;
goods.yes=0;/*新的寶貝已經產生*/
}
if(goods.yes==0){/*新寶貝產生,應顯示出來*/
setcolor(0);/*擦除*/
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);
delay(50);/*延時*/
setcolor(YELLOW);
goods.x=goods.x+random(10)-random(20);/*隨機數增量*/
goods.y=goods.y+random(10)-random(20);
while(goods.x%10!=0)/*判斷變化後的坐標值是否滿足被10整除,否,自動增加*/
goods.x++;
while(goods.y%10!=0)
goods.y++;
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);/*重畫出寶貝*/
if(goods.x<65||goods.x>585||goods.y<65|goods.y>445){/*判定寶貝是否越界*/
setcolor(0);/*擦除越界的寶貝*/
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);
goods.yes=1;/*越界後重新生成寶貝*/
}
}
if(food.yes==0){/*新食物產生,應顯示出來*/
setcolor(GREEN);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設定當前線型*/
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--){/*取得需重畫的蛇的節數*/
snake.x[i]=snake.x[i-1];/*最後一節的坐標值等於倒數第二節的坐標值*/
snake.y[i]=snake.y[i-1];
}
switch(snake.direction){/*判斷蛇頭的移動方向*/
case 1:snake.x[0]+=10;break;/*向右*/
case 2:snake.x[0]-=10;break;/*向左*/
case 3:snake.y[0]-=10;break;/*向上*/
case 4:snake.y[0]+=10;break;/*向下*/
}
for(i=3;i<snake.node;i++){/*超過4節後,判斷蛇自身碰撞*/
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){/*即自身的任一節坐標值與蛇頭坐標相等*/
for(i=1;i<snake.node-1;i++){/*擦除自己碰撞後位置蛇的身子*/
setcolor(0);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
snake.life-=1;/*生命值減少一*/
snake.node-=5;
prscore();/*輸出結果*/
if(snake.life==0){/*判斷生命值是否為0*/
gameover();/*游戲結束*/
break;/*退出內循環*/
}
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455){/*判斷蛇是否與牆體碰撞*/
for(i=1;i<snake.node-1;i++){/*擦除撞牆後位置蛇的身子*/
setcolor(0);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
snake.x[0]=100;snake.y[0]=100;/*蛇頭的位置坐標重新初始化*/
snake.x[1]=110;snake.y[1]=100;
snake.direction=1;/*蛇起始的移動方向定義為向右*/
snake.life-=1;/*生命值減少一*/
snake.node-=5;/*相應節數減少5節*/
prscore();
if(snake.life==0){
gameover();
break;
}
}
/*判斷蛇與障礙物碰撞,食物是否與障礙物重疊*/
if(game.level==1){/*判斷級別,並設定相應的障礙物數量,即數組個數*/
k=5;
}
else if(game.level==2){
k=9;
}
else if(game.level==3){
k=14;
}
else if(game.level==4){
k=19;
}
else if(game.level==5){
k=25;
}
for(j=0;j<k;j++){
if(snake.x[0]==block.x[j]&&snake.y[0]==block.y[j]){
for(i=1;i<snake.node-1;i++){/*擦除撞牆後位置蛇的身子*/
setcolor(0);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
if(food.x==block.x[j]&&block.y[j]==food.y){/*防止障礙物與食物重疊*/
setcolor(0);/*設定食物的顏色為背景色,即擦除*/
rectangle(food.x,food.y,food.x+10,food.y-10);
food.yes=1;/*食物重新生成*/
}
snake.x[0]=100;snake.y[0]=100;/*蛇頭的位置坐標重新初始化*/
snake.x[1]=110;snake.y[1]=100;
snake.direction=1;/*蛇起始的移動方向定義為向右*/
snake.life-=1;
snake.node-=5;
prscore();
if(snake.life==0){
gameover();
break;
}
}
}
if(snake.x[0]==food.x&&snake.y[0]==food.y){/*判斷蛇是否吃到食物*/
setcolor(0);/*設定食物的顏色為背景色,即擦除*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;/*新的一節放在不可見的位置*/
snake.y[snake.node]=-20;
snake.node++;/*蛇身增加一節*/
if(snake.node>2){/*當節數每增加5節生命值增加一*/
snake.life=1+fabs((snake.node-2)/5);
}
food.yes=1;/*場景需要增加食物*/
game.score+=20;/*加分*/
prscore();/*輸出得分*/
}
if(snake.x[0]==goods.x&&snake.y[0]==goods.y){/*判定蛇是否得到寶貝*/
setcolor(0);/*設定寶貝的顏色為背景色,即擦除*/
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);
goods.yes=1;/*場景需要增加新的寶貝*/
game.score+=100;/*得到寶貝後加100分*/
prscore();/*輸出得分*/
}
if(game.score<500){/*設定游戲速度和難度級別*/
game.speed=50000;
game.level=1;}
else if(game.score>=500&&game.score<1000){
game.level=2;
game.speed=40000;}
else if(game.score>=1000&&game.score<1500){
game.level=3;
game.speed=30000;}
else if(game.score>=1500&&game.score<2000){
game.level=4;
game.speed=20000; }
else if(game.score>=5000){
game.level=5;
game.speed=10000;}
setcolor(4);/*畫出移動的蛇*/
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設定當前線型*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(game.speed);
setcolor(0);/*用背景色擦去最後一節*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(! kbhit) */
if(snake.life==0)/*判斷循環結束條件:蛇死或者檢測到Esc按鍵*/
break;
key=bioskey(0);/*判斷按鍵*/
if(key==Esc)
break;
/*判斷蛇頭接收到的用戶按鍵響應的移動方向*/
else if(key==UP&&snake.direction!=4)
snake.direction=3;
else if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
void gameover(void){/*游戲結束處理*/
cleardevice();/*清屏*/
prscore();/*輸出得分*/
setcolor(RED);/*列印出「Game Over」字樣*/
settextstyle(0,0,4);
outtextxy(200,200,"Game Over!");
getch();
}
void prscore(void){/*定義分數輸出函數*/
char str1[10];
char str2[10];
char str4[20];
setfillstyle(SOLID_FILL,BLUE);/*用於清除舊的顯示信息*/
bar(49,10,320,37);
setcolor(WHITE);
settextstyle(0,0,1);
sprintf(str1,"score:%d",game.score);/*輸出得分*/
outtextxy(55,20,str1);
sprintf(str2,"level:%d",game.level);/*輸出級別*/
outtextxy(250,20,str2);
sprintf(str4,"life:%d",snake.life);/*輸出級別*/
outtextxy(150,20,str4);
}
void close(void){/*定義關閉函數,退出圖形模式*/
getch();
closegraph();
}
㈢ 用C語言編運動的氣球
小球動態碰撞的c程序,歲高正使用彩色小球(運行環境win-tc/tc2.0)
# include <stdio.h>
# include<graphics.h>
int main()
{
int i, gdriver, gmode, size;
void *buf;
gdriver=DETECT; /*由於使乎悔用的是DETECT,故無需再設置gmode的數值*/
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1, 10);
circle(100, 200, 30);
floodfill(100, 200, 12);
size=imagesize(69, 169, 131, 231);
buf=malloc(size);
getimage(69, 169, 131, 231,buf);
putimage(500, 269, buf, COPY_PUT);
do
{
for(i=0; i<185; i++)
{
putimage(70+i, 170, buf, COPY_PUT);
putimage(500-i, 170, buf, COPY_PUT);
}
for(i=0;i<念沒185; i++)
{
putimage(255-i, 170, buf, COPY_PUT);
putimage(315+i, 170, buf, COPY_PUT);
}
}while(!kbhit());
getch();
closegraph();
}
㈣ 如何用C語言製作游戲
你可以先去【繪學霸】網站找「游戲設計/游戲製作」板塊的【免費】視頻教程-【點擊進入】完整入門到精通視頻教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=307&zdhhr-11y04r-1818074554951406228
想要系統的學習可以考慮報一個網路直播課,推薦CGWANG的網路課。老師講得細,上完還可以回看,還有同類型錄播課可以免費學(贈送終身VIP)。
自製能力相對較弱的話,建議還是去好點的培訓機構,實力和規模在國內排名前幾的大機構,推薦行業龍頭:王氏教育。
王氏教育全國直營校區面授課程試聽【復制後面鏈接在瀏覽器也可打開】: www.huixueba.com.cn/school/3dmodel?type=2&zdhhr-11y04r-1818074554951406228
在「游戲設計/游戲製作」領域的培訓機構里,【王氏教育】是國內的老大,且沒有加盟分校,都是總部直營的連鎖校區。跟很多其它同類型大機構不一樣的是:王氏教育每個校區都是實體面授,老師是手把手教,而且有專門的班主任從早盯到晚,爆肝式的學習模式,提升會很快,特別適合基礎差的學生。
大家可以先把【繪學霸】APP下載到自己手機,方便碎片時間學習——繪學霸APP下載: www.huixueba.com.cn/Scripts/download.html
㈤ 學C語言已經半年多了。卻對俄羅斯方塊,貪吃蛇之類的小游戲的編寫一點頭緒都沒有! 問題塊: 1)
單純學C你是寫不出圖形程序的,你可以看到,C標准庫支持的是dos程序,就是那個黑不溜秋的東西。
如果想知道你離小游戲還多遠,咱們可以這么慧友算一下,下面給出幾個假設條件:
提供給你圖形繪制函數,你只需要傳相應的參數,就能畫出圖形,點,線,圓,顏色填充之類。
給出線程函數,讓你可以創建系統線程,或者使用定時器等控制貪吃蛇身體的移動。具體的方式可以變,你需要一個按照固定時間間隔來移動蛇身的函數。
那你覺著,你該怎樣寫一個貪吃蛇?
思路是:
使用鏈表等結構,存儲蛇的身體,好處就是,可以任意長度。你要想好鏈表中存儲什麼屬性可以更好地描述蛇的狀態,它超哪個方向走,它的身體各個節點處於哪個位置。
劃分屏幕坐標系,將貪吃蛇映射為坐標系中的點。
寫出碰撞檢測函數,貪吃蛇碰到了一個食物,就在鏈表頭部添加一個節點並野碧正將頭結點更新為這個結點。
使用碰撞檢測函數檢測貪吃蛇是否撞到了自己。
檢測蛇是否撞到了屏幕邊界。
使用線程或定時器沿著一個方向移動你的貪吃蛇,移動規律是朝著當前鏈表頭部沖的方向勻速移動,你可以設定0.5s對表頭的x/y坐標進行加,減。時間間隔影響了蛇的速度,如果允許長度超過一頌悔個程度升級加速,你就要設置下這里的參數。
根據表頭的移動,設計演算法計算蛇的身體各個點的移動軌跡。這個是關鍵,這個演算法想錯了,你的蛇就會亂跑。一個比較直接的做法是,將蛇身體的每個節點依次前移,不是坐標的移動,是填充,讓後面節點填充它前面節點移動前的位置。
大致是這樣,我只是給出個思路,如果我有寫錯的地方,歡迎指正,又或者是你可以按照你的思路來進行,學習,思路是很重要的,代碼是死的,人是活的。
分析問題,你要將實際的問題抽象出編程用的模型。抽象的過程就是,先假設你已經有了你想要的函數,你可以先給出函數的聲明,比如碰撞檢測函數,線程函數等等。這些函數你不會寫,先空著,想像它們已經完成了。
然後你要做的就是,用這些已經被假設存在的構造快,來實現你的邏輯。這個邏輯是什麼,就要看你怎麼抽象一個具體的問題。就像貪吃蛇,通用的思路是把它抽象為坐標和鏈表結構。如果你用了另外一種思路,整個過程可能截然不同。
整個過程寫完了,你需要知道,那些被你假設了的函數,到底怎麼實現。
給個思路:
界面顯示用MFC來做,線程,定時器什麼的,有相應的windowsAPI,這些圖形和線程功能,都需要操作系統做支持,所以你要用到一些windows的API。這些資料都是有的,你可以去找。
以上。再次聲明,如有疏漏,請見諒。
㈥ 基於SAT的數獨游戲求解程序,求C語言代碼
用0代表要填的數
#include <stdio.h>
#include <stdlib.h>
#define SIZE 9
#define get_low_bit(x) ((~x&(x-1))+1)
struct{
int left;
char num;
char try;
}board[SIZE][SIZE];
int bit2num(int bit)
{
switch(bit){
case 16:
case 256:
return 9;
基礎解法
排除法(摒除法)
摒除法:用數字去找單元內唯一可填空格,稱為摒除法,數字可填唯一空格稱為排除法 (Hidden Single)。
根據不同的作用范圍,摒余解可分為下述三種:
數字可填唯一空格在「宮」單元稱為宮排除(Hidden Single in Box),也稱宮摒除法。
數字可填唯一空格在「行」單元稱為行排除法(Hidden Single in Row),也稱行摒除法。
㈦ 急求《單片機C語言程序設計實訓100例——基於8051+Proteus模擬》第三部分綜合設計C語言源代碼
這本書一共5章節,你說第三部分指的哪裡?
第五章才是綜合設計部分啊,而且這部分有好多常式,也不知道你要哪部分?
第1章 8051單片機C語言程序設計概述 1
1.1 8051單片機引腳 1
1.2 數據與程序內存 5
1.3 特殊功能寄存器 6
1.4 外部中斷、定時器/計數器及串口應用 8
1.5 有符號與無符號數應用、數位分解、位操作 9
1.6 變數、存儲類型與存儲模式 11
1.7 關於C語言運算符的優先順序 13
1.8 字元編碼 15
1.9 數組、字元串與指針 16
1.10 流程式控制制 18
1.11 可重入函數和中斷函數 19
1.12 C語言在單片機系統開發中的優勢 20
第2章 Proteus操作基礎 21
2.1 Proteus操作界面簡介 21
2.2 模擬電路原理圖設計 22
2.3 元件選擇 25
2.4 調試模擬 29
2.5 Proteus與Vision 3的聯合調試 29
2.6 Proteus在8051單片機應用系統開發的優勢 30
第3章 基礎程序設計 32
3.1 閃爍的LED 32
3.2 雙向來回的流水燈 34
3.3 花樣流水燈 36
3.4 LED模擬交通燈 38
3.5 分立式數碼管循環顯示0~9 40
3.6 集成式數碼管動態掃描顯示 41
3.7 按鍵調節數碼管閃爍增減顯示 44
3.8 數碼管顯示4×4鍵盤矩陣按鍵 46
3.9 普通開關與撥碼開關應用 49
3.10 繼電器及雙向可控硅控制照明設備 51
3.11 INT0中斷計數 53
3.12 INT0及INT1中斷計數 55
3.13 TIMER0控制單只LED閃爍 58
3.14 TIMER0控制數碼管動態管顯示 62
3.15 TIMER0控制8×8LED點陣屏顯示數字 65
3.16 TIMER0控制門鈴聲音輸出 68
3.17 定時器控制交通指示燈 70
3.18 TIMER1控制音階演奏 72
3.19 TIMER0、TIMER1及TIMER2實現外部信號計數與顯示 75
3.20 TIMER0、TIMER1及INT0控制報警器與旋轉燈 77
3.21 按鍵控制定時器選播多段音樂 79
3.22 鍵控看門狗 82
3.23 雙機串口雙向通信 84
3.24 PC與單片機雙向通信 90
3.25 單片機內置EEPROM讀/寫測試 95
第4章 硬體應用 99
4.1 74HC138解碼器與反向緩沖器控制數碼管顯示 100
4.2 串入並出晶元74HC595控制數碼管顯示四位數字 103
4.3 用74HC164驅動多隻數碼管顯示 106
4.4 並串轉換器74HC165應用 110
4.5 用74HC148擴展中斷 112
4.6 串口發送數據到2片8×8點陣屏滾動顯示 115
4.7 數碼管BCD解碼驅動器CD4511與DM7447應用 117
4.8 62256RAM擴展內存 119
4.9 用8255實現介面擴展 121
4.10 可編程介面晶元8155應用 124
4.11 串列共陰顯示驅動器控制4+2+2集成式數碼管顯示 129
4.12 14段與16段數碼管演示 133
4.13 16鍵解碼晶元74C922應用 136
4.14 1602字元液晶工作於8位模式直接驅動顯示 139
4.15 1602液晶顯示DS1302實時時鍾 148
4.16 1602液晶屏工作於8位模式由74LS373控制顯示 153
4.17 1602液晶屏工作於4位模式實時顯示當前時間 155
4.18 1602液晶屏顯示DS12887實時時鍾 159
4.19 時鍾日歷晶元PCF8583應用 167
4.20 2×20串列字元液晶屏顯示 174
4.21 LGM12864液晶屏顯示程序 177
4.22 TG126410液晶屏串列模式顯示 184
4.23 Nokia7110液晶屏菜單控製程序 192
4.24 T6963C液晶屏圖文演示 199
4.25 ADC0832 A/D轉換與LCD顯示 211
4.26 用DAC0832生成鋸齒波 215
4.27 ADC0808 PWM實驗 217
4.28 ADC0809 A/D轉換與顯示 220
4.29 用DAC0808實現數字調壓 221
4.30 16位A/D轉換晶元LTC1864應用 223
4.31 I2C介面存儲器AT24C04讀/寫與顯示 225
4.32 I2C存儲器設計的中文硬體字型檔應用 233
4.33 I2C介面4通道A/D與單通道D/A轉換器PCF8591應用 237
4.34 I2C介面DS1621溫度感測器測試 241
4.35 用兼容I2C介面的MAX6953驅動4片5×7點陣顯示器 246
4.36 用I2C介面控制MAX6955驅動16段數碼管顯示 250
4.37 I2C介面數字電位器AD5242應用 254
4.38 SPI介面存儲器AT25F1024讀/寫與顯示 257
4.39 SPI介面溫度感測器TC72應用測試 264
4.40 溫度感測器LM35全量程應用測試 268
4.41 SHT75溫濕度感測器測試 272
4.42 直流電機正、反轉及PWM調速控制 278
4.43 正反轉可控的步進電機 281
4.44 ULN2803驅動點陣屏仿電梯數字滾動顯示 284
4.45 液晶顯示MPX4250壓力值 286
4.46 12864LCD顯示24C08保存的開機畫面 289
4.47 用M145026與M145027設計的無線收發系統 293
4.48 DS18B20溫度感測器測試 296
4.49 1-Wire式可定址開關DS2405應用測試 303
4.50 MMC存儲卡測試 307
第5章 綜合設計 316
5.1 帶日歷時鍾及溫度顯示的電子萬年歷 316
5.2 用8051+1601LCD設計的整型計算器 321
5.3 電子秤模擬設計 328
5.4 1602液晶屏顯示仿手機鍵盤按鍵字元 332
5.5 用24C04與1602液晶屏設計的簡易加密電子鎖 336
5.6 1-Wire匯流排器件ROM搜索與多點溫度監測 341
5.7 高模擬數碼管電子鍾設計 356
5.8 用DS1302與12864LCD設計的可調式中文電子日歷 360
5.9 用T6963C液晶屏設計的指針式電子鍾 366
5.10 T6963C液晶屏中文顯示溫度與時間 370
5.11 T6963C液晶屏曲線顯示ADC0832兩路A/D轉換結果 372
5.12 溫度控制直流電機轉速 374
5.13 用74LS595與74LS154設計的16×16點陣屏 377
5.14 用8255與74LS154設計的16×16點陣屏 379
5.15 紅外遙控收發模擬 381
5.16 GP2D12紅外測距感測器應用 388
5.17 三端可調正穩壓器LM317應用測試 395
5.18 數碼管顯示的K型熱電偶溫度計 399
5.19 交流電壓檢測與數字顯示模擬 403
5.20 用MCP3421與RTD-PT100設計的鉑電阻溫度計 407
5.21 可接收串口信息的帶中英文硬字型檔的80×16 LED點陣屏 414
5.22 模擬射擊訓練游戲 422
5.23 GPS模擬 427
5.24 溫室監控系統模擬 431
5.25 基於Modbus匯流排的數據採集與開關控制系統設計模擬 437
建議你到腳本之家網站去搜索一下看看有沒有這本書的電子檔。
㈧ 用C語言編上升的氣球
你說的是冒泡排序吧
/*十名學生參加考試,輸入十名學生的考試成績,
然後按照從高到低,輸出成績採用冒泡法方法做*/
#include <stdio.h>
#define LEN 10
void main()
{
int a[LEN];//蔽顫定義數組a
int i,j,t;//循環變數和中間變數
printf("請輸斗並蠢入十名學生的成績:\n");
for(i=0;i<LEN;i++)
{
scanf("%d",&a[i]);
}
printf("排序前的學生成績為:\n"空陪);
for(i=0;i<LEN;i++)
{
printf("排序前的學生成績為:%d\n",a[i]);//輸出排序前的順序
}
for(i=0;i<LEN-1;i++)
{
for(j=LEN-1;j>i;j--)
{
if(a[j]>a[j-1])//按從大到小排列來交換變數的值
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
printf("排序後的學生成績為:\n");
for(i=0;i<LEN;i++)
{
printf("第%d名學生成績為:%d\n",i+1,a[i]);//輸出排序後的順序
}
}
㈨ C語言代碼
看你的代碼,應該是想通過使用12個for循環嵌套來實現,但是這種方式效率是比較低的,13的12次方有23298085122481種方案,短時間內是看不到電腦的運行結果的。
所以我採用了另一種方法,最終算得的結果是64種方案。
#include<stdio.h>
#include"LinkedList.h"
intis_unique(int*array,intvalue,intlen)
{
inti=0,j=0;
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
{
if(array[i]==array[j])
return0;
}
}
return1;
}
intmain()
{
inti=0,j=0,m=0,n=0,k=0;
int譽局count[4]={0};
inttmp=0;
DataTypevalue;
inta[12]={0};//用於存放臨時組合的數據
intmax_num=0;//加減乘除四種運算中,符合條件的方案數量最少的個數
LinkedList_stru*list_array[4];
LinkedList_stru*list_tmp;
LinkNode_stru*p1,*p2,*p3,*p4;
intflag=0;
inttotal=0;
/*定義鏈表指針,用於存放創建的鏈表首地址*/
LinkedList_stru*list_addition=NULL,*list_subtraction=NULL;
LinkedList_stru*list_multiplication=NULL,*list_division=NULL;
printf(" 開始玩命分析......... ");
/*分析:總共有+,-,*,÷四種運算,而且運算結果需要在1~13之間。
*所以,我們可以先把這些所有符合條件的結果求出來.
**/
/*創建鏈表*/
list_addition=LinkedList_Create();//+
list_subtraction=LinkedList_Create();//-
list_multiplication=LinkedList_Create();//×
list_division=LinkedList_Create();//÷
/*1.求出+運算所有符合要求的方案*/
count[0]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i+j;
if(tmp<=13)
{
if(i==j||j==tmp||i==tmp)
{
continue;
}
else
{
value.a1=i;
value.a2=j;
value.a3=tmp;
LinkedList_Add_Tail(list_addition,value);
count[0]++;
//printf("%2d+%2d=%2d ",i,j,(i+j));
}
}
}
}
//printf("計算完畢,+運算符合條件的結果總共有%d種! ",count[0]);
/*2.求出-運算所有符合要求的方案*/
count[1]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i-j;
if(tmp>0&&tmp<=13)
{
if(i==j||j==tmp||i==tmp)
{
continue;
}
value.a1=i;
value.a2=j;
value.a3=tmp;
LinkedList_Add_Tail(list_subtraction,value);
count[1]++;
孫雹//printf("%2d-%2d=%2d ",i,j,(i-j));
}
}
}
//printf("計算完畢,-運算符合條件的結果總共有%d種! ",count[1]);
/*3.求出×運算所有符合要求的方案*/
count[2]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i*j;
if(tmp>0&&tmp<=13)
{
if(i==j||j==tmp||i==tmp)
{
continue;
}
value.a1=i;
慶凱讓value.a2=j;
value.a3=tmp;
LinkedList_Add_Tail(list_multiplication,value);
count[2]++;
//printf("%2d×%2d=%2d ",i,j,(i*j));
}
}
}
//printf("計算完畢,+運算符合條件的結果總共有%d種! ",count[2]);
/*4.求出÷運算所有符合要求的方案*/
count[3]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i%j;
if(tmp==0)
{
if(i==j||j==(i/j)||i==(i/j))
{
continue;
}
value.a1=i;
value.a2=j;
value.a3=(i/j);
LinkedList_Add_Tail(list_division,value);
count[3]++;
//printf("%2d÷%2d=%2d ",i,j,(i/j));
}
}
}
//printf("計算完畢,÷運算符合條件的結果總共有%d種! ",count[3]);
printf("list_addition:clen=%d! ",list_addition->clen);
printf("list_subtraction:clen=%d! ",list_subtraction->clen);
printf("list_multiplication:clen=%d! ",list_multiplication->clen);
printf("list_division:clen=%d! ",list_division->clen);
list_array[0]=list_addition;
list_array[1]=list_subtraction;
list_array[2]=list_multiplication;
list_array[3]=list_division;
max_num=list_array[0]->clen;
for(i=0;i<4;i++)
{
if(max_num>=list_array[i]->clen)
{
max_num=list_array[i]->clen;
//list_tmp=num[i];
}
}
//printf("最多隻能有%d種方案! ",max_num);
/*從上面的計算結果我們可以知道,最多隻能有10種方案,因為乘法和除法這兩種運算均只有10種方案符合條件
*所以,這里我們就基於除法去做匹配.按理說不應該這么做的,應該在代碼中進行判斷,但是為了節省時間,只能這樣了。
**/
/*遍歷鏈表*/
p4=list_division->pHead->pNext;
for(i=0;i<list_division->clen;i++)
{
p3=list_multiplication->pHead->pNext;
for(j=0;j<list_multiplication->clen;j++)
{
p2=list_subtraction->pHead->pNext;
for(m=0;m<list_subtraction->clen;m++)
{
p1=list_addition->pHead->pNext;
for(n=0;n<list_addition->clen;n++)
{
flag=111;
a[0]=p1->data.a1;a[1]=p1->data.a2;a[2]=p1->data.a3;
a[3]=p2->data.a1;a[4]=p2->data.a2;a[5]=p2->data.a3;
a[6]=p3->data.a1;a[7]=p3->data.a2;a[8]=p3->data.a3;
a[9]=p4->data.a1;a[10]=p4->data.a2;a[11]=p4->data.a3;
for(k=0;k<sizeof(a)/sizeof(a[0]);k++)
{
if(!is_unique(a,a[k],sizeof(a)/sizeof(a[0])))
{
flag=0;
break;
}
}
if(flag==111)
{
//printf(" ");
total++;
printf("方案%d: ",total);
printf("%2d+%2d=%2d ",a[0],a[1],a[2]);
printf("%2d-%2d=%2d ",a[3],a[4],a[5]);
printf("%2d×%2d=%2d ",a[6],a[7],a[8]);
printf("%2d÷%2d=%2d ",a[9],a[10],a[11]);
printf(" ");
}
p1=p1->pNext;
}
p2=p2->pNext;
}
p3=p3->pNext;
}
p4=p4->pNext;
}
printf("計算完畢,總共有%d種方案! ",total);
return0;
}
㈩ c語言,一個球從某高度h落下,每次落地後反彈回原來高度的一半,再落下。編程計算球在10次落地
根據你的題目和輸出樣式截圖分析:
1、每次輸出當前墜落的高度,及球本次墜落後經過的距離總和。
2、輸出包含小數,因此高度及距離變數採用浮點數。
3、遞歸/循環只執行10次。
3、看你圖上,輸出浮點數小數不顯示多餘的0,因此列印格式要用%g而不是%f(最多保留6位)。
#include <stdio.h>
void drop(float height);
int main()
{
float height;
printf("初始高度:");
scanf("%f",&height);
drop(height);
return 0;
}
void drop(float height)
{
static int cnt=1;
static float distance=0;//每次墜落後球移動的距離總和
if(height>0){
distance+=height;
printf("第%d次高度%g ",cnt,height);
printf("第%d次距離%g ",cnt,distance);
if(cnt<10)
cnt++,distance+=height/2,drop(height/2);
else
cnt=1,distance=0;
}
}