我要成为一名优秀的数据科学家数据结构和算法分析程序员

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;
}
上一篇下一篇

猜你喜欢

热点阅读