hdu2000 ASCII码排序

  这是一道简单的排序问题,可以直接使用sort函数解决,但是如果使用值交换的方法则需要注意回车的消除。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
char a[4],t;
while(scanf("%c%c%c",&a[1],&a[2],&a[3])!=EOF) {
getchar();
if(a[1]>a[2]) {
t=a[1];
a[1]=a[2];
a[2]=t;
}
if(a[2]>a[3]) {
t=a[2];
a[2]=a[3];
a[3]=t;
}
if(a[1]>a[2]) {
t=a[1];
a[1]=a[2];
a[2]=t;
}
printf("%c %c %c\n",a[1],a[2],a[3]);
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char str[3];
while(cin>>str) {
sort(str,str+3);
cout<<str[0]<<" "<<str[1]<<" "<<str[2]<<endl;
}
return 0;
}

hdu2001 计算两点间的距离

  这是一道简单的计算题,第一次使用了数学函数和双精度的数,没有太多需要注意的地方。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
double x1,y1,x2,y2;
while(cin>>x1>>y1>>x2>>y2) {
double jie=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
printf("%.2lf\n",jie);
}
return 0;
}

hdu2002 计算球体体积

  这是一道求球体体积的计算题,需要注意的是,这里可能会出现整数和实数之间的乘法,需要注意的是题目中的4/3需要写成4.0/3.0,这一点很容易犯错。

  还有一点需要注意的是,我们应当使用题目中所给的pi值,否则结果可能会出现一定的误差。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define PI 3.1415927
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
double r;
while(cin>>r) {
double jie=4.0*PI*r*r*r/3.0;
printf("%.3lf\n",jie);
}
return 0;
}

hdu2003 求绝对值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define PI 3.1415927
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
double r;
while(cin>>r) {
double jie=fabs(r);
printf("%.2lf\n",jie);
}
return 0;
}

#hdu2004 成绩转换

  这道题需要仔细审题,一定要注意分数的范围,无论是上界还是下界。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int grade;
while(scanf("%d",&grade)!=EOF) {
if(grade>=90&&grade<=100) printf("A\n");
else if(grade>=80&&grade<=89) printf("B\n");
else if(grade>=70&&grade<=79) printf("C\n");
else if(grade>=60&&grade<=69) printf("D\n");
else if(grade>=0&&grade<=59) printf("E\n");
else printf("Score is error!\n");
}
return 0;
}

hdu2005 第几天?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<stdio.h>
#include<iostream>
using namespace std;
int runn(int yy)
{
if(yy%400==0||(yy%100!=0&&yy%4==0))
return 1 ;
else return 0 ;
}
int main()
{
int y,m,d,sum;
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF) {
sum = 0 ;
switch(m-1) {
case 11 : sum+=30;
case 10 : sum+=31;
case 9 : sum+=30;
case 8 : sum+=31;
case 7 : sum+=31;
case 6 : sum+=30;
case 5 : sum+=31;
case 4 : sum+=30;
case 3 : sum+=31;
case 2 :if (runn(y)==1) sum+=29;
else sum+=28;
case 1 : sum+=31;
}
sum+=d;
printf("%d\n",sum);
}
return 0;
}

hdu2006 求奇数的乘积

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int n;
int liste[100];
while(scanf("%d",&n)!=EOF) {
int i;
for(i=1;i<=n;i++)
scanf("%d",&liste[i]);
int sum=1;
for(i=1;i<=n;i++)
if(liste[i]%2!=0)
sum*=liste[i];
printf("%d\n",sum);
}
return 0;
}

hdu2007 平方和与立方和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int m,n,t,i;
while(scanf("%d%d",&m,&n)!=EOF) {
if(m>n) {
t=m;
m=n;
n=t;
}
int s1=0,s2=0;
for(i=m;i<=n;i++) {
if(i%2==0) s1=s1+i*i;
else s2=s2+i*i*i;
}
printf("%d %d\n",s1,s2);
}
return 0;
}

hdu2008 数值统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int n;
double liste[100];
while(scanf("%d",&n)&&n) {
for(int i=1;i<=n;i++) {
scanf("%lf",&liste[i]);
}
int a=0,b=0,c=0;
for(int i=1;i<=n;i++) {
if(liste[i]<0) a++;
if(liste[i]==0) b++;
if(liste[i]>0) c++;
}
printf("%d %d %d\n",a,b,c);
}
return 0;
}

hdu2009 求数列的和

  这一题看起来很简单,但是需要进行不同类型数据的运算。这一点还是比较容易犯一些错误的,大家需要注意一些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double sum;
int m,n;
while(scanf("%d%d",&m,&n)!=EOF) {
sum=0.0;
double mm=m;
for(int i=1;i<=n;i++) {
sum+=mm;
mm=sqrt(mm);
}
printf("%.2f\n",sum);
}
return 0;
}

hdu2010 水仙花数

  这是一道很经典的题目,可能需要使用比较多的判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int m,n,flag;
while(scanf("%d%d",&m,&n)!=EOF) {
int i=m;
flag=0;
for(i=m;i<=n;i++) {
int a,b,c;
a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c) {
if(flag==0) {
flag++;
printf("%d",i);
}
else {
flag++;
printf(" %d",i);
}

}
}
if(flag==0) {
printf("no\n");
}
else {
printf("\n");
}
}
return 0;
}