【C语言基础】练习:结构体统计学生成绩,快递费用计算

每日练习一:结构体统计学生成绩

题目要求:有3名学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入3个学生的数据,打印出每个学生的平均成绩,以及最高分学生的数据(包括学号、姓名、3门课的成绩、平均分数)。

 #include<stdio.h>
 #define N 2
 struct student
 {
 	char id;
 	char name[10];
 	int score[3];//暂且设置输入三科成绩 
 }stu[N];
 int main()
 {
 	int i,j;//i和学生关联,j和成绩关联 
	int max=0;
	int sum[10]={0};
	float average[N];
	
	
 	//赋值模块 
 	for(i=0;i<N;i++)
 	{
	  	printf("请输入学号 姓名:\n");
 		scanf("%d %s",&stu[i].id,&stu[i].name);
 		for(j=0;j<3;j++)
 		{
 		   printf("请输入第%d科成绩:\n",j+1);
 		   scanf("%d",&stu[i].score[j]);
 	    }
	}
	
	//计算每个学生总成绩和平均成绩 
	for(i=0;i<N;i++)
	{
		for(j=0;j<3;j++)
		{
			sum[i]+=stu[i].score[j];//每个学生的总成绩 
		}
		average[i]=sum[i]/3.0; //平均成绩 
	}
	
    //输出总成绩最高的学生姓名 各科成绩 总成绩
	for(i=0;i<N;i++)
	{
		if(sum[max]<sum[i])
		{
			max=i;
		}
	}
	
    printf("\n姓名    总分    平均成绩\n");
	for(i=0;i<N;i++)
	{
    	printf("%s   %d    %.1f",stu[i].name,sum[i],average[i]);
    	printf("\n");
    }
    printf("分数最高的学生信息如下:\n");
    printf("学号      姓名      成绩\n");
    printf("%d      %s ",stu[max].id,stu[max].name);
    for(j=0;j<3;j++)
    {
    	printf("   %d ",stu[max].score[j]);
	}
	return 0;
}

代码是一步步修改得来的,这里我为了方便调试,代码中把人数设置为2

注意事项❤️:

  1. i, j, sum, max等变量不应在结构体内部定义,在主函数内部用的话,就在main函数的开头部分,定义如上变量。
  2. 由于此程序要键盘输入很多数,所以在赋值模块中,一定要打印 提示语句。
  3. 数组内的元素比较大小后,没必要将数组进行交换,只需记住数组的位置

每日练习二:快递费用计算

本关任务:编写一个计算机快递费的程序。

某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域:0 1 2 3 4

快递费按邮件重量计算,由起重费用、续重费用两部分构成:

(1) 起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费;

(2) 同城0区起重资费10元,续重3元/公斤;

(3) 寄往1的邮件,起重资费10元,续重4元;

(4) 寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续 重 5元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。

编程要求

编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留2位小数

续重部分不足一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤。如果重量应大于0、区域编号不能超出0-4的范围。

知识补充:

  1. 直接赋值给整数变量。如:    int i = 2.5  或 i = (int) 2.5    这种方法采用的是舍去小数部分。
  2. 使用运算符。C/C++中的整数除法运算符"/"本身就有取整功能(int / int),整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的C编译器有关。
  3. 使用floor函数。floor(x)返回的是x的整数部分。如: floor(2.5) = 2    floor(-2.5) = -3
  4. 使用ceil函数。ceil(x)返回的是不大于x的最小整数。如: ceil(2.5) = 3    ceil(-2.5) = -2    
  5. floor和ceil对于正数没有区别,但是对于负数结果不同。floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。
  6. round(x)返回x的四舍五入整数值。

C语言数学函数ceil(), floor(), round()均使用头文件#include<math.h>返回类型均为double,默认8位小数。此程序主要以switch语句为主体

#include<stdio.h>
#include<math.h>
int main()
{
	int i,num;
	float n,weight,price;
	printf("请输入地区编号和重量:\n"); 
	scanf("%d,%f",&num,&n);//输入地区编号和初始重量 
	weight=ceil(n);//此函数功能详见上方“知识补充” 
	
	
	switch(num)
	{
		case 0:
			if(weight<=1)
			   price=10;
			else
			   price=10+3*(weight-1);
			break;
		case 1:
			if(weight<=1)
			   price=10;
			else
			   price=10+4*(weight-1);
			break;
		case 2:
		case 3:
		case 4:
		    if(num==2)
            {
			   price=15+5*(weight-1);
               break;
            }
			else if(num==3)
            {
			   price=15+6.5*(weight-1);
               break;
            }
			else if(num==4)
            {
			   price=15+10*(weight-1);
			   break; 
            }
		default:
			printf("Error in Area\n"); 
	}
	
	printf("Price: %.2f\n",price);
	return 0;
} 

写在最后

创作不易,还希望各位大佬支持!

👍🏻点赞,你的认可是我创作的动力!

⭐收藏,你的青睐是我努力的方向!

💛评论,你的意见是我进步的财富!

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: C语言程序设计考研复试中,结构体是重要的考察点之一。 结构体是一个用户自定义的数据类型,它可以将不同类型的变量组合在一起,形成一个具有独立意义的整体数据结构。结构体由多个成员组成,每个成员可以是任意数据类型,包括基本类型、指针类型、数组类型、结构体类型等。 在实际应用中,结构体可以用于解决某些问题,比如记录短语中的词语、在图形平面上表示点坐标和向量等。结构体可以增强程序的可读性、可维护性和可靠性,从而提高程序的质量。 在考研复试中,如果要涉及结构体的相关知识,考生需要掌握结构体的定义和使用方法,并能够正确地使用结构体编写程序。此外,还需要掌握结构体访问成员的方法、结构体作为函数参数的传递方式、结构体数组的定义和使用等内容。 总之,结构体作为C语言中的一种重要数据类型,不仅在考研复试中有较高的考察率,而且在实际编程中也是必不可少的知识点之一,值得考生认真学习。 ### 回答2: 考研复试中,C语言程序设计是一门重要的学科,其中一个重要的知识点就是结构体结构体C语言中一种自定义的数据类型,可以将多个不同类型的数据组合在一起,形成一个具有复合结构的新类型。通过结构体,可以更好地组织和管理数据。 定义结构体的语法为: struct 结构体名字 { 数据类型 变量名1; 数据类型 变量名2; …… }; 使用结构体,可以通过结构体名字和成员名来访问其中的数据。例如: struct student { char name[20]; int age; float score; }; struct student s1; strcpy(s1.name, "Tom"); s1.age = 20; s1.score = 87.5; 在上述例子中,定义了一个名为student的结构体,包括name、age和score三个成员变量。通过new关键字创建了一个名为s1的结构体变量,并给其各成员变量赋值。 结构体C语言中被广泛应用于各种数据管理和处理中,例如链表、树等数据结构的构建,也可以用于解决复杂的问题,提高程序的可维护性和可读性。 在考研复试中,结构体C语言中的重要知识点,考生需要掌握结构体的定义、使用以及其应用场景,以便于应对考试内容。 ### 回答3: C语言程序设计考研复试中的结构体是一个非常重要的知识点。结构体C语言的一种自定义数据类型,它可以将多个不同类型的数据组合成一个整体,以方便程序的使用和管理。 在C语言程序设计考研复试中,需要掌握结构体的定义、初始化、访问结构体成员变量、结构体数组、结构体指针等知识点。 在定义结构体时,需要使用关键字struct,后面跟着结构体名和花括号内部包含了若干个成员变量的定义。初始化结构体可以使用赋值或者使用大括号括起来的方式进行初始化。 访问结构体成员变量的方式有两种,一种是使用点(.)运算符,另一种是使用箭头(->)运算符。结构体数组可以用来存储多个结构体变量,结构体指针可以用来操作结构体变量的内存地址。 此外,还需要掌握结构体的嵌套定义和使用,以及结构体对齐和填充等底层知识。 掌握结构体这一重要知识点,可以使程序更加简洁、高效、易于维护。在C语言程序设计考研复试中,掌握结构体将会是斩获优异成绩的重要一步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

畅游星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值