杭电OJ简单题第一阶段总结

杭电oj第一阶段刷题总结

1000 1089—1096、1001 2000—2011、2039
第一道题入门,记得在a b 前加&就行

#include <stdio.h>

int main()
{
    int a=0,b=0;
    while(scanf("%d %d",&a,&b) != EOF)
    {
        printf("%d\n", a+b);
    }
    return 0;
}

1089 这题跟上面的没啥区别

#include <stdio.h>
int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF)
        printf("%d\n",a+b);
    return 0;
}

1090

#include <stdio.h>
int main()
{
    int a,b,n,i;
    scanf("%d",&n); 
    for(i=0;i<n;i++)
        {
        scanf("%d%d",&a,&b);
        printf("%d\n",a+b);
        }

    return 0;
}

1091

#include <stdio.h>
int main()
{
    int a,b;
        while(scanf("%d%d",&a,&b)!=EOF)
            if(a,b)
            printf("%d\n",a+b);
            else
                break;
    return 0;
}

1092

#include <stdio.h>
int main()
{
    int a[100],N,sum,i;
    while(scanf("%d",&N)!=EOF)  \\每行N个数求和
    {
        sum=0;
        if(N==0)   \\N=0时结束
        break;
        else
        for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
        sum=sum+a[i];
    }
    printf("%d\n",sum);
    }
    return 0;
}

1093

#include <stdio.h>
int main()
{
    int a[100],N,sum,i,j,n;
    scanf("%d",&n); \\n行求和
    for(j=0;j<n;j++)
    {
        scanf("%d",&N);  \\N个数求和
        sum=0;
        if(N==0)
        break;
        else
        for(i=0;i<N;i++) \\ 嵌套在for循环中的for循环i和j要记得区分
    {
        scanf("%d",&a[i]);
        sum=sum+a[i];
    }
    printf("%d\n",sum);

    }
    return 0;
}

1094

#include <stdio.h>
int main()
{
    int a[100],n,sum,i;
    while(scanf("%d",&n)!=EOF)   \\没有规定多少行求和时用while(   !=EOF),固定格式,后面用到很多
    {
        sum=0;
        for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        sum=sum+a[i];
    }
    printf("%d\n",sum);

    }
    return 0;
}

1095

#include <stdio.h>
int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        printf("%d\n\n",a+b);  \\间隔两行输出
    }
    return 0;
}

1096
这道题我在格式上面纠结了很久,最后看别人的答案才知道格式的问题

#include <stdio.h>
int main()
{
    int a[100],i,j,n,N,sum;
    scanf("%d",&n);     \\n行求和
    for(i=0;i<n;i++)
    {
        sum=0;
        scanf("%d",&N);
        for(j=0;j<N;j++)
        {
            scanf("%d",&a[j]);      
            sum=sum+a[j];
        }
        printf("%d\n",sum);
        if(i==n-1)  \\最后一行不用输出空格
            break;
            printf("\n");
    }
     return 0;
}

1001

#include <stdio.h>
int main()
{
    int n,sum;
    while(scanf("%d",&n)!=EOF)
    {
    sum=0;
    for(;n;n--) 
    sum+=n;
    printf("%d\n\n",sum+n);
    }
    return 0;
}

2000
按ASCII码值从小到大排序

#include <stdio.h>
int main()
{
    char a,b,c,d,p;
    while(scanf("%c%c%c%c",&a,&b,&c,&d)!=EOF)
    {
    if(a>b) p=a,a=b,b=p; \\字符输入时按ASCII码值比较大小
    if(a>c) p=a,a=c,c=p;
    if(b>c) p=b,b=c,c=p;
    printf("%c %c %c\n",a,b,c);
    }
    return 0;
}

2001
计算两点间的距离

#include<stdio.h>
#include<math.h>
int main()
{
    double x1,y1,x2,y2;
    while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
    {
        printf("%.2f\n",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
    }
    return 0;
}

2002
球的体积

#include<stdio.h>
#include<math.h>
#define PI 3.1415927  \\定义PI的大小等于3.1415927,符号常量,用一个符号名称代表一个常量
int main()
{
    double r,v;
    while(scanf("%lf",&r)!=EOF)
    {
    v=4*PI*r*r*r/3;   \\4/3*PI*r*r*r是错误的 4/3等于1
    printf("%.3f\n",v);
    }
    return 0;
}

2003
求绝对值,结果保留两位小数

#include<stdio.h>
int main()
{
    double num ;
    while(scanf("%lf",&num)!=EOF)
    {

        printf("%.2lf\n",num<0?-num:num);
    }
    return 0;
}

2004
换算成绩等级 switch()

#include<stdio.h>
int main()
{
    float score;
    int c;       
    char  d;    \\等级d
    while(scanf("%f",&score)!=EOF)
    {
        if(score>100||score<0) {printf("Score is error!\n");continue;}
        c=score/10;
        switch(c)
    {
       case 0:
       case 1:
       case 2:
       case 3:
       case 4:
       case 5: d='E';break;
       case 6: d='D';break;
       case 7: d='C';break;
       case 8: d='B';break;
       case 9:
       case 10: d='A';break;
    }
    printf("%c\n",d);
    }
    return 0;
}

2005
一年当中的第几天问题

#include<stdio.h>
int main()
{
    int y,m,d,i,sum;
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};  \\平年时每个月的天数
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31}; \\闰年时每个月的天数
    while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
    {
        sum=0;      \\清洗一下数据
        if(y%400==0||(y%4==0&&y%100!=0))   \\闰年的判断方法
        {
            for(i=0;i<m-1;i++) {sum=sum+b[i]; }
            sum=sum+d;
            printf("%d\n",sum);
        }
        else
        {
            for(i=0;i<m-1;i++) {sum=sum+a[i]; }
            sum=sum+d;
            printf("%d\n",sum);
        }
    }
    return 0;
}

2006
求n个整数中所有奇数的乘积

#include<stdio.h>
int main()
{
    int n,a[10],sum,i;
    while(scanf("%d",&n)!=EOF)
    {
        sum=1; //假定每行存在一个奇数,设sum=1
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]%2)  \\判断是否为奇数
                sum*=a[i];
        }
        printf("%d\n",sum);
    }
    return 0;
}

2007
一段连续的整数中所有偶数的平方和以及所有奇数的立方和

#include<stdio.h>
int main()
{
    int n,m,i,p;
    int sum1,sum2;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        sum1=0;
        sum2=0;
        if(n>m){p=n;n=m;m=p;}  \\小数在前
        for(i=n;i<=m;i++)
    {
        if(i%2==0)
            sum1+=i*i;  \\偶数的平方和
        else
            sum2+=i*i*i; \\奇数的立方和
    }
    printf("%d %d\n",sum1,sum2);
    }
    return 0;
}

2008
n个数中,正数、零、负数的个数

#include<stdio.h>
int main()
{
    int n,i;
    int a,b,c;
    float m;
    while(scanf("%d",&n)&&n!=0)
    {
        a=0,b=0,c=0;
        for(i=0;i<n;i++)
        {
            scanf("%f",&m);//注意数据类型
            if(m<0) a++;
            if(m==0) b++;
            if(m>0) c++;
        }
        printf("%d %d %d\n",a,b,c);
    }
    return 0;
}

2009
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和

#include<stdio.h>
#include<math.h>
int main()
{
    int m,i,p;  //n为数列的第一项,m为前m项
    double sum,n;
    while(scanf("%lf%d",&n,&m)!=EOF)
    {
        sum=n;
        for(i=0;i<m-1;i++)
        {
            n=sqrt(n);
            sum=sum+n;
        }
        printf("%.2lf\n",sum);
    }
    return 0;
}

2010
水仙花数

#include<stdio.h>
#include<math.h>
int main()
{
    int n,m,i,num;
    int a,b,c;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        num=0;
        for(i=n;i<=m;i++)
        {
            a=(i%10);  \\个位
            b=(i%100/10); \\十位
            c=(i/100);   \\百位
            if(i==a*a*a+b*b*b+c*c*c)
            {
                if(num>=1)
                    printf(" ");    数据间的空格
                num++;
                printf("%d",i);
            }
        }
        if(num==0)
            printf("no\n");
        else
            printf("\n");   
    }
    return 0;
}

2011
多项式求和

#include<stdio.h>
#include<math.h>
int main()
{
    int n,i,a,j;
    double sum,p;
    while(scanf("%d",&n)!=EOF)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&a);
            sum=0,p=0;  \\数据清洗
            for(i=1;i<a+1;i++)    \\第一个数从1开始,a个数
            {
                if(i%2==0) p=(1.00/i)*(-1); //只能用1.00才能输入double类型的p
                if(i%2!=0) p=(1.00/i);
                sum+=p;
            }
            printf("%0.2lf\n",sum);
        }
    }
     return 0;
}

2039
判断三条边能否组成三角形

#include<stdio.h>
int main()
{
    int n,i;
    double a,b,c;
    scanf("%d",&n);
    {
        for(i=0;i<n;i++)
        {
            scanf("%lf%lf%lf",&a,&b,&c);
        if((a+b>c)&&(a+c>b)&&(b+c>a))    任意两边之和大于第三边等价于任意两边之差小于第三边
        printf("YES\n");
        else printf("NO\n");
        }
    }
    return 0;
}


有问题可以评论留言,第一次发帖,纪念一下,本人菜鸟程序猿一枚

发布了28 篇原创文章 · 获赞 7 · 访问量 1187

猜你喜欢

转载自blog.csdn.net/weixin_44433678/article/details/94457064
今日推荐