0
点赞
收藏
分享

微信扫一扫

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


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

文章目录

  • ​​NEFU锐格实验六[结构体数组]​​
  • ​​知识点​​
  • ​​题目​​
  • ​​5890​​
  • ​​5891​​
  • ​​5892​​
  • ​​5893​​
  • ​​5894​​

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;
}


举报

相关推荐

0 条评论