2020年5月16日 星期六

孤獨月宮的花園

200515 week12

今天的三節課中前後講解了幾題會考題目,以及上週CPE題目解題技巧


區間測速(基礎題)














//長度:1.2公里
//時間:48秒
//秒速:1.2/48
//時速:一小時跑多快
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
int ans=60*60*1.2/a;//(先乘後除)
   //錯誤:(1.2/t)*60*60
printf("%d",ans);
}

區間速度(進階)












#include <stdio.h>
int main()
{ //找最大、最小值
int a=0;//第幾台最快?
int b=999;//最快的時間
for(int i=1;i<=10;i++)
{
int c;
scanf("%d",&c);
if(c<b)//更快!!!
{
b=c;
a=i;//換人當
}
}
int ans=60*60*1.2/b;
printf("%d %d",a,ans);
}

11倍數(CPE一顆星)

利用一些小技巧~












//技巧1:迴圈讀資料
#include <stdio.h>
#include <string.h>
//int只有10位數...
//技巧2:用字串
char line[1001];//最後的1是字串結尾
int main()
{
while(1)
{

scanf("%s",line);
if(strcmp(line,"0")==0) break; //if(n==0)break;
  //技巧2:用字串
  //技巧3:奇數位相加,偶數位相加
int ans1=0,ans2=0;
for(int i=0;line[i]!=0;i++)
  //技巧5:字串迴圈用 line[i]!=0
{
int c=line[i];
if(i%2==0) ans2+=c-'0';//偶位數
else ans1+=c-'0';//奇位數
}//技巧4:如何把讀到的字母,變成數值c-'0'

if((ans1-ans2)%11==0)printf("%s is a multiple of 11.\n",line);
else printf("%s is not a multiple of 11.\n",line);
}
return 0;
}


for迴圈處理陣列的line[0]!=0的方法


#include <string.h>
int main( )
{
    char line[30]="Summer";
    for(int i=0;line[i]!=0;i++)
    {
        char c=line[i];//如果它是0,就結束
        printf("==%c==%d==\n",c,c);
    }
}


字母變數值












#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,c);

}



今天的課程比較著重於題目的講解,但我也比較了解了11倍數的解題技巧。在第三節後半,老師還有講一些玩電玩學程式~angry birds的部分,下次還有機會學到angry birds遊戲時,再將完整版傳上來。



沒有留言:

張貼留言