前一段時(shí)間瘋狂的學(xué)python蚕泽,也逐漸認(rèn)識到了python在某些方面的局限性以及寫python在某些方面對自身鍛煉不足齐遵。于是重新拾起大一曾經(jīng)參加過的acm沮脖,準(zhǔn)備用C好好加強(qiáng)自己造輪子的能力壹无。
大學(xué)四年中脚祟,第一年就學(xué)了C,當(dāng)時(shí)覺得C語言是世界上最好的語言凄诞,用C實(shí)現(xiàn)了不少小功能圆雁。四年多過去,期間用過C++處理圖像帆谍,用jsp寫過后端伪朽,用Java寫過小游戲,后來又用python爬蟲既忆,數(shù)據(jù)分析等等驱负。
回過頭來看看嗦玖,還是覺得C最能鍛煉一個(gè)人的思維能力,算法實(shí)現(xiàn)能力跃脊。去杭電OJ注冊了一個(gè)號宇挫,從第一題開始寫起,沒想到第一題就浪費(fèi)了很長時(shí)間酪术。因此想著寫下刷題日志器瘪,一方面激勵自己,一方面也是和大家一起交流绘雁,共同進(jìn)步橡疼。
我會每周寫一次這方面的感悟,并把這一周所刷的題的答案公布出來庐舟,有共同志趣的朋友欣除,可以一起研究,研究如何用最小的成本實(shí)現(xiàn)最美的程序挪略。
上周六剛剛開始寫历帚,比較生疏,結(jié)果一個(gè)周末就做出了六題杠娱,還是比較水的六題挽牢,算是一個(gè)開始,也算是對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輸入時(shí)后面必須有個(gè)是否等于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()函數(shù)不正確
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()以此來消化輸入三個(gè)字符后打出的很容易忽略的空格太惠。
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,因?yàn)橄到y(tǒng)默認(rèn)3凿渊、4都是整型數(shù)字。
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;
}