1. 程式人生 > >杭電 ACM steps(2)

杭電 ACM steps(2)

Chapter One

Section Two

  • Elevator
    這裡寫圖片描述
#include <stdio.h>
int main()
{
    int a=0,sum=0;
    int N,t;
    while(scanf("%d",&N) !=EOF )
    {
        if(N==0) break;
        t=0;
        for(int i=0;i<N;i++)
        {
            scanf("%d",&a);
            if(a>t) sum=sum
+(a-t)*6+5; else sum=sum+(t-a)*4+5; t=a; } printf("%d\n",sum); sum=0; } return 0; }
  • Biker’s Trip Odometer
    這裡寫圖片描述
    這裡寫圖片描述
#include <stdio.h>
#define p 3.1415927
int main()
{
    float diameter,time;
    int revolutions;
    int i=0;
    float distance=0
,speed=0; while(scanf("%f%d%f",&diameter,&revolutions,&time) != EOF) { i++; if(revolutions==0) break; distance=diameter*revolutions*p; distance=distance/(12*5280); speed=distance/(time/60/60); printf("Trip #%d: %.2lf %.2lf\n",i,distance,speed); } return
0; }
  • 注意輸入的時間time是輪子轉了那麼多圈的總時間
  • A+B Coming
    這裡寫圖片描述
#include <stdio.h>
int main()
{
    int a,b;
    while(scanf("%x%x",&a,&b) != EOF)
    {
        printf("%d\n",a+b);
    }
    return 0;
}
  • scanf 型別字元含義

    型別字元 期望讀入(應輸入的型別)
    d 十進位制整數
    o 八進位制整數
    x或X 十六進位制整數
    s 字串。預設情況下字串以空白符作為結束
    u 無符號十進位制整數
    c 字元。指定c後,通常被跳過的空白符將被讀入,如果非要讀下一個空白符,要使用%1s
  • Financial Management
    這裡寫圖片描述
    這裡寫圖片描述
#include <stdio.h>
#include <math.h>
int main()
{
    float a=0,sum=0;
    for(int i=0;i<12;i++)
    {
        scanf("%f",&a);
        sum=sum+a;
    }
    sum=sum/12;
    sum=sum*1000-4;
    sum=sum/10;
    sum=ceil(sum);
    sum=sum/100;
    printf("$%.2lf\n",sum);
    return 0;
}
  • 注意題目中要求輸出四捨五入。
  • Buildings
    這裡寫圖片描述
    這裡寫圖片描述
#include <stdio.h>
int main()
{
    int campus[100][100];
    int T,n,m,count;
    scanf("%d",&T);
    while(T--)
    {
        count=0;
        scanf("%d%d",&n,&m);
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                scanf("%d",&campus[i][j]);
                if(campus[i][j]==1) count++;
            }
        }
        printf("%d\n",count);
    }
    return 0;
}
  • Balloon Comes!
    這裡寫圖片描述
    這裡寫圖片描述
#include <stdio.h>
int main()
{
    int T;
    int A=0,B=0,flag=0;
    char C;
    float d;
    scanf("%d",&T);
    while(T--)
    {
        getchar();//消除掉換行符帶來的影響,以免C接收不到操作符
        scanf("%c",&C);
        scanf("%d%d",&A,&B);
        if(C=='+') printf("%d\n",A+B);
        else if(C=='-') printf("%d\n",A-B);
        else if(C=='*') printf("%d\n",A*B);
        else if(C=='/')
        {
            flag=A/B;
            d=(float)A/B;
            if(d-flag !=0) printf("%.2lf\n",d);
            else printf("%d\n",flag);
        }
    }
    return 0;
}
  • IBM Minus One
    這裡寫圖片描述
    這裡寫圖片描述
#include <stdio.h>
int main()
{
    int N,i,j=0;
    char S[60];
    char c;
    scanf("%d",&N);
    while(N--)
    {
        i=0;
        if(j==0)getchar();//消除輸入整數後換行符帶來的影響
        scanf("%c",&c);
        while(c != '\n')//利用每個字串後的換行符來結束迴圈
        {
            if(c=='Z') S[i]='A';
            else S[i]=c+1;
            i++;
            scanf("%c",&c);
        }
        printf("String #%d\n",++j);
        for(int k=0;k<i;k++)
            printf("%c",S[k]);
        printf("\n");
        printf("\n");
    }
    return 0;
}
  • ASCII
    這裡寫圖片描述
#include <stdio.h>
int main()
{
    int T;
    int A[1010];
    scanf("%d",&T);
    for(int i=0;i<T;i++)
        scanf("%d",&A[i]);
    for(int i=0;i<T;i++)
        printf("%c",A[i]);
    return 0;
}