用switch写一个C语言程序,实现“输入学号(长整数)和成绩(浮点数),输出8位规范学号(不足8位,前导补0)四舍五入后的成绩、四舍五入后成绩的绩点”


#include<stdio.h>
int main()
{
	long int stu;
	double grade;	
    int a;
	scanf("%ld %lf", &stu, &grade);
	printf("%08ld\n", stu);
	printf("%d\n", (int)(grade + 0.5));
	int i = (int)(grade + 0.5);
/*这个代码指的是一个四舍五入的方式,用于处理四舍五入*/
	a = (i >= 0) + (i >= 60) + (i >= 64) + (i >= 66) + (i >= 68) + (i >= 72) + (i >= 75) + (i >= 78) + (i >= 82) + (i >= 85) + (i >= 90);
	switch (a)
	{
	case 1:printf("%.1f\n", 0.0); break;
	case 2:printf("%.1f\n", 1.0); break;
	case 3:printf("%.1f\n", 1.5); break;
	case 4:printf("%.1f\n", 1.7); break;
	case 5:printf("%.1f\n", 2.0); break;
	case 6:printf("%.1f\n", 2.3); break;
	case 7:printf("%.1f\n", 2.7); break;
	case 8:printf("%.1f\n", 3.0); break; 
	case 9:printf("%.1f\n", 3.3); break; 
	case 10:printf("%.1f\n", 3.7); break;
	case 11:printf("%.1f\n", 4.0); break;
	}
	return 0;
}

本程序的关键之处在于如何处理“四舍五入”这个问题。我们常用如下方法实现:
(int)(a+0.5)即可。
很巧妙的用了取整规则。
也不用导入math.h
同样注意负数的情况。
把 + 换成 - 即可.
float f = …..;
int i = (int)(f + 0.5);
i就是f四舍五入的结果。

 

 

 用 long int 与int没有多大差别,因为两者都是2个字节的,但不同就在于规范情况下我们对于

long int用%ld输入。如果要进行初始化,则应写成如下形式,用小写的l也是一样的

 我们在使用double和float时是有不同之处的。double在进行scanf输入时我们要用%lf,而float则用%f。在打印时均用%f即可。

 

绩点转换图 如上。

后续还会进行更新。身为一个新的博主呢,我会向大家介绍C语言一些简单的运用,后续还会针对本题详细解释。陆续会更新关于C语言的常见100~200题不等。

我呢,也会学着写博客,给大家尽量解答。本博客,只适用于初学者的入门,后续还会有所更新。不懂得可私信我。应该后续还会推出关于《大学物理》简单问题的讲解部分,大家多多关注。



 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值