2000:
char a, b, c;
int t;
while(scanf("%c%c%c", &a, &b, &c) != EOF)
{
if(a>b)
{
t = a;
a = b;
b = t;
}
if(a>c)
{
t = a;
a = c;
c = t;
}
if(b>c)
{
t = b;
b = c;
c = t;
}
printf("%c %c %c\n",a,b,c);
getchar();
}
然后我试着直接排序可以不,然后竟然可以...
char arr[3];
while(cin>>arr)
{
sort(arr, arr+3);
printf("%c %c %c\n", arr[0], arr[1], arr[2]);
}
还可以这样写:
string s;
while(cin>>s)
{
sort(s.begin(),s.end());
printf("%c %c %c\n", s[0], s[1], s[2]);
}
2001:
#include
using namespace std;
int main()
{
double x1, x2, y1, y2;
double dis;
while(~scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2))
{
dis = sqrt(pow(x1-x2,2)+pow(y1-y2,2));
printf("%.2lf\n",dis);
}
return 0;
}
注意变量名要设为double。
2002:
#include
using namespace std;
#define PI 3.1415927
int main()
{
double a, ans;
while(~scanf("%lf", &a))
{
ans = 4*a*a*a*PI/3;
printf("%.3lf\n", ans);
}
return 0;
}
2003:
double a;
while(~scanf("%lf", &a))
{
a = abs(a);
printf("%.2lf\n", a);
}
感觉好水啊...
2004:
int a;
while(~scanf("%d", &a))
{
if(a<0)
printf("Score is error!\n");
else if(a<60)
printf("E\n");
else if(a<70)
printf("D\n");
else if(a<80)
printf("C\n");
else if(a<90)
printf("B\n");
else if(a<=100)
printf("A\n");
else
printf("Score is error!\n");
}
2005:
#include
using namespace std;
int run(int x)
{
if(x%4 == 0 && x%100 != 0 || x%400 == 0)
return 1;
else return 0;
}
int main()
{
int year, month, day, ans;
while(~scanf("%d/%d/%d", &year, &month, &day))
{
ans = day;
if(month>1) ans += 31;
if(month>2)
{
ans += 28;
if(run(year))
ans++;
}
if(month>3) ans += 31;
if(month>4) ans += 30;
if(month>5) ans += 31;
if(month>6) ans += 30;
if(month>7) ans += 31;
if(month>8) ans += 31;
if(month>9) ans += 30;
if(month>10) ans += 31;
if(month>11) ans += 30;
printf("%d\n", ans);
}
return 0;
}
注意判断闰年的写法。
2006:
#include
using namespace std;
#define fr(i, n) for(int i = 0; i < n; i++)
int main()
{
int n, ans;
while(~scanf("%d", &n))
{
ans = 1;
int arr[n];
fr(i, n)//一直写for很麻烦,宏定义了fr
{
scanf("%d", &arr[i]);
if(arr[i]%2 != 0)
ans *= arr[i];
}
printf("%d\n", ans);
}
return 0;
}
然而这里的数组是多余的...请不要学哈戳戳的我。
2007:
#include
using namespace std;
#define fr(i, r, n) for(int i = r; i <= n; i++)
int main()
{
int m, n;
long long ans1, ans2;//在数据很大的时候用long long防止爆数据
while(~scanf("%d%d", &m, &n))
{
if(m>n)//题目根本没说区间是从小到大的
{
int t;
t = n;
n = m;
m = t;
}
ans1 = ans2 = 0;
fr(i, m, n)//从m到n
{
if(i%2 == 0)
ans1 += i*i;
else
ans2 += i*i*i;
}
printf("%lld %lld\n", ans1, ans2);
}
return 0;
}
借此题学到了一种新的两数交换方式:
if(m>n)
m^=n^=m^=n;
原理是利用三次异或达到两数交换的目的。
2008:
#include
using namespace std;
#define fr(i, r, n) for(int i = r; i < n; i++)
int main()
{
int n;
double m;
int ans1, ans2, ans3;
while(scanf("%d", &n))
{
if(!n) break;
ans1 = ans2 = ans3 = 0;
fr(i, 0, n)
{
scanf("%lf", &m);
if(m < 0) ans1++;
else if(m == 0) ans2++;
else ans3++;
}
printf("%d %d %d\n", ans1, ans2, ans3);
}
return 0;
}
2009:
#include
using namespace std;
#define fr(i, r, n) for(int i = r; i < n; i++)
int main()
{
int n, m;
double ans;
while(~scanf("%d%d", &n, &m))
{
ans = n;
double x = n;
fr(i, 1, m)
{
x = sqrt(x);
ans += x;
}
printf("%.2lf\n", ans);
}
return 0;
}
总体来说是没啥难度的,继续写下一篇。