① 海盜分金幣用C/C++語言程序表示
http://acm.hit.e.cn/index.php?option=com_wrapper&Itemid=39
有道ACM的題和你的題一樣.我把這ACM的題的答案給你!
#include<stdio.h>
int main()
{
int n,m,answer;
while(scanf("%d %d",&n,&m)==2)
{
answer=m-(n-1)/2;
if(answer>0)
printf("%d\n",answer);
else
printf("0\n");
}
return 0;
}
② 利用c語言能實現按鍵精靈的模擬按鍵功能嗎
調win32api函數SendMessage實現模擬按鍵
#include <windows.h>
...
SendMessage(hWnd,WM_KEYDOWN,鍵值,0);
...
其中hWnd是目標窗口的句柄
值是被宏定義過的,VK_ENTER回車,VK_ESC是ESC,VK_A是A鍵等
目標窗口句柄可以通過HWND hwnd=FindWindow("窗口名");獲得
③ 怎麼用C語言寫出一個讓程序自動按鍵的,只要按兩個鍵就夠了
c語言完成這個有點難,用按鍵精靈吧,實現這個很簡單的。
退出程序的話,用編程來說,你可以先選定你程序的窗口句柄,然後直接關掉這個窗口,你要是想純模擬鍵盤操作的話,你還得考慮當前焦點在不在你的程序窗口上。
④ C語言程序設計這門課一共有多少章節
這門課一共有10個章節。包括:第一章C語言編程基礎(初級),第二章流程式控制制(初級),第三章綜合實例(初級),第四章數組(中級),第五章指針初步(中級),第六章字元串(中級),第七章結構體和共用體(中級),第八章函數進階(中級),第九章預處理指令、綜合案例(中級),第十章指針進階(高級),。
⑤ 如何用c語言編寫一個程序運行時控制滑鼠自動移動點擊圖標執行程序
用c語言寫這個很麻煩的,其實有更好的工具,------《按鍵精靈》 很好用,用它寫點擊圖標的程序很簡單,就幾行代碼,樓主可以試試,但如果你非要用c語言寫的話可以去了解下系統給滑鼠的api ,相對來說很麻煩的。
-物聯網校企聯盟技術部
⑥ 用c語言在funcode上做黃金礦工的游戲 求發整個文件
//funcode黃金礦工源文件
#include"CommonAPI.h"
#include"stdio.h"
#include"string.h"
voidDrawHookLine();
intg_fGoldBornMinX=0;
intg_fGoldBornMaxX=0;
intg_fGoldBornMinY=0;
intg_fGoldBornMaxY=0;
intg_iGoldCount=20;
intg_iGameState=2;
intflag=1;
floatScore=0.f;
intflagnum=0;
charszGotGoldName[20];//當前抓到金子的名稱
floatg_fHookRotation=0.f;
floatg_fEmptyHookSpeed=35.f;
floatfTimeDelta;
floatg_fHookStartPosX;//存儲鉤子的初始X位置
floatg_fHookStartPosY;//存儲鉤子的初始Y位置
///////////////////////////////////////////////////////////////////////////////////////////
//
//主函數入口
//
//////////////////////////////////////////////////////////////////////////////////////////
intPASCALWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{
//初始化游戲引擎
if(!dInitGameEngine(hInstance,lpCmdLine))
return0;
//游戲初始化代碼
dSetWindowTitle("黃金礦工");
g_fGoldBornMinX=dGetScreenLeft()+5;//金子左邊界
g_fGoldBornMaxX=dGetScreenRight()-5;//金子右邊界
g_fGoldBornMinY=dGetScreenTop()+20;//金子上邊界
g_fGoldBornMaxY=dGetScreenBottom()-5;//金子下邊界
g_fHookStartPosX=dGetSpritePositionX("GoldHook");//獲取鉤子的初始X坐標
g_fHookStartPosY=dGetSpritePositionY("GoldHook");//獲取鉤子的初始Y坐標
dSetSpriteCollisionSend("goldHook",1);
dSetSpriteCollisionReceive("goldTemplate",1);
constfloatfRotateSpeed=45.f;//搖擺速度,單位度/秒
intiHookRotToLeft=1;//鉤子擺動的方向:1←;0→
floatfTimeDelta=dGetTimeDelta();
//引擎主循環,處理屏幕圖像刷新等工作
while(dEngineMainLoop())
{
//獲取兩次調用之間的時間差,傳遞給游戲邏輯處理
floatfTimeDelta=dGetTimeDelta();
DrawHookLine();
//執行游戲主循環
if(g_iGameState==0)
{
floatfThisRotate=fRotateSpeed*fTimeDelta;
if(iHookRotToLeft)
{
g_fHookRotation+=fThisRotate;
if(g_fHookRotation>=180.f)
{
g_fHookRotation=180.f;
iHookRotToLeft=0;
}
}
else
{
g_fHookRotation-=fThisRotate;
if(g_fHookRotation<=0.f)
{
g_fHookRotation=0.f;
iHookRotToLeft=1;
}
}
dSetSpriteRotation("GoldHook",g_fHookRotation);
}
elseif(g_iGameState==1)
{
dSetTextValue("Score",Score);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3",1);//獲取鉤子X方向的速度
floatfSpeedX=dGetSpriteLinearVelocityX("GoldHook");
//獲取鉤子Y方向的速度
floatfSpeedY=dGetSpriteLinearVelocityY("GoldHook");
//當速度接近為0時,即可判定其已到達初始點
if(fSpeedX<0.00001f&&fSpeedX>-0.00001f&&
fSpeedY<0.00001f&&fSpeedY>-0.00001f)
{
//解除金塊與鉤子的錨定
dSpriteDismount(szGotGoldName);
//刪除獲取的金塊
dDeleteSprite(szGotGoldName);
//回拉結束,設定狀態為0
g_iGameState=0;
if(flagnum)
{g_iGoldCount--;
}
}
}
//播放挖金者的動作(恢復初始守候動作)
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation2",1);
if(g_iGoldCount==0)
{
g_iGameState=0;
Score=0;
dSetSpriteVisible("GameBegin",1);
g_iGoldCount=20;
flag=1;
}
};
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation2",1);
//關閉游戲引擎
dShutdownGameEngine();
return0;
}
//==========================================================================
//
//引擎捕捉滑鼠移動消息後,將調用到本函數
voiddOnMouseMove(constfloatfMouseX,constfloatfMouseY)
{
//可以在此添加游戲需要的響應函數
}
//==========================================================================
//
//引擎捕捉滑鼠點擊消息後,將調用到本函數
voiddOnMouseClick(constintiMouseType,constfloatfMouseX,constfloatfMouseY)
{
//可以在此添加游戲需要的響應函數
}
//==========================================================================
//
//引擎捕捉鍵盤按下消息後,將調用到本函數
//分別為判斷Shift,Alt,Ctrl當前是否也處於按下狀態。比如可以判斷Ctrl+E組合鍵
voiddOnKeyDown(constintiKey,constintiAltPress,constintiShiftPress,constintiCtrlPress)
{
//可以在此添加游戲需要的響應函數
if(iKey==KEY_SPACE)
{
g_iGameState=1;//初始化之後,將游戲狀態設置為進行中
dSetSpriteVisible("GameBegin",0);
//生成金子
intiLoop=0;//循環變數控制
intiSize=4,iPosX=0,iPosY=0;//iSize表示金塊大小的變數
if(flag)
{
for(iLoop=0;iLoop<g_iGoldCount;iLoop++)
{
if(iLoop<10)//生成10個小金塊,大小為4
{
iSize=4;
}
elseif(iLoop>=10&&iLoop<16)//生成6個中金塊,大小為6
{
iSize=6;
}
else//生成4個大金塊,大小為8
{
iSize=8;
}//初始化金子精靈實例
char*tmpName;
//生成金塊名字
tmpName=dMakeSpriteName("GoldBlock",iLoop);
dCloneSprite("goldTemplate",tmpName);
//設置金塊的寬度
dSetSpriteWidth(tmpName,(float)iSize);
//設置金塊的高度
dSetSpriteHeight(tmpName,(float)iSize);
//設置金子精靈位置
iPosX=dRandomRange(g_fGoldBornMinX,g_fGoldBornMaxX);
iPosY=dRandomRange(g_fGoldBornMinY,g_fGoldBornMaxY);
dSetSpritePosition(tmpName,(float)iPosX,(float)iPosY);
flag=0;
}
}
if(g_iGoldCount==0)
{
flag=1;
g_iGoldCount=20;
}
}
if(iKey==KEY_S&&g_iGameState==0)
{//按下↓並且游戲狀態為"0"
g_iGameState=2;//置游戲狀態為2,可用於控制鉤子是否擺動
//以當前朝向給鉤子一個向前的速度
dSetSpriteLinearVelocityPolar("GoldHook",g_fEmptyHookSpeed,g_fHookRotation);
//播放挖金者的動作(一個胳膊往下壓的動作)
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1",0);
//0表示播放一次,這里胳膊往下壓就是一次
}
}
//==========================================================================
//
//引擎捕捉鍵盤彈起消息後,將調用到本函數
voiddOnKeyUp(constintiKey)
{
//可以在此添加游戲需要的響應函數
}
//===========================================================================
//
//引擎捕捉到精靈與精靈碰撞之後,調用此函數
voiddOnSpriteColSprite(constchar*szSrcName,constchar*szTarName)
{
//發起者為GoldHook,接受者含有GoldBlock欄位
if(strcmp(szSrcName,"GoldHook")==1&&strstr(szTarName,"GoldBlock")!=NULL)
{
//將金塊錨定在鉤子上
dSpriteMountToSpriteLinkPoint(szTarName,"GoldHook",2);
//使鉤子向初始位置移動,即會拉
dSpriteMoveTo("GoldHook",g_fHookStartPosX,g_fHookStartPosY,g_fEmptyHookSpeed,1);
//復制並保存當前抓取到金塊的名稱
strcpy(szGotGoldName,szTarName);
//發起者為GoldHook,接受者含有GoldBlock欄位
//根據金子大小,計算鉤子的往回收的速度,越大的越慢。
//演算法:之前設置的金子大小為4,6,8,用10減去該大小再除以10,得到3個小數:0.6,0.4,0.2.該小數乘以空鉤子的速度即得到掛接不同金子後的實際速度
floatfWidth=dGetSpriteWidth(szTarName);
floatfSpeed=((10.f-fWidth)/10.f)*g_fEmptyHookSpeed;
Score+=fWidth;
//鉤子往初始位置移動
dSpriteMoveTo("goldhook",g_fHookStartPosX,g_fHookStartPosY,fSpeed,1);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1",0);
g_iGameState=1;
flagnum=1;
}
}
//===========================================================================
//
//引擎捕捉到精靈與世界邊界碰撞之後,調用此函數.
//iColSide:0左邊,1右邊,2上邊,3下邊
voiddOnSpriteColWorldLimit(constchar*szName,constintiColSide)
{
if(strcmp(szName,"GoldHook")!=0)
{
//碰到邊界的為鉤子時
//同樣設置為回拉,只是沒有碰到金子
dSpriteMoveTo(szName,g_fHookStartPosX,g_fHookStartPosY,g_fEmptyHookSpeed,1);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3",0);g_iGameState=1;
flagnum=0;
}
}
voidDrawHookLine()
{
//首先,從礦工精靈上獲取一個纜繩鏈接點作為繩子的起始點
floatfStartX=dGetSpriteLinkPointPosX("GoldMan",1);
floatfStartY=dGetSpriteLinkPointPosY("GoldMan",1);
//繩子終點在鉤子精靈上獲取
floatfEndX=dGetSpriteLinkPointPosX("GoldHook",1);
floatfEndY=dGetSpriteLinkPointPosY("GoldHook",1);
//在這兩點之間劃線.線的顏色紅綠藍值都為50,即灰色
dDrawLine(fStartX,fStartY,fEndX,fEndY,2.f,0,50,50,50,255);
}
⑦ C語言中錯誤的整型變數新人麻煩詳細說明一下謝謝
在上一章我們了解C語言的基本結構並手寫了第一個C程序,當然由於一些操作上的失誤,導致了未能給大家展示編寫程序的截圖。哦,還有小夥伴問我用的什麼軟體,我現在在用dev。
上一章的截圖
那麼我們也要開始對今天的內容進行學習了,今天我們應該開始學習一些C語言中的基本概念,常量與變數、各種類型數據的儲存空間以及C數據的運算。
因為篇幅原因我們將分三小節進行講解。
一、常量與變數
1. 常量
常量是一種固定值,在程序執行期間不會改變。這些固定的值,又叫作字面量。
常量可以是任何的基本數據類型,比如整數常量、浮點常量、字元常量,或字元串字面值,也有枚舉常量。關於這些基本的數據類型我們將在下一小節進行詳細的講解。
常量就像是常規的變數,只不過常量的值在定義後不能進行修改。
整數常量
整數常量可以是十進制、八進制或十六進制的常量。前綴指定基數:0x 或 0X 表示十六進制,0 表示八進制,不帶前綴則默認表示十進制。例如我們定義一個常量a的值是22,那麼用十進製表示是 int a=22;,那麼如果換做用八進製表示呢?此時該語句就會變為 int a=026;,對,下面的語句就是用十六進製表示的 int a=0X16;誒這個時候是不是有點懵?別緊張,我們當時也懵。那麼你是不是想了解怎麼進行單位的換算呢?不過,大可不必,因為基本是用不到的。除非你自己想用。
有時整數常量也可以帶一個後綴,後綴是U和L的組合,U 表示無符號整數,L 表示長整數。後綴可以是大寫,也可以是小寫,U和 L的順序任意。那他們在什麼時候使用呢?
以下是引用的內容:
字面量整數數字如果在int整數范圍內,就默認是int類型的,如果超過了int整數范圍,就默認是long類型的。 int的范圍是負20多億到正20多億,10十位數字,34359738368明顯11位數字,已經超過int范圍,默認就是long型的,後面加不加L都是一樣的。 在int范圍內的整數字面量後加L才有實際意義。
這個東西現階段基本也用不到
浮點常量
浮點常量由整數部分、小數點、小數部分和指數部分組成。您可以使用小數形式或者指數形式來表示浮點常量。
當使用小數形式表示時,必須包含小數點、指數,或同時包含兩者。當使用指數形式表示時,必須包含整數部分、小數部分,或同時包含兩者。帶符號的指數是用 e 或 E 引入的。
字元常量
是括在單引號中,例如,『x』 可以存儲在char類型的簡單變數中。關於char這一關鍵字,我們在後面的小節中會給予解釋。
字元常量可以是一個普通的字元 『x』、一個轉義序列『\t',或一個通用的字元『\u02C0』。
在 C 中,有一些特定的字元,當它們前面有反斜杠時,它們就具有特殊的含義,被用來表示如換行符\n或製表符\t等
下圖是一些轉義字元及其含義,圖片為引用內容
字元串常量
字元串字面值或常量是括在雙引號 "" 中的。一個字元串包含類似於字元常量的字元:普通的字元、轉義序列和通用的字元。當然如果你要打個句子,又沒用漢語,又想讓人看懂,不被打,就可以使用空格做分隔符。舉個栗子,例如你想打個英文「Hello world」結果你搞了個「Helloworld」,這是兩個詞,再多了,嗯那和亂碼也就沒有區別了。
2. 變數
在了解完常量之後我們接下來就是了解一下C語言中的變數。在C語言中變數其實是程序可操作的存儲區的名稱,就像是你我的名字一樣,代表我們這個人,而C的變數就是代表了儲存區。
並且每個變數都有特定的類型,類型決定了變數存儲的大小和布局,該范圍內的值都可以存儲在內存中,運算符可應用於變數上。 變數的名稱可以由字母、數字和下劃線字元組成。它必須以字母或下劃線開頭,劃重點不要嘗試拿數字做開頭,他不對。大寫字母和小寫字母是不同的,因為 C 是大小寫敏感的,換句話說就是假定你定義了一個變數temp,那麼TEMP,Temp並不等於temp,而是作為兩個單獨的其他變數。
還有C中的左值和右值是兩種類型的表達式
以下內容來自引用:
左值:指向內存位置的表達式被稱為左值表達式。左值可以出現在賦值號的左邊或右邊。
右值:術語右值指的是存儲在內存中某些地址的數值。右值是不能對其進行賦值的表達式,也就是說,右值可以出現在賦值號的右邊,但不能出現在賦值號的左邊。
舉個例子
a=3;
a,就是左值,為嘛?他在左邊啊,你不會這都猜不到吧? 那右值你肯定也了解了吧。至於上面的定義也很好理解,就是一個具體的值不能放在左邊。為啥?你仔細想想給一個變數賦予一個值或另一個變數我可以理解,但給一個具體的值賦一個變數這叫個什麼事。
二、各種類型數據的儲存空間
在結束第一節的學習後我們要進行第二節的學習,在這一節我們要了解各種各樣類型的數據。數據類型指的是用於聲明不同類型的變數或函數的一個廣泛的系統。變數的類型決定了變數存儲佔用的空間,以及如何解釋存儲的位模式。這一節將向大家介紹一下一些基本的常用的數據類型。
int,是整型類型。
int a;
就是將變數a定義為一個整型變數,那麼a如果被輸出,那麼a只能是一個整數,換句話數,a只能能精確到個位數。
float、double則恰恰相反,他們則是浮點類型,對於他們而言與int的區別就是,他們可以將數值精確到小數點後。而二者之間的不同則是精確范圍的不同,double要優於float。前者是15位而後者只有6位。
上面三者都與數字有關而下面這一位就有所不同了,他可以定義字元。
char a= 『x』;
則是將a定義為字元『x』,輸出a的時候將會在屏幕上顯示字元『x』,當然有的小夥伴可能輸出的是120啊,78啊,或這空白啊之類的,這是你們犯了一些小小的錯誤。
示例如下
以上這些就是目前前期你大概率會天天碰到的一些數據類型了,當然還有一些像void 類型
枚舉類型,派生類型這些數據類型,在這里就不多作介紹了。有興趣的小夥伴們可以去自行網路一下哦。
三、C數據的運算
C語言中的數據運算形式非常多,基本上你在數學上學到的這里都有,加減乘除,非或與,大於小於等於不等於......
在這里我會為大家介紹一些新一點的運算符
1:++、--:++為自增運算符,--為自減運算符,二者正好相反。以--為例,我們先 int a=10
此時a--將得到9,但要注意a=b--;與a=--b;是兩個操作,a=b--;是先把b的值賦給a在對b進行自減操作,而a=--b;則是先對b進行自減,然後再把b的值賦給a。
還有一種是這種形式的a+=b;其意義為a=a+b;當然類似的運算還有-=,/=,%=......
老規矩詳細的運算規則及解釋我就留在下面了。
以下圖片均來自引用:
那你可能又有疑問產生了,這么多的規則那麼它們之間的運算規則又是什麼呢?廢話不多說,我們直接上圖:
好了今天的內容就到此為止了,如果有什麼疑問可以私信我哦!
⑧ C語言。用*畫出一個sin圖像(可升200金幣)
#define BL 15
#define PI 3.1415926
void main() { double x,y,t; int yy,i,b;
for ( x=0;x<=360;x+=BL ) {
t=PI*x/180; //轉換為弧度製取值
y=sin(t);
yy=y*20+36;//y軸原點位於36字元處
for ( i=0;i<72;i++ ) {
b=0;
if ( i==yy ) { printf("*"); b=1; }
if ( i==35 && b==0 ) { printf("|"); b=1; }
if ( b==0 ) printf(" ");
}
printf("\n");
}
}
⑨ c語言編寫小精靈游戲,小精靈是怎樣計時,並且動起來的,不受按鍵的影響。。。
你得不斷的重畫屏幕,以每秒24幀。比如你要1秒鍾移動一格,就可以一秒鍾重畫一次,但是這樣子人眼可以看到閃動,所以就要求每秒畫24幀
⑩ C語言問題
我還有前四題
(1) 基礎部分(以下8題,任選5題—60%,多做酌情加分)
①分屏處理數據系統:
隨機產生1000個數,並分屏顯示(每行顯示10個數字,每頁顯示10行),而且在每一屏的下方顯示本屏中數據的最大值、最小值和平均值。
提示:循環顯示,在分屏點上輸出press any key to continue…,通過getch()函數讓用戶以按回車鍵的方式進入下一屏。
②擲骰子游戲:
兩人玩骰子,游戲規則如下:
1) 兩人輪流擲骰子,每次擲兩個,每人最多擲10次。
2) 將每人每次的分值累加計分
3) 當兩個骰子點數都為6時,計8分;當兩個點數相等且不為兩個6時,計7分;當兩個點數不一樣時,計其中點數較小的骰子的點數。
4) 結束條件:當雙方都擲10次或經過5次後一方累計分數為另一方的兩倍。最後顯示雙方分數並判定優勝者。
③射擊游戲:
在程序運行時屏幕上方第一行隨機出現一個 符號,要求游戲者輸入一個1-200之間的整數,當用戶輸入一個整數後,一個*立即從屏幕底端的該整數列向上移動,若移動到屏幕的頂端能撞上 符號,則游戲者獲勝;若沒有撞上,則要求再輸入一個整數,共允許輸入5次,如果一直沒有撞上,則認為游戲者輸。
提示:
1)輸入 符號可以採用printf("%c",'\1')
2)顯示*號向上移動:輸出一些空行;輸出*號;以循環的方式增加延時(for(i=0;i<100000;i++););clrscr()清屏重新繪制*號。
④車票問題:
假設某線路的公共汽車共設置26個車站,准備了1元、2元…6元的車票,收費標准為:6站以內票價為1元,每4站票價增加1元。現在隨機生成一些乘客的上車站與下車站,顯示每位乘客應付的票價和單程售出的總票價,並統計幾元的車票賣得最多。