day1 hdoj 1089-1096题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day1 hdoj 1089-1096题解相关的知识,希望对你有一定的参考价值。

首先步入ACM的学习,不得不强烈推荐一套视频

https://space.bilibili.com/3071253#!

这位up主的视频很符合我这种

没学过c++,c语言数组还不很懂,hdoj按顺序刷的想骂人的菜鸡

首先基本输入输出格式 即1089-1096题

下面给出代码,原题请自己搜索

1089

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

这是最基本的a+b问题

唯一巧妙的地方是

    while(scanf("%d%d",&a,&b)!=EOF)

EOF 为 end of file

通俗的讲,这段代码的含义即

可以一直输入a和b的值不会停止

如果是一般的

scanf("%d%d",&a,&b);

计算一次a+b的值后程序就会终止

1090

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

    return 0;
}

这道题的特别之处是你可以先输入一个数n,用来控制可以输入的组数

此处特征代码为

while(n>0)
    {
        n--;
   }

请根据视频自行理解

1091

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

    return 0;
}

此题特殊之处为

如果输入0,程序终止

代码中break以为跳出while循环到return 0;  即程序终止

1092

#include<stdio.h>
int main()
{
    int a,n;
    while(scanf("%d",&n)!=EOF)
    {
        if (n==0)break;int sum=0;         //特别注意sum赋值0的位置
        while(n>0)
            {n--;
            scanf("%d",&a);
            sum+=a;
            }
        printf("%d\n",sum);
    }
    return 0;
}

此题特殊之处为

规定了每组输入数字的个数

与1090题原理相同

1093

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

1090和1092综合

既规定组数,又规定每组中数字的个数

用两次while即可

1094

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

仅给出AC代码

1095

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

隔一行输出

同样仅给出AC代码

1096

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

    return 0;
}

以上综合

这里需要注意,第一次直接打出printf("%d\n\n",sum);时出现PE

可能是以\n\n作为最后结尾格式错误

如不确定情况下,建议使用1096的输出代码

 

以上是关于day1 hdoj 1089-1096题解的主要内容,如果未能解决你的问题,请参考以下文章

基本输入输出练习 hdu1089-1096

HDU——算法练习1000 1089-1096

HDOJ(HDU)1000A + B Problem Java题解

bzoj4415-4417:SHOI2013Day1题解

Hdoj 1007 Quoit Design 题解

Hdoj 1050.Moving Tables 题解