OJ《程序设计基础II》 实验1- 结构体、共用体和枚举

28 篇文章 2 订阅
17 篇文章 1 订阅

1-1 A - 检查宿舍卫生

#include<stdio.h>
struct score
{
	int a,b,c,d,e;
}f[100];//结构体;
int main()
{
	int n,i,g[100],max=0,h=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d %d %d %d %d",&f[i].a,&f[i].b,&f[i].c,&f[i].d,&f[i].e);
		g[i]=f[i].a+f[i].b+f[i].c+f[i].e+f[i].d;
	}
	for(i=0;i<n;i++)
	{
		if(g[i]<85)
		h++;
	}
	for(i=0;i<n;i++)
	{
		if(g[i]>=85)
		{
			if(g[i]>max)
			max=g[i];
		}
	}
	if(max<85)
	printf("%d No",h);
	else printf("%d %d",h,max);
}

1-2 B - 小 I 的小姐姐

#include<stdio.h>
struct score
{
	int w1,w2,w3;
}f[1001];
int main()
{
	int n,i,g[1001],max=0,x;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d %d %d",&f[i].w1,&f[i].w2,&f[i].w3);
		g[i]=f[i].w1*0.7+f[i].w2*0.2+f[i].w3*0.1;
	}
	for(i=0;i<n;i++)
	{
		if(g[i]>max)
		{
			max=g[i];
			x=i;
		}
	}
	printf("%d",x);
}

1-3 C - 选票统计

#include<stdio.h>
int main()
{
	int n,i,j,a[30000],max=0,x,m,h[1000]={0};
	scanf("%d %d",&m,&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(j=1;j<=m;j++)
	{
		for(i=0;i<n;i++)
		{
		   if(a[i]==j)
		   	h[j]++;
		}
	}
	for(j=1;j<=m;j++)
	{
		if(h[j]>max)
		{
			max=h[j];
			x=j;
		}
	}
	printf("%d\n%d",x,h[x]);
}//这样写好理解一些,PTA,oj都可通过测试。

1-4 D - 小 I 选宾馆

#include<stdio.h>
struct node
{
    int p,c;
}a[5010];
int main()
{
    int n,t=1;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d %d",&a[i].p,&a[i].c);
        if((a[t].p<a[i].p)||(a[t].p==a[i].p&&a[t].c<a[i].c))//一个一个比较,并且加入筛选条件。
            t=i;
    }
    printf("%d",t);
}

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

#include<bits/stdc++.h>
using namespace std;
struct score
{
    int s;
    char q[10];
}a[50],t;//用来交换的t需要写在结构体这边
int main()
{
	int n,i,j;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s %d",a[i].q,&a[i].s);
    }
    for(i=0;i<n-1;i++)
    {
    	for(j=0;j<n-i-1;j++)
    	{
    		if(a[j].s<a[j+1].s)
    		{
    			t=a[j];
    			a[j]=a[j+1];
    			a[j+1]=t;
			}//上操作可以直接交换结构体里的所有内容
		}
	}
    for(i=0;i<n;i++)
    {
    	printf("%s %d\n",a[i].q,a[i].s);
	}
	return 0;
}

1-6 F - 最终排名

#include<stdio.h>
struct score
{
    int s,q;
}a[10000],t;
int main()
{
	int n,i,j;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d %d",&a[i].s,&a[i].q);
    }
    for(i=0;i<n-1;i++)
    {
    	for(j=0;j<n-i-1;j++)
    	{
    		if(a[j].q<a[j+1].q)
    		{
    			t=a[j];
    			a[j]=a[j+1];
    			a[j+1]=t;
			}
		}
	}
    for(i=0;i<n;i++)
    {
    	printf("%d %d\n",a[i].s,a[i].q);
	}
	return 0;
}

1-7 G - 选夫婿1

#include <stdio.h>
struct struff
{
    char name[20];
    int height;
    int weight;
}s1[1001],s2[1001],t;
int main()
{
    int n, i, j;
    int a, b, c, d, m = 0;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        scanf("%s %d %d", s1[i].name, &s1[i].height, &s1[i].weight);
    }
    scanf("%d%d%d%d", &a, &b, &c, &d);
    for(i = 0; i < n; i++)
    {
        if((s1[i].height >= a && s1[i].height <= b) && (s1[i].weight >= c && s1[i].weight <= d))
        {
            s2[m] = s1[i];
            m++;
        }
    }
    for(i = 0; i < m - 1; i++)
    {
        for(j = 0; j < m - i - 1; j++)
        {
            if(s2[j].height > s2[j + 1].height)
            {
                t = s2[j];
                s2[j] = s2[j + 1];
                s2[j + 1] = t;
            }
            else if(s2[j].height == s2[j + 1].height)
            {
                if(s2[j]. weight > s2[j + 1].weight)
                {
                    t = s2[j];
                    s2[j] = s2[j + 1];
                    s2[j + 1] = t;
                }
            }
        }
    }
    if(m == 0)
        printf("No\n");
    else
    for(i = 0; i < m; i++)
    {
        printf("%s %d %d\n", s2[i].name, s2[i].height, s2[i].weight);
    }
    return 0;
}

1-8 H - 老--质价比

#include<stdio.h>
struct score
{
    int q,p;
}s[10000],t;
int main()
{
	int n,i,j;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&s[i].q);
	}
	for(i=0;i<n;i++)
	{
		scanf("%d",&s[i].p);
	}
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(s[j].q>s[j+1].q)
			{
				t=s[j];
				s[j]=s[j+1];
				s[j+1]=t;
			}
			else if(s[j].q==s[j+1].q)
			{
				if(s[j].p<s[j+1].p)
				{
					t=s[j];
				s[j]=s[j+1];
				s[j+1]=t;
				}
			}
		}
	}
	for(i=0;i<n;i++)
	{
		printf("%d %d\n",s[i].q,s[i].p);
	}
	return 0;
}

1-9 I - 共用体练习

#include<stdio.h>
#include<string.h>
union node
{
    int a;
    double b;
    char  c[21];
} w[100001];//共用体
char x[100001][31];//一定要在主函数外定义
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    for(int i=0; i<n; i++)
    {
        scanf("%s",x[i]);
        if(strcmp(x[i],"INT")==0)
        {
            scanf("%d",&w[i].a);
        }
        else if(strcmp(x[i],"DOUBLE")==0)
        {
            scanf("%lf",&w[i].b);
        }
        else if(strcmp(x[i],"STRING")==0)
        {
            scanf("%s",w[i].c);
        }
    }
    for(int i=0; i<m; i++)
    {
        int p;
        scanf("%d",&p);
        if(strcmp("INT",x[p])==0)
        {
            printf("%d\n",w[p].a);
        }
        else if(strcmp("DOUBLE",x[p])==0)
        {
            printf("%.2f\n",w[p].b);
        }
        else if(strcmp("STRING",x[p])==0)
        {
            printf("%s\n",w[p].c);
        }
    }
    return 0;
}

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

#include<stdio.h>
#include<string.h>
enum
{
    red, orange, yellow, green, blue, violet
};
int main()
{
	int n,i;
   char a[30][10];
   scanf("%d",&n);
   for(i=0;i<n;i++)
   {
   	   scanf("%s",a[i]);
       if(strcmp(a[i],"red")==0)
        printf("Rose are red.\n");
        else if(strcmp(a[i],"orange")==0)
            printf("Poppies are orange.\n");
        else if(strcmp(a[i],"yellow")==0)
            printf("Sunflower are yellow.\n");
        else if(strcmp(a[i],"green")==0)
            printf("Grass are green.\n");
        else if(strcmp(a[i],"blue")==0)
            printf("Bluebells are blue.\n");
        else if(strcmp(a[i],"violet")==0)
            printf("Violets are violet.\n");
        else printf("I don't know about the color %s.\n",a[i]);
   }
    return 0;
}

加油加油加油!!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CRAEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值