2024.11.12作业

思维导图

课后作业

使用菜单框架完成:

功能1(信息录入):提示并输入学生的个数,并分别录入学生的成绩

功能2(信息输出):输出目前的所有学生的成绩

功能3(求最值):输出所有学生中的最高分和最低分

功能4(查找):提示并输入一个分数,查找该分数是否存在

功能5(及格率):输出学生的及格率(90分及以上及格)

功能6:将成绩进行逆序

功能7:添加一个学生分数到容器末尾

功能8:提示并输入一个位置,修改该位置上的数值(也是输入进来的)

功能9:给出一个位置,删除该位置上的数据 : 1,2,3,4,5 --> 删除第三个元素后 1,2,4,5

功能0:退出系统

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
1
请输入成绩个数
4
请输入成绩
12
23
98
94

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
2
12.00	23.00	98.00	94.00	
***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
3
最低分为12.00
最低分是第1位学生
最高分为98.00
最高分是第3位学生

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
4
输入你要查找的分数
23
你要找的分数在第2个位置

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
5
及格率为50.00%

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
6

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
7
输入要添加的成绩
23

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
8
请输入你要修改的值的位置
3
请输入你要修改的值
97

***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
2
94.00	98.00	97.00	12.00	23.00	
***************************************
请根据功能序号进行功能`的选择:
1.信息录入 
2.信息输出
3.求最值 
4.查找  
5.及格率
6.将成绩逆序 
7.成绩添加到末尾 
8.提示并输入一个位置并修改该位置上的值
9.给出一个位置,删除该位置上的数据 
0.退出系统
0
欢迎下次继续使用本系统,再见!

#include <myhead.h>

int main(int argc, const char *argv[])
{
	double arr[50];//定义成绩数组
	int len = 0;//数组中实际被使用的长度

	while(1)
	{
		int number;
		printf("\n***************************************\n");

		printf("请根据功能序号进行功能`的选择:\n");
		printf("1.信息录入 \n2.信息输出\n3.求最值 \n4.查找  \n5.及格率\n");
		printf("6.将成绩逆序 \n7.成绩添加到末尾 \n8.提示并输入一个位置并修改该位置上的值\n9.给出一个位置,删除该位置上的数据 \n0.退出系统\n");
		scanf("%d",&number);//输入功能序号
		switch(number)
		{
		case 1://信息录入
			{int a1;//输入成绩的个数
				printf("请输入成绩个数\n");

				scanf("%d",&a1);
				printf("请输入成绩\n");
				len += a1;
				for(int i=0;i<a1;i++)
				{
					scanf("%lf",&arr[i]);
				}

			}
			break;
		case 2://信息输出
			{
				for(int i=0;i<len;i++)
				{
					printf("%.2lf\t",arr[i]);
				}
			}
			break;
		case 3://求最高分和最低分
			{
				//求最小值
				double min = arr[0];
				int count = 0;
				for(int i=0;i<len;i++)//循环比较出最小值
				{
					if(arr[i]<min)
					{
						min = arr[i];
						count = i;
					}
				}
				printf("最低分为%.2lf\n",min);
				printf("最低分是第%d位学生\n",count+1);

				//求最大值
				double max = arr[0];
				count = 0;
				for(int i=0;i<len;i++)//循环比较出最大值
				{
					if(arr[i]>max)
					{
						max = arr[i];
						count = i;
					}
				}
				printf("最高分为%.2lf\n",max);
				printf("最高分是第%d位学生\n",count+1);

			}
			break;
		case 4://查找
			{
				double a2;//查找时输入的分数
				int double1 = 0;//记录查找到的个数
				printf("输入你要查找的分数\n");
				scanf("%lf",&a2);
				for(int i=0;i<len;i++)//循环查找
				{
					if(arr[i] == a2)
					{
						double1 ++;
						printf("你要找的分数在第%d个位置\n",i+1);
					}
				}
				if(double1 == 0)
				{
					printf("你查找的分数不存在\n");
				}
			}
			break;
		case 5://输出及格率(90分及以上)
			{
				int people =0;//定义及格人数
				for(int i=0;i<8;i++)
				{
					if(arr[i]>=90)
					{
						people++;
					}
				}
				printf("及格率为%.2f%%\n",1.0*people/len*100);//输出及格率
			}
			break;
		case 6://成绩逆序
			{
				for(int i=0;i<len/2;i++)
				{
					arr[i]= arr[len-1-i] + arr[i];
					arr[len-1-i] = arr[i] - arr[len-1-i];
					arr[i] =arr[i] - arr[len-1-i];
				}
				printf("逆序成功\n");
			}
			break;
		case 7://添加一个学生成绩到末尾
			{
				printf("输入要添加的成绩\n");
				scanf("%lf",&arr[len]);
				len++;
			}
			break;
		case 8://输入一个位置,修改该位置的值
			{
				int location;// 位置
				printf("请输入你要修改的值的位置\n");
				scanf("%d",&location);
				printf("请输入你要修改的值\n");
				scanf("%lf",&arr[location-1]);
			}
			break;
		case 9://给出位置,删除该位置上的数据
			{
					int location;// 位置
				printf("请输入你要删除的值的位置\n");
				scanf("%d",&location);
				for(int i=location;i<len;i++)
				{
					arr[i-1] = arr[i];
					len--;
				}
			}
			break;
		case 0://退出
			{
				printf("欢迎下次继续使用本系统,再见!\n");
			}
			break;
		default :
			{
				printf("输入有误,请从新输入\n");
			}
			break;
		}
		if(number == 0)//退出系统
		{
			break;
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值