zoukankan      html  css  js  c++  java
  • 杭电oj2000-2011

    2000  ASCII码排序

     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 }

     

  • 相关阅读:
    基于Kubernates微服务案例
    领导人怎样带领好团队
    前端性能核对表Checklist-2018
    国际巨头互联网公司一些运营与管理思路
    IT研发工程师职业规划
    高性能风控数据平台设计
    基础设施DevOps演进之路
    2017-2018年Scrum状态调查报告
    大型互联网系统的监控流水线
    小程序【情书与歌】一小时过审经验小谈
  • 原文地址:https://www.cnblogs.com/Ragd0ll/p/10395878.html
Copyright © 2011-2022 走看看