2020年5月22日 星期五

程式設計Week13

函數反序排列數字

程式碼:

#include <stdio.h>
int main( )
{
int n;
scanf("%d",&n);
int ans=0;
while(n>0)
{
int now=n%10;  //用now存取末位數
n/=10;
ans*=10;
ans+=now; 
}
printf("%d\n",ans);
}

2進位轉10進位

程式碼:

#include <stdio.h>
int main( )
{
int n;
scanf("%d",&n);
int n1=n%10;
int n2=(n/10)%10;
int n3=(n/100)%10;
int n4=(n/1000)%10;
int ans=n1*1+n2*2+n3*4+n4*8;   //將4位數分開分別乘上2進制倍數
printf("%d\n",ans);
}

CPE練習題(1☆)

題目:

程式碼:
#include <stdio.h>
int genBig(int n)
{
     int ans=n;
     while(n>0)
     {
         ans+=n%10;
         n/=10;
     }
     return ans;
}

int main( )
{
    int T;
    scanf("%d",&T);
    for(int t=0;t<T;t++)
    {
        int N;
        scanf("%d",&N);
        int ans=0;
        for(int i=1;i<=N;i++)
        {
            if(genBig(i)==N)
            {
                ans=i;
                break;
            }
        }
        printf("%d",ans);
    }
}

 憤怒鳥(彈射)

程式碼:

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;    //拉線用
   }
}
void mouseDragged( )
{
   if(bMoving)
   {
      birdX=mouseX;     //如果點到,開始移動憤怒鳥
      birdY=mouseY; 
   }
}


沒有留言:

張貼留言