首页
社区
课程
招聘
[旧帖] [求助]c++ 0.00雪花
发表于: 2012-3-17 10:12 1782

[旧帖] [求助]c++ 0.00雪花

2012-3-17 10:12
1782
怎么样才能判断输入的两个分数是否为百分制格式?只用一个switch语句貌似如果输入的数一个为正一个为负的话只要在规定条件内还是不能判断有错误啊~

原题:
输入一个学生的两门课成绩(百分制),计算该生的总分并要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。总分在180分以上为‘A’,160~179分为‘B’,140~159分为‘C’,120~139分为‘D’,120分以下为‘E’。
具体要求:
学生的两门课成绩通过键盘输入,成绩应该都为整数,输入之前要有提示信息。
②若输入的成绩不是百分制成绩,则给出错误提示信息,并且不再进行下面的等级评价
;若输入的成绩是百分制成绩,则计算总分,并根据要求评价等级。
③按下面形式输出结果:
总分----〉等级
如:   186----〉A

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 261
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
直接用if else
2012-3-17 10:33
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
要求用switch语句的!!
2012-3-17 11:09
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
#include<iostream>
using namespace std;
int main()
{
	int a,b;
	cout<<"输入两门课的成绩"<<endl;
	cin>>a>>b;
	switch((a>=0?a<=100?~0:0:0)&(b>=0?b<=100?~0:0:0)?a+b>=180?'a':a+b>=160?'b':a+b>=140?'c':a+b>=120?'d':'e':~0)
	{
	case 'a':
		cout<<a+b<<"----〉A"<<endl;
		break;
	case 'b':
		cout<<a+b<<"----〉B"<<endl;
		break;
	case 'c':
		cout<<a+b<<"----〉C"<<endl;
		break;
	case 'd':
		cout<<a+b<<"----〉D"<<endl;
		break;
	case 'e':
		cout<<a+b<<"----〉E"<<endl;
		break;
	default:
		cout<<"不是百分制成绩!"<<endl;
	}
	return 0;
}

基本上大家都会的东西,出来献丑了,楼主加油!
2012-3-20 21:03
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
后来想想,那又何必呢?!
#include<iostream>
using namespace std;
int main()
{
	int a,b,c;
	cout<<"输入两门课的成绩"<<endl;
	cin>>a>>b;
	cout<<c<<"----〉"<<(c=a+b,(a>=0?a<=100?~0:0:0)&(b>=0?b<=100?~0:0:0)?c>=180?"A":c>=160?"B":c>=140?"C":c>=120?"D":"E":"\r不是百分制成绩!")<<endl;
	return 0;
}
2012-3-21 21:59
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
要知道,老师现在要的是知识点训练,不是程序优化。
2012-3-22 09:19
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
兄弟的意思我理解,后面的话是激励楼主的。
指导性的写法已经在最开始给出了,后面的这几个对于学习c++来说也多多少少会有点启发性,我们对于编程艺术的追求是无止境的,对于挑战自我的梦想,对于提高自我的渴望是孜孜不倦的,我们不应该被老师的标准写法束缚住,我们要敢于尝试,敢于突破,在尝试中体味,在突破中摸索,只有这样方能真正地感受到编程艺术的强大魅力,只有这样方能真正地在编程中获取无穷的快乐,也只有这样在方能在追寻先辈足迹的过程中一步步迈向真理。
#include<iostream>
using namespace std;
int a,b=(cout<<"输入两门课的成绩"<<endl,cin>>a>>b,cout<<b<<"----〉"<<((a>=0?a<=100?~0:0:0)&(b>=0?b<=100?~0:0:0)?(b+=a)>=180?"A":b>=160?"B":b>=140?"C":b>=120?"D":"E":"\r不是百分制成绩!")<<endl,0);
void main(){}

这段程序中有一个乍看起来逻辑不怎么正确的地方,在第二个cout表达式里面紧挨着cout的变量b与b+=a的逻辑顺序有问题,编出来之后才发现的,但是竟然好使,那我也不去多想了,留给后人查证吧。
楼主把书上的或者是老师的答案也贴上来吧,我这种写法写习惯了,也想知道正确的写法是什么样的。
2012-3-22 10:07
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼上写的是什么啊。。
2012-3-22 10:17
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
诶?是文字看不懂呢,还是程序呢,程序和前面几个是一样的哦。
2012-3-22 10:28
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
10
百分制就是纯数字,并且 0 <= x <= 100。
其它都是非法的。
作业也上论坛来问,要给 Kx 的,你有吗?
2012-3-22 12:49
0
游客
登录 | 注册 方可回帖
返回
//