Bootstrap

2019年秋季学期noi备份|1.6 一维数组

1.6 一维数组(part1)

1.6.1与指定数字相同的数的个数

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,m,i,ctr=0;
    int ray[105];
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&ray[i]);
    scanf("%d",&m);
    for(i=1;i<=n;i++)
         if(ray[i]==m) ctr++;
    printf("%d",ctr);


    return 0;
}

1.6.2陶陶摘苹果

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ah[15];
    int th,i,ctr=0;
    for(i=1;i<=10;i++)
        scanf("%d",&ah[i]);
    scanf("%d",&th);
    for(i=1;i<=10;i++)
    {
        if(ah[i]<=th+30) ctr++;
    }
    printf("%d",ctr);
    return 0;
}

1.6.3计算书费

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num[15]={0};
    double price[15]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};
    int i;
    double sum=0;
    for(i=0;i<10;i++)
    {
        scanf("%d",&num[i]);
        sum+=num[i]*price[i];
    }
    printf("%.1lf",sum);
    return 0;
}

1.6.4数组逆序重放

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i,a[105],b[105];
    scanf("%d",&n);
    for(i=0;i<n;i++)
     {
         scanf("%d",&a[i]);
         b[n-i]=a[i];
     }
    for(i=1;i<=n;i++)
        printf("%d ",b[i]);
    return 0;
}

1.6.5年龄与疾病

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,n,ag=0;
    double age[5]={0};
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
         scanf("%d",&ag);
         if(ag>=0 && ag<=18) age[1]++;
         if(ag>=19 && ag<=35) age[2]++;
         if(ag>=36 && ag<=60) age[3]++;
         if(ag>=61) age[4]++;
    }
    for(i=1;i<=4;i++)
    {
        age[i]/=n;
        age[i]*=100;
        printf("%.2lf%%\n",age[i]);
    }

    return 0;
}

1.6.7有趣的跳跃

#include <stdio.h>
#include <stdlib.h>

int comp(const void*a, const void*b)
{
    return *(int*)a-*(int*)b;
}

int main()
{
    int n,i,bl=0,m;
    int in[3005]={0};
    int leap[3005]={0};
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&in[i]);
    if(n>=1)
    {
        for(i=1;i<n;i++)
        {
            m=in[i]-in[i-1];
            if(m<0) m=-m;
            leap[i-1]=m;
        }
        qsort(leap,n-1,sizeof(int),comp);
        for(i=1;i<n;i++)
        {
            if(leap[i-1]!=i)
                bl=1;//not jolly
        }
    }
    if(bl==1) printf("Not jolly");
    else printf("Jolly");
    return 0;
}

1.6.8石头剪刀布

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n,na,nb,xa,xb;
    int i,ca=0,cb=0;
    int a[105],b[105];
    scanf("%d%d%d",&n,&na,&nb);
    for(i=0;i<na;i++)
        scanf("%d",&a[i]);
    for(i=0;i<nb;i++)
        scanf("%d",&b[i]);

    for(i=0;i<n;i++)
    {
        xa=i%na;
        xb=i%nb;

        if((a[xa]-b[xb]==-2)||(a[xa]-b[xb]==-3)||(a[xa]-b[xb]==5))
            ca++;
        if((a[xa]-b[xb]==2)||(a[xa]-b[xb]==3)||(a[xa]-b[xb]==-5))
            cb++;
    }
    if(ca>cb)
        printf("A");
    else if(ca==cb)
        printf("draw");
    else printf("B");
    return 0;
}

1.6.9向量点积计算

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n;
    long long int ans=0;
    int i;
    int a[1005],b[1005];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
        scanf("%d",&b[i]);
    for(i=0;i<n;i++)
        ans+=a[i]*b[i];
    printf("%lld",ans);
    return 0;
}

1.6.10大整数加法

1.6.11大整数减法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char x[205],y[205];
    int a[205]={0},b[205]={0};
    int ans[205]={0};
    int la=0,lb=0,adding=0;
    int i,t;
    scanf("%s",x);
    scanf("%s",y);
    la=strlen(x);
    lb=strlen(y);
    for(i=0;i<la;i++)
    {
        a[i]=x[la-i-1]-'0';
        ans[i]=a[i];
    }
    for(i=0;i<lb;i++)
        b[i]=y[lb-i-1]-'0';

    //输入完毕

    for(i=0;i<=lb+1;i++)
    {

        ans[i]=a[i]-b[i]-adding;
        adding=0;
        if(ans[i]<0)
        {
            ans[i]+=10;
            adding=1;
        }
    }
    while(ans[la]==0)
        la--;
    for(i=la;i>=0;i--)
        printf("%d",ans[i]);
    return 0;
}

1.6.12计算2的N次方

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n;
    int ans[1000]={0};
    int len=1,i,t,adding=0;
    ans[0]=1;
    scanf("%d",&n);

    for(t=0;t<n;t++)
    {
        if(ans[len-1]>=5) len++;
        for(i=0;i<len;i++)
        {
            ans[i]*=2;
            ans[i]+=adding;
            adding=0;
            if(ans[i]>=10)
            {
                ans[i]%=10;
                adding=1;
            }
        }

    }
    for(i=len-1;i>=0;i--)
        printf("%d",ans[i]);
    return 0;
}
;