杭电oj2000-2011 2000  ASCII码排序 2001  计算两点间的距离 2002  计算球体积 2003  求绝对值 2004  求绝对值 2005  第几天? 2006  求奇数的乘积 2007  平方和与立方和 2008  数值统计 2009  求数列的和 2010  水仙花数  2011  多项式求和

 1 #include <stdio.h>
 2 
 3 int main(){
 4     char a,b,c,t;
 5     while(scanf("%c%c%c", &a, &b, &c)!=EOF){
 6         getchar();#必须得加这玩意
 7         if(a>b){
 8             t = a;
 9             a = b;
10             b = t;
11         }
12         if(a>c){
13             t = a;
14             a = c;
15             c = t;
16         }
17         if(b>c){
18             t = b;
19             b = c;
20             c = t;
21         }
22         printf("%c %c %c
", a,b,c);
23     }
24 }

一开始没有添加getchar()函数引发错误,后来查看大佬的wp知道了原因这里引用大佬的解释:

第一次没有加getchar()函数,结果不正确,运行时,第一次输入三个字符排序正确,可是后面再输入时输出就会错误。通过查看别人类似问题的分析,知道了其中缘由。从键盘输入的字符,会存放到缓冲区中,包括回车符。如输入“abc回车”之后,缓冲区中存了有四个字符'a'、'b'、'c'、' ',如果上面程序中没有getchar(),则第一次从缓冲区中提取了三个字符之后,还剩下了一个' ',则下次再输入三个字符时,缓冲区中会把上次剩下的回车符也算进去,这样处理起来就会有问题。getchar()是从缓冲区中读取一个字符,如果只是去除缓冲区中的字符,不需要用赋值表达式,直接使用getchar();即可,当然,使用赋值表达式也可以,如:m=getchar();。上面程序中使用了getchar()之后,就可以把每次输入三个字符之后的回车符吸收掉,这样结果就正确了。   

2001  计算两点间的距离

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main(){
 4     double x1,y1,x2,y2,d;
 5     while(scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2)!=EOF){
 6         d= sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
 7         printf("%.2lf
", d);
 8 
 9     }
10 }

2002  计算球体积

 1 #include <stdio.h>
 2 #define PI 3.1415927
 3 
 4 int main(){
 5     double x, v;
 6     while(scanf("%lf", &x)!=EOF){
 7         v = 4*PI*x*x*x/3;
 8         printf("%.3lf
", v);
 9     }
10 }

2003  求绝对值

 1 #include <stdio.h>
 2 
 3 int main(){
 4     double x,y;
 5     while(scanf("%lf", &x)!=EOF){
 6         y = x;
 7         if(y<0){
 8             y = -x;
 9         }
10         printf("%.2lf
", y);
11     }
12 }

2004  求绝对值

 1 #include <stdio.h>
 2 
 3 int main(){
 4     int x;
 5     while(scanf("%d", &x)!=EOF){
 6         if(x<0 || x>100){
 7             printf("Score is error!
");
 8         }
 9         if(x>=0 && x<60){
10             printf("E
");
11         }
12         if(x>=60 && x<70){
13             printf("D
");
14         }
15         if(x>=70 && x<80){
16             printf("C
");
17         }
18         if(x>=80 && x<90){
19             printf("B
");
20         }
21         if(x>=90 && x<=100){
22             printf("A
");
23         }
24     }
25 }

2005  第几天?

 1 #include <stdio.h>
 2 int main(){
 3     int a,b,c,i,days;
 4     int mon[12] = {31,0,31,30,31,30,31,31,30,31,30,31};
 5     while(scanf("%d/%d/%d", &a,&b,&c)!=EOF){
 6         if((a%4==0 && a%100 !=0) || (a%400 == 0)){
 7             days = 0;
 8             mon[1] = 29;
 9             for(i=0; i<b-1; i++){
10                 days += mon[i];
11             }
12             days += c;
13             printf("%d
", days);
14         }else{
15             days = 0;
16             mon[1] = 28;
17             for(i=0; i<b-1; i++){
18                 days += mon[i];
19             }
20             days += c;
21             printf("%d
", days);
22         }
23     }
24 
25 }

2006  求奇数的乘积

#include <stdio.h>
int main(){
    int n, i ,mul;
    while((scanf("%d", &n))!=EOF){
        mul = 1;
        while(n--){
            scanf("%d", &i);
            if(i%2!=0){
                mul = mul*i;
            }
        }
        printf("%d
", mul);
    }

}

2007  平方和与立方和

这玩意首先要判断输入两个数的大小,不然就是错的

 1 #include <stdio.h>
 2 int main(){
 3     int n,m,squ,cub,i;
 4     while((scanf("%d %d", &n,&m))!=EOF){
 5         squ=0;
 6         cub=0;
 7         if(n<m){
 8             for(i=n;i<=m;i++){
 9                 if(i%2==0){
10                     squ += i*i;
11                 }else{
12                     cub += i*i*i;
13                 }
14             }
15             printf("%d %d
",squ,cub);
16         }else{
17             for(i=m;i<=n;i++){
18                 if(i%2==0){
19                     squ += i*i;
20                 }else{
21                     cub += i*i*i;
22                 }
23             }
24             printf("%d %d
",squ,cub);
25         }
26 
27     }
28 
29 }

2008  数值统计

 1 #include <stdio.h>
 2 int main(){
 3     int n,x,y,z;
 4     double i;
 5     while((scanf("%d", &n))!=EOF){
 6         if(n==0){
 7             continue;
 8         }else{
 9             x=0;
10             y=0;
11             z=0;
12             while(n--){
13                 scanf("%lf", &i);
14                 if(i<0){
15                     x += 1;
16                 }else if(i==0){
17                     y += 1;
18                 }else if(i>0){
19                     z += 1;
20                 }
21             }
22             
23             
24         }
25         printf("%d %d %d
", x,y,z);
26     }
27     return 0;
28 }

2009  求数列的和

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main(){
 4     int m;
 5     double i,sum,n;
 6     while(scanf("%lf %d", &n,&m)!=EOF){
 7         sum = 0;
 8         while(m--){
 9             sum += n;
10             n = sqrt(n);
11             
12         }
13         printf("%.2lf
", sum);
14     }
15 }

2010  水仙花数

最后输出的时候最后不允许有空格,因此第一个数的输出与后面数的输出不一样。

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

 2011  多项式求和

 1 #include <stdio.h>
 2 
 3 int main(){
 4     int n,i;
 5     double a,sum,j;
 6     scanf("%d", &n);
 7     while(n--){
 8         sum = 0;
 9         scanf("%lf",&a);
10         for(i=1;i<=a;i++){
11             if(i%2==0){
12                 j = i;
13                 sum -= 1/j;
14             }else{
15                 j = i;
16                 sum += 1/j;
17             }
18         }
19         printf("%.2lf
", sum);
20     }
21 }