CPE題目*1
~Digit Generator~
題目的部分


///技巧1:(不看英文)看sample Imput/Output,有幾筆
///把程式的迴圈寫出來
///技巧2:找關係/答案 Q:I/O , How???
///技巧3:甚麼是generator?
#include <stdio.h>
int main()
{
int T;///Test Case測試資料,有幾筆
scanf("%d",&T);
for(int t=0;t<T;t++)
{
int N;
scanf("%d",&N);
printf("%d\n",ans);
}
}
打了好多程式碼後...
就成功了呢!!!
一起來試試看吧!!!
///技巧1:(不看英文)看sample Imput/Output,有幾筆
///把程式的迴圈寫出來
///技巧2:找關係/答案 Q:I/O , How???
///技巧3:甚麼是generator? 245+2+4+5=256
///技巧4:暴力去試:N試1,2,3,4...N全部試 小到大
///技巧5:generator把小的i變大的
///技巧6:用函式,來簡化程式,不要太多在一起
#include <stdio.h>
int genBig(int n)
{///技巧6:用函式,來簡化程式,不要太多在一起
int ans=n;
while(n>0)
{
ans+=n%10;///用剝皮法,把每一位數加進來
n/=10;///剩下的越來越少
}
return ans;
}
int main()
{
int T;///Test Case測試資料,有幾筆
scanf("%d",&T);
for(int t=0;t<T;t++)
{
int N;
scanf("%d",&N);
int ans=0;///for迴圈前面,還不知道答案
for(int i=1;i<=N;i++)///技巧4:暴力去試
{
if(genBig(i)==N)///小的i=大的,剛好就N,找到答案
{
ans=i;///for迴圈中間,找到答案
break;
}
}
printf("%d\n",ans);///for迴圈後面,把答案拿來用
}
}
讓紅色(的鳥)跟著滑鼠動
PImage imgBird;
void setup()
{
size(500,400);
imgBird=loadImage("bird.png");
imageMode(CENTER);///以中心點為座標
}
void draw()
{
background(255);///背景要清,不要殘影
image(imgBird,mouseX,mouseY,100,100);///鳥的大小100*100
}
拉線+紅色(的鳥)飛出去
PImage imgBird;
void setup()
{
size(500,400);
imgBird=loadImage("bird.png");
imageMode(CENTER);///以中心點為座標
}
float birdX=100,birdY=300,oldX,oldY;
boolean bMoving=false;///if(boolean變數)成立or不成立
void draw()
{
background(255);///以中心點為座標
image(imgBird,birdX,birdY,100,100);///鳥的大小100*100
if(bMoving)line(mouseX,mouseY,oldX,oldY);///如果有點到,再拉動~畫線!!!
}
void mousePressed()
{
if(dist(mouseX,mouseY,birdX,birdY)<50)///距離夠近
{
bMoving=true;///開始移動鳥
oldX=birdX; oldY=birdY;///拉線用的
}
}
void mouseDragged()///判斷有沒有壓到它
{
if(bMoving)///如果有點到,就開始移動鳥
{
birdX=mouseX;birdY=mouseY;
}
}
飛出框外的殘影
PImage imgBird;
void setup()
{
size(500,400);
imgBird=loadImage("bird.png");
imageMode(CENTER);
}
float birdX=100,birdY=300,oldX,oldY,vx=0,vy=0;
boolean bMoving=false;
void draw()
{
///background(255); ///讓你看到殘影
image(imgBird,birdX,birdY,100,100);
if(bMoving)line(mouseX,mouseY,oldX,oldY);
birdX+=vx; birdY+=vy;
}
void mouseReleased()
{
bMoving=false;///不再拉動、移動,要彈出去
///vx,vy代表移動的速度
vx=(oldX-mouseX)/10; vy=(oldY-mouseY)/10;
}
void mousePressed()
{
if(dist(mouseX,mouseY,birdX,birdY)<50)
{
bMoving=true;
oldX=birdX; oldY=birdY;
}
}
void mouseDragged()
{
if(bMoving)
{
birdX=mouseX;birdY=mouseY;
}
}
在方格內彈來彈去的紅色(的鳥)
PImage imgBird;
void setup()
{
size(500,400);
imgBird=loadImage("bird.png");
imageMode(CENTER);
}
float birdX=100,birdY=300,oldX,oldY,vx=0,vy=0;
boolean bMoving=false;
void draw()
{
background(255);///不要殘影背景就要變回來
image(imgBird,birdX,birdY,100,100);
if(bMoving)line(mouseX,mouseY,oldX,oldY);
birdX +=vx; birdY+=vy;
if(birdX>500-50 || birdX<50) vx=-vx;
if(birdY>400-50 || birdY<50) vy=-vy;
}
void mouseReleased()
{
bMoving=false;
vx=(oldX-mouseX)/10; vy=(oldY-mouseY)/10;
}
void mousePressed()
{
if(dist(mouseX,mouseY,birdX,birdY)<50)
{
bMoving=true;
oldX=birdX; oldY=birdY;
}
}
課堂心得:
這次又了解了一題困難的CPE,以及完成一半的angry birds遊戲,很開心呢!






沒有留言:
張貼留言