杭电 ACM steps(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qinlingheshang/article/details/79511127

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;
}

猜你喜欢

转载自blog.csdn.net/qinlingheshang/article/details/79511127