2020年5月21日 星期四

黃姓小女紙寫程式~~Week12

Week12

程式大會考題目講解!!!

         因為我基本上都搞懂了啦,但是我還是把我比較不懂的解析做一次,因為有些地方老師做得比較有技巧,那就開始囉~~

第一題題目:(SOIT108_Base_008) 基礎題:區間測速 : 題目內容:龜山區萬壽路1段裝設區間測速器,長度1.2公里,輸入1個整數(車輛通過該區間所行駛的秒數),輸出它的時速印出來(只印整數部分,小數部分無條件捨去)。(時速的單位是每小時幾公里( km/hour)。1小時有60分鐘,1分鐘有60秒,輸入的是秒數) 數字範圍:整數1 – 1000  

程式碼:
             #include <stdio.h>
             int main( ){
               int t;
               scanf("%d",&t);
               int ans=60*60*1.2/t;
               printf("%d",ans);
             }

第二題題目:(SOIT108_Advance_007) 進階題:區間測速-超速之王 : 題目內容:龜山區萬壽路1段裝設區間測速器,長度1.2公里,量得10輛車通過的秒數(輸入10個整數),請輸出第幾輛車最快的,並把它的時速印出來(只印整數部分,小數部分無條件捨去)。(時速的單位是每小時幾公里( km/hour)。1小時有60分鐘,1分鐘有60秒,輸入的是秒數) 數字範圍:整數1 – 1000  



程式碼:
              #include <stdio.h>
              int main(){
                int ansN=0;
                int ansT=9999;
                for(int i=1;i<=10;i++){
                  int nowT;
                  scanf("%d",&nowT);
                  if(nowT<ansT){
ansT=nowT;
ansN=i;
                   }
                }
                int ans=60*60*1.2/ansT;
                printf("%d %d",ansN,ans);
             }

第三題:YOU CAN SAY 11 (CPE)

程式碼1(KELYY版):
               #include <stdio.h>
               #include <string.h>
               char a[1001];
               int main(){
                 while(1){
                     scanf("%s",a);
                     if(a[0]=='0')break;
                     int odd=0,even=0;
                     for(int i=0;i<strlen(a);i++){
                       if(i%2==0) even +=a[i]-'0';
                       else odd+=a[i]-'0';
                     }
                     if((even-odd)%11!=0)printf("%s is not a multiple of 11.\n",a);
                     else printf("%s is a multiple of 11.\n",a);
                 }
               }
程式碼2(老師版):
               #include <stdio.h>
               #include <string.h>
               char a[1001];
               int main(){
                 while(1){
                     scanf("%s",a);
                     if( strcmp(a,"0")==0 )break;
                     int odd=0,even=0;
                     for(int i=0;a[i]!=0;i++){
                       if(i%2==0) even +=a[i]-'0';
                       else odd+=a[i]-'0';
                     }
                     if( (even-odd)%11!=0 ) printf("%s is not a multiple of 11.\n",a);
                     else printf ("%s is a multiple of 11.\n",a);
                 }
               }

把字母,變成數值 印出來:

程式碼:
             #include <stdio.h>
             #include <string.h> 
             int main(){
                char c;

                scanf("%c",&c);
                printf("你現在讀到字母是%c,他的值是:%d\n",c,c);
                printf("小技巧:c-'0'會得到:%d\n",c-'0');
            }


字串的迴圈怎麼寫:

程式碼:
             #include <stdio.h>
             int main(){
                char line[30]="Kelly";
                for(int i=0;line[i]!=0;i++){
                   char c=line[i];
                   printf("==%c==%d==\n",c,c);
                 }
             }
憤怒鳥:


程式碼:
             PImage imgBird;
             float birdX=250 , birdY=250 , oldX , oldY , vx=0 , vy=0;
             void set up( ){
                 size(500,500);
                 imgBird = loadImage("bird.png");
                 imageMode(CENTER);
             }
             void draw(){
                 background(255);
                 image( imgBird , birdX , birdY , 100 , 100 );
                 if( mousePressed ) line( oldX , oldY , mouseX , mouseY);
                 birdX+=vx;
                 birdY+=vy;
              }
              void mousePressed( ){
                  oldX=mouseX; oldY=mouseY;
               }

               void mouseDragged( ){
                   birdX=mouseX; birdY=mouseY;
                }
               void mouseReleased(){
                   vx=oldX-mouseX; vy=oldY-mouseY;
               }

沒有留言:

張貼留言