NEFU锐格实验六[结构体数组]

推荐:NEFU大一下C语言锐格实验与作业参考程序目录

NEFU锐格实验六[结构体数组]

知识点

题目知识点
5890结构体数组基本应用
5891结构体数组基本应用
5892结构体数组基本应用
5893结构体数组(略有点恶心的)输入输出
5894结构体数组排序

题目

5890

#include<stdio.h>
#define N 100
struct Student
{
	int s_no;
	double s_score;
};
struct Student stu[N];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		double sum=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d %lf",&stu[i].s_no,&stu[i].s_score);
			sum+=stu[i].s_score;
		}
		for(int i=0;i<n;i++)
			if(stu[i].s_score>sum/n)
				printf("%8d %.1lf\n",stu[i].s_no,stu[i].s_score);
		
	}
	return 0;
}

5891

#include<stdio.h>
#define N 100
struct note
{
    int num,type;
	double score;
	char name[25];
}a[100];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int cnt=0;
		for(int i=0;i<n;i++)
		{
			scanf("%d %s %d %lf",&a[i].num,&a[i].name,&a[i].type,&a[i].score);
			if(a[i].type==1&&a[i].score<60)cnt++;
			if(a[i].type==2&&a[i].score<50)cnt++;
			if(a[i].type==3&&a[i].score<65)cnt++;
		}
		printf("%d\n",cnt);
		for(int i=0;i<n;i++)
			printf("%d %s %d %.2lf\n",a[i].num,a[i].name,a[i].type,a[i].score);		
	}
	return 0;
}

5892

看清题目,我第一把看错题目调了好久hh

#include<stdio.h>
#define N 100
struct Student
{
	char name[N];
	double qm,bj;
	char gb[2],xb[2];//定义成字符串方便输入 
	int lw;
}stu[N];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int max_sum=0,total_sum=0,maxi;
		for(int i=0;i<n;i++)
		{
			int sum=0;
			scanf("%s %lf %lf %s %s %d",&stu[i].name,&stu[i].qm,&stu[i].bj,&stu[i].gb,&stu[i].xb,&stu[i].lw);
			if(stu[i].qm>80&&stu[i].lw>=1)sum+=8000;
			if(stu[i].qm>85&&stu[i].bj>80)sum+=4000;
			if(stu[i].qm>90)sum+=2000;
			if(stu[i].qm>85&&stu[i].xb[0]=='Y')sum+=1000;
			if(stu[i].bj>80&&stu[i].gb[0]=='Y')sum+=850;
			if(sum>max_sum)
			{
				max_sum=sum;
				maxi=i;	
			}
			total_sum+=sum;
		}
		printf("%s\n%d\n%d\n",stu[maxi].name,max_sum,total_sum);
	}
	return 0;
} 

5893

貌似是上学期第一天训练的水题,把c++的代码改成c交一下即可。输入输出比较恶心,读一行要考虑吞空格,输出方式看清楚题目要求

#include <stdio.h>
#include <string.h>
struct stu
{
    int id;
	char name[100];
	double sc;
};
struct stu tj[200];

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int cnt=0;
		memset(tj,0,sizeof tj);
		for(int i=1;i<=n;i++)
		{
			getchar();
            getchar();//吞两次空格
			gets(tj[i].name);
			scanf("%d%lf",&tj[i].id,&tj[i].sc);
			if(tj[i].sc<60)cnt++;
		}
		if(!cnt)puts("They are Great!!");
		else
		{
			printf("%d\n",cnt);
			for(int i=1;i<=n;i++)
				if(tj[i].sc<60)printf("%s\n",tj[i].name);
			for(int i=1;i<=n;i++)
				if(tj[i].sc<60)printf("%d\n",tj[i].id);
			for(int i=1;i<=n;i++)
				if(tj[i].sc<60)printf("%.2lf\n",tj[i].sc);
				
		}
	}
}

5894

正经人谁手写排序呀(后仰,进度到了这边再补一下手写的),顺便吐槽一下锐格编译标准貌似老的一批
qsort函数用法
结构体qsort案例

#include<stdio.h>
#include<stdlib.h>//调用qsort
/*
这样写锐格里,cmp函数会报错
struct stu
{
	int id;
	char name[20];
	double sc;
}inp[100];
*/
typedef struct
{
	int id;
	char name[20];
	double sc;
}stu;
stu inp[100];
int cmp(const void *a,const void *b)//比较函数必须int而且参数必须这样写                              
{
	return (*(stu *)a).sc<(*(stu *)b).sc;
}
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		for(int i=0;i<n;i++)
			scanf("%d %s %lf",&inp[i].id,&inp[i].name,&inp[i].sc);
		qsort(inp,n,sizeof(stu),cmp);
		for(int i=0;i<3;i++)
			printf("%d %s\n",inp[i].id,inp[i].name);
	}
	return 0;
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值