acmer之路(1)三月第三周日志
2018-03-26 本文已影响66人
跌跌撞撞小红豆
前一段时间疯狂的学python,也逐渐认识到了python在某些方面的局限性以及写python在某些方面对自身锻炼不足。于是重新拾起大一曾经参加过的acm,准备用C好好加强自己造轮子的能力。
大学四年中,第一年就学了C,当时觉得C语言是世界上最好的语言,用C实现了不少小功能。四年多过去,期间用过C++处理图像,用jsp写过后端,用Java写过小游戏,后来又用python爬虫,数据分析等等。
回过头来看看,还是觉得C最能锻炼一个人的思维能力,算法实现能力。去杭电OJ注册了一个号,从第一题开始写起,没想到第一题就浪费了很长时间。因此想着写下刷题日志,一方面激励自己,一方面也是和大家一起交流,共同进步。
我会每周写一次这方面的感悟,并把这一周所刷的题的答案公布出来,有共同志趣的朋友,可以一起研究,研究如何用最小的成本实现最美的程序。
三月第三周.png上周六刚刚开始写,比较生疏,结果一个周末就做出了六题,还是比较水的六题,算是一个开始,也算是对acm的致敬吧。
ID 1000
#include <stdio.h>
int main(void)
{
int a, b;
while (scanf("%d%d", &a, &b) != EOF)
printf("%d\n", a + b);
return 0;
}
这题很简单,但是骚就骚在它题目要求了,要end of file。因此用scanf输入时后面必须有个是否等于EOF的判断。
ID 1001
#include <stdio.h>
int main()
{
int n, sum, i;
while (scanf("%d", &n) != EOF)
{
sum = 0;
for (i = 0; i <= n; i++)
{
sum += i;
}
printf("%d\n\n", sum);
}
return 0;
}
ID 2000
#include <stdio.h>
int main()
{
char a, b, c, temp;
while (scanf("%c%c%c", &a, &b, &c) != EOF)
{
getchar();//不加getchar()函数不正确
if (a > b)
{
temp = a;
a = b;
b = temp;
}
if (c <= a)
{
temp = c;
c = b;
b = temp;
temp = b;
b = a;
a = temp;
}
else if (c > a && c < b)
{
temp = c;
c = b;
b = temp;
}
printf("%c %c %c\n", a, b, c);
}
return 0;
}
这一题,前面必须加上getchar()以此来消化输入三个字符后打出的很容易忽略的空格。
ID 2001
#include <stdio.h>
#include<math.h>
int main()
{
double a, b, c, d;
double e;
while (scanf("%lf %lf %lf %lf", &a, &b, &c, &d) != EOF)
{
e = sqrt((c - a)*(c - a) + (d - b)*(d - b));
printf("%.2lf\n", e);
}
return 0;
}
ID 2002
#define PI 3.1415927
#include <stdio.h>
int main()
{
double r;
double V;
while (scanf("%lf", &r) != EOF)
{
V = (4.0/3.0) * PI * r * r * r;
printf("%.3lf\n", V);
}
return 0;
}
这一题要注意,如用4/3得到的是1,因为系统默认3、4都是整型数字。
ID 2003
#include<stdio.h>
int main()
{
double num;
while (scanf("%lf", &num) != EOF)
{
if (num >= 0)
printf("%.2lf\n", num);
else
printf("%.2lf\n", -num);
}
return 0;
}