首页 > 其他分享 >[每天例题]蓝桥杯 C语言 谁拿了最多奖学金

[每天例题]蓝桥杯 C语言 谁拿了最多奖学金

时间:2023-05-07 09:44:04浏览次数:33  
标签:&& int sum C语言 蓝桥 学生 student 例题 奖学金

谁拿了最多奖学金

题目

 

 

 题目要求

1.只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。

2.每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。

姓名是由大小写英文字母组成的长度不超过 20 的字符串(不含空格);期末平均成绩和班级评议成绩都是 0 到 100 之间的整数(包括 0 和 100 );是否是学生干部和是否是西部省份学生分别用一个字符表示,Y 表示是,N 表示不是;发表的论文数是 0 到 10 的整数(包括 0 和 10 )。每两个相邻数据项之间用一个空格分隔。

3.求

(1)获得最多奖金的学生的姓名。

(2)这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。

(3)这 N 个学生获得的奖学金的总数。

思路分析

1.由于一名学生所需要的信息过多,我们可以创建一个结构体将学生的信息包含在里面。

2.利用for循环输入每一位学生的信息,用if判断是否符合奖学金条件

3.使用for和if共同判定出奖学金最多的学生,按照输入顺序可以筛选出输入靠前的学生。

4.再通过for进行统计一共发放多少奖学金

代码

#include<stdio.h>
#include<stdlib.h>
struct stu
{
	char name[20];
	int qimo;
	int banji;
	char ganbu;
	char xibu;
	int num;
}
student[99];

int main()
{
	int n;
	int i;
	int sum[99]={0};
	int max,maxlocation=0;
	int s=0;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s %d %d %c %c %d",&student[i].name,&student[i].qimo,&student[i].banji,&student[i].ganbu,&student[i].xibu,&student[i].num);
		if(student[i].qimo>80&&student[i].num>=1)
		{
			sum[i]+=8000;
		}
		if(student[i].qimo>85&&student[i].banji>80)
		{
			sum[i]+=4000;
		}
		if(student[i].qimo>90)
		{
			sum[i]+=2000;
		}
		if(student[i].qimo>85&&student[i].xibu=='Y')
		{
			sum[i]+=1000;
		}
		if(student[i].banji>80&&student[i].ganbu=='Y')
		{
			sum[i]+=850;
		}
	}
	max=sum[0];
	for(i=1;i<n;i++)
	{
		if(sum[i]>max)
		{
			max=sum[i];
			maxlocation=i;
		}
	}
	for(i=0;i<n;i++)
	{
		s+=sum[i];
	}
	printf("%s\n%d\n%d\n",student[maxlocation].name,max,s);
	return 0;
}

运行结果

 

标签:&&,int,sum,C语言,蓝桥,学生,student,例题,奖学金
From: https://www.cnblogs.com/hcrzhi/p/17375245.html

相关文章

  • P8655 [蓝桥杯 2017 国 B] 发现环 题解
    题目概述题目传送门在一棵树中新增一条边,使得这个图产生一个环,求在环上的点。思路:拓补排序对于这道题显然不能生搬硬套拓补排序的模板。这道题中的图是一个无向图,而拓补排序却是处理有向图的一种思想。不难想到可以将无向图转化为有向图,即将对于每条无向边变换为双向建边,就......
  • 带你用C语言轻松实现三子棋
    一.前言本章我们用C语言来实现一个初级的三子棋小游戏,三子棋想必大家都玩过,只要每一行或每一列或对角线三个棋相同,那么便获得胜利,由此我们分析下棋的步骤与获胜判断,来构建一个C语言三子棋的代码框架。游戏实现我们分装两个.c(代码主函数与函数定义源代码)后缀的文件和一个.h......
  • [每天例题]蓝桥杯 C语言 最小公倍数
    最小公倍数题目 思路分析方法一:建立两个for循环,第一个for循环求最小公倍数,第二个for循环进行1至n的排列方法二:/*最小公倍数n项可以计算前面的n-1项例如;1、2、3、4、5、6的最小公倍数=1、2、3、4、5的最小公倍数和6的最小公倍数我们定义一个贡献度:贡献度(ai)%贡献度(ai-1)==0......
  • 指数分布和泊松过程(Exponential Distribution and Poisson Process)--2(指数分布的例
    例1Supposethatcustomersareinlinetoreceiveservicethatisprovidedsequentiallybyaserver;wheneveraserviceiscompleted,thenextpersoninlineenterstheservicefacility.However,eachwaitingcustomerwillonlywaitanexponentiallydist......
  • C语言--指针的进阶3
    指向函数指针数组的指针intAdd(intx,inty){ returnx+y;}intmain(){ //pf函数指针 int(*pf)(int,int)=Add; //pfArr函数数组指针 int(*pfArr[4])(int,int)={Add}; //ppfArr是一个指向[函数指针数组]的指针 int(*(*ppfArr)[4])(int,int)=&pfArr;......
  • 1分钟了解C语言正确使用字节对齐及#pragma pack的方法
    ​C/C++编译器的缺省字节对齐方式为自然对界。即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第......
  • C语言中的内存管理
    C语言中定义了四个内存区间:https://mp.weixin.qq.com/s/MtwQrp752qLMwDAFrBYm0w代码区;全局变量和静态变量区;局部变量区即栈区;动态存储区即堆区。1>栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2>堆区(heap) —一般由......
  • C语言从入门到精通
    1.C语言较为底层,更接近硬件,效率较高,因此更合适用于开发操作系统;2.C语言支持函数操作,但它并不属于函数式编程。函数式编程可以理解为高级的函数操作,例如,函数的嵌套定义、匿名函数、闭包、惰性求值等等,但C语言中,基本上只能常规的定义函数、调用函数;常量、变量和关键字数据类......
  • C语言指针说明
    地址 说到指针,先说说地址,看一段小程序#include"stdio.h"intmain(){  inta=10;  int*p=&a;  printf("%p\n",p);  return0; }//output0x7fff8b6a378c"0x7fff8b6a378c"是系统RAM中的特定位置,通常以十六进制的数字表示,系统通过这个地址,就可......
  • C语言文件操作详解
    C语言中没有输入输出语句,所有的输入输出功能都用ANSIC提供的一组标准库函数来实现。文件操作标准库函数有:文件的打开操作fopen打开一个文件文件的关闭操作fclose关闭一个文件文件的读写操作fgetc从文件中读取一个字符......