结构体之检查宿舍卫生 SDUT OJ

结构体是什么

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。

定义变量

定义变量的方式都是大同小异的,都为数据类型+变量名这样一种方式,比如int型,首先得有int这样一个数据类型,然后再用int这个数据类型去定义一个变量,同样的,我们要定义一个结构体变量,必须要有一个结构体类型,然后用这个类型去定义一个变量。结构体变量的定义有多种方式

方法一:定义结构体类型时,同时定义该类型的变量
struct [student] /* [ ]表示结构体名是可选的 */
{
char name[10];
char sex;
int age;
float score;
}stu1, ps, stu[5]; / 定义结构体类型的普通变量、指针变量和数组 */
方法二:先定义结构体类型,再定义该类型的变量
struct student
{
char name[10];
char sex;
int age;
float score;
};
struct student stu1, ps, stu[5]; / 定义结构体类型的普通变量、指针变量和数组 */

方法三:用类型定义符typedef先给结构体类型命别名,再用别名定义变量
typedef struct [student]
{
char name[10];
char sex;
int age;
float score;
}STU;
STU stu1, ps, stu[5]; / 用别名定义结构体类型的普通变量、指针变量和数组 */

SDUT OJ 检查宿舍卫生举例

Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description

不知道是从哪个学校开始兴起的还是哪个领导的决定,学校里每周都要检查宿舍卫生!大家发现没有,检查宿舍卫生是件很奇葩的事情,它剥削了每件物品的意义:垃圾桶里不能有垃圾,挂钩上不能挂东西,桌子上不能放东西,床上不能躺人!!假设检查卫生分为五项成绩:垃圾桶得分、挂钩得分、桌子得分、床铺得分和窗台得分。每项满分20分,总分满分为100分。按照计算机学院奇葩的规定,宿舍成绩在85分以下就要算作不合格。某天,宿管阿姨给了你一个检查完宿舍的打分表,让你帮忙统计下有多少个宿舍没有达到85分(等于85分是可以的),并且统计成绩最高分。
Input

输入包含多组测试数据. 每组数据的第一行为一个整数 T (0 < T <= 100),代表你要统计的宿舍的总数,接下来 T 行每行为 5 个整数,代表宿舍五项成绩的得分。
Output

对于每组测试数据,输出只有一行为一个空格分隔的整数为总分不合格的宿舍数和宿舍总分最高分,如果最高分仍小于85分,则输出为不合格的宿舍数和“No”(不包含引号)。
Sample Input

5
1 2 3 4 5
10 20 10 20 20
20 20 20 20 20
15 15 15 20 20
10 10 10 10 10
Sample Output

3 100

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct dorm
{
    int ljt;
    int gg;
    int zz;
    int cp;
    int ct;
};
int main()
{
    int T, sum[110],i,n,max;
    while(~scanf("%d",&T))
    {
        memset(sum,0,sizeof(sum));
        struct dorm dor;
        for(i = 0; i < T ; i++)
        {
            scanf("%d",&dor.ljt);
            scanf("%d",&dor.gg);
            scanf("%d",&dor.zz);
            scanf("%d",&dor.cp);
            scanf("%d",&dor.ct);
            sum[i] += dor.ljt;
            sum[i] += dor.gg;
            sum[i] += dor.zz;
            sum[i] += dor.cp;
            sum[i] += dor.ct;

        }
        n = 0;
        max = sum[0];
        for(i = 0; i < T; i++)
        {
            if(sum[i] < 85)
                n++;
            if(max < sum[i])
                max = sum[i];//max grades
        }
        if(max < 85)
            printf("%D No\n",n);
        else
            printf("%d %d\n",n,max);

    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值