杭電 ACM steps(2)
阿新 • • 發佈:2018-11-22
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;
}