SDUT 2019 级程序设计基础(B)II 实验1--结构体、共用体和枚举

快期末了 好久没用过C,重新打一下程设二的内容找找手感,顺便几篇博客,简单题直接过,需要思考的会有注释或者思路,重要知识点会总结,祝大家期末都AK!!!
总题目链接

1-1检查宿舍卫生

#include 
#include 

int main()
{
    int t,max=-1,ans=0;
    while(~scanf("%d",&t))
    {
        int max=-1,ans=0;
        while(t--)
        {
            int sum,a,b,c,d,e;
            scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
            sum=a+b+c+d+e;
            if(sum<85)
                ans++;
            max= sum>max? sum:max;
        }
        if(max<85)
            printf("%d No\n",ans);
        else
            printf("%d %d\n",ans,max);
    }

    return 0;
}

1-2小 I 的小姐姐

#include 
#include 

int main()
{
    int n,w1,w2,w3,max,index;
    while(~scanf("%d",&n))
    {
        max=-1;
        int sum;
        for(int i=0; i<n; i++)
        {
            scanf("%d %d %d",&w1,&w2,&w3);
            sum= w1*0.7+w2*0.2+w3*0.1;
            if(max<sum)
            {
                max=sum;
                index=i;
            }
        }
        printf("%d\n",index);
    }
    return 0;
}

1-3选票统计

运用桶排的方法很快就能得出答案

#include 
#include 
int tong[1010];
int main()
{
    int n,m;
    scanf("%d %d",&m,&n);
    for(int i=0; i<n; i++)
    {
        int x;
        scanf("%d",&x);
        tong[x]++;
    }
    int max=-1,index;
    for(int i=1;i<=m;i++)
    {
        if(tong[i]>max)
        {
            max=tong[i];
            index=i;
        }
    }
    printf("%d\n%d",index,max);
    return 0;
}

1-4小 I 选宾馆

#include 
#include 

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int maxp=-1,maxc=-1,index,p,c;
        for(int i=1; i<=n; i++)
        {
            scanf("%d %d",&p,&c);
            if(p>maxp||p==maxp&&c>maxc)
            {
                maxc=c;
                maxp=p;
                index=i;
            }
        }
        printf("%d\n",index);
    }
    return 0;
}

1-5小鑫の日常系列故事(十)——排名次

#include 
#include 
struct node
{
    char name[11];
    int score;
}a[51],t;
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%s %d",a[i].name,&a[i].score);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
            if(a[j].score<a[j+1].score)
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(int i=0;i<n;i++)
        printf("%s %d\n",a[i].name,a[i].score);
    return 0;
}

1-6最终排名

#include 
#include 
struct node
{
    int ID;
    int score;
} a[10010],t;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        for(int i=0; i<n; i++)
        {
            scanf("%d %d",&a[i].ID,&a[i].score);
        }
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n-i-1; j++)
            {
                if(a[j].score<a[j+1].score)
                {
                    t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
        }
        for(int i=0; i<n; i++)
            printf("%d %d\n",a[i].ID,a[i].score);
    }

    return 0;
}

1-7选夫婿1

先把原始信息存入a结构体数组中,然后挑选出符合条件的放入b数组,对b按要求冒泡,最后遍历输出

#include 
#include 
struct node
{
    char name[21];
    int h,w;
} a[1001],t,b[1001];
int main()
{
    int n,m=0;
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
        scanf("%s %d %d",&a[i].name,&a[i].h,&a[i].w);
    }
    int e,f,c,d;
    scanf("%d %d %d %d",&e,&f,&c,&d);
    for(int i=0;i<n;i++)
    {
        if(a[i].h>=e&&a[i].h<=f&&a[i].w>=c&&a[i].w<=d)
            b[m++]=a[i];
    }
    for(int i=0; i<m; i++)
    {
        for(int j=0; j<m-i-1; j++)
        {
            if(b[j].h>b[j+1].h||b[j].h==b[j+1].h&&b[j].w>b[j+1].w)
            {
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
            }
        }
    }
    if(m==0) printf("No\n");
    for(int i=0; i<m; i++)
        printf("%s %d %d\n",b[i].name,b[i].h,b[i].w);
        

    return 0;
}

1-8老–质价比

#include 
#include 
struct node
{
    int wi,pi;
} a[1001],t;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
            scanf("%d",&a[i].wi);
        for(int i=0;i<n;i++)
            scanf("%d",&a[i].pi);
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n-i-1; j++)
            {
                if(a[j].wi>a[j+1].wi||a[j].wi==a[j+1].wi&&a[j].pi<a[j+1].pi)
                {
                    t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
        }
        for(int i=0; i<n; i++)
            printf("%d %d\n",a[i].wi,a[i].pi);
    }
    return 0;
}

1-9共用体练习

#include 
#include 
#include
union node
{
    int x;
    double b;
    char s[30];
} a[100001];
int main()
{
    char type[100010][10];
    int m,n;
    scanf("%d %d",&n,&m);
    for(int i=0; i<n; i++)
    {
        scanf("%s",type[i]);
        if(strcmp(type[i],"INT")==0)
            scanf("%d",&a[i].x);
        else if(strcmp(type[i],"DOUBLE")==0)
            scanf("%lf",&a[i].b);
        else if(strcmp(type[i],"STRING")==0)
            scanf("%s",a[i].s);
    }
    while(m--)
    {
        int k;
        scanf("%d",&k);
        if(strcmp(type[k],"INT")==0)
            printf("%d\n",a[k].x);
        if(strcmp(type[k],"DOUBLE")==0)
            printf("%.2lf\n",a[k].b);
        if(strcmp(type[k],"STRING")==0)
            printf("%s\n",a[k].s);

    }
    return 0;
}

1-10简单枚举类型——植物与颜色

#include
#include
enum color {Rose,Poppies,Sunflower,Grass,Bluebells,Violet};
int main()
{
    char s[31];
    int t;
    while(scanf("%s",s)!=EOF)
    {
        t=100;
        if(strcmp(s,"red")==0) t=0;
        else if(strcmp(s,"orange")==0) t=1;
        else if(strcmp(s,"yellow")==0) t=2;
        else if(strcmp(s,"green")==0) t=3;
        else if(strcmp(s,"blue")==0) t=4;
        else if(strcmp(s,"violet")==0) t=5;
        if(t>=0&&t<=5)
        {
            switch((enum color)t)
            {
                case 0:printf("Rose are red.\n");break;
                case 1:printf("Poppies are orange.\n");break;
                case 2:printf("Sunflower are yellow.\n");break;
                case 3:printf("Grass are green.\n");break;
                case 4:printf("Bluebells are blue.\n");break;
                case 5:printf("Violets are violet.\n");break;
            }
        }
        else printf("I don't know about the color %s.\n",s);
    }
    return 0;
}

小结:

结构体章节的题较简单,很多题其实用不到结构体,题目主要考察对排序的掌握情况以及题目信息的获取。

你可能感兴趣的:(程序设计基础(B)II)