杭电ACM2061

问题描述
背景:
新学期开始,HDU也迎来了50岁生日。不管你的专业是什么,我唯一想告诉你的是:“珍惜大学生活,抓住时间。” 大多数人认为大学生活应该丰富多彩,少一些压力。但实际上,大学生活也很繁琐。如果你想掌握从书中学到的知识,那么应该把大量的闲暇时间花在个人学习和实践上,尤其是后者。我认为你们每个人都应该像在高中时一样采取学习态度。
“没有痛苦,没有收获”,HDU也有奖学金,谁能赢得它?这主要依赖于学生的GPA(成绩平均分)。现在,我要告诉你的规则,
如果有K(K> 0)个课程,第i个课程有学分Ci,你的分数Si,那么结果
GPA =(C1 * S1 + C2 * S2 + ...... + Ci * Si ......) /(C1 + C2 + ...... + Ci ......)(1 <= i <= K,Ci!= 0)
如果存在0 <= Si <60,GPA总是不存在。
 

输入
第一个数字N表示有N个测试用例(N <= 50)。在每一种情况下,都有一个数字K(总课程数),然后是K行,每行将服从格式:课程名称(长度<= 30),学分(<= 10),分数(<= 100 )。
注意:课程名称中没有空白。所有的输入都是合法的
 

产量
输出如上所述的每种情况下的GPA,如果GPA不存在,输出:“对不起!”,否则只输出四舍五入到小数点后两位数的GPA值。两个测试用例之间有一条空白线。 
 

示例输入
 
  
2 3 算法3 97 DataStruct 3 90 软件项目4 85 2 数据库4 59 英语4 81
 

示例输出
 
  
90.10 Sorry!

知识补充(借鉴:https://blog.csdn.net/moqingxinai2008/article/details/53908265)

1.在scanf中使用,则添加了*的部分会被忽略(跳过),不会被参数获取。
       例如:

[cpp]  view plain  copy
  1. int a,b;  
  2. char b[10];  
  3. scanf("%d%*s",&a,b);  
       输入为:
12 abc
        那么12将会读取到变量a中,但是后面的abc将在读取之后抛弃,不赋予任何变量(例如这里的字符数组b)


        用*和扫描集配合,可以从输入中只选出需要的内容,而忽略其余的东西。
另外,也常用于清空缓冲区。 


2.在printf中使用,*表示用后面的形参替代*的位置,实现动态格式输出。
      例如:

[cpp]  view plain  copy
  1. printf("%*s", 10, s); /*意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,这里等同于printf("%10s", s);*/  


[cpp]  view plain  copy
  1. printf("%.*s\n"int,str) ;   
  2. // %.*s 其中的.*表示显示的精度 对字符串输出(s)类型来说就是宽度  
  3. // 这个*代表的值由后面的参数列表中的整数型(int)值给出  
  4.   
  5. // 例如:  
  6. printf("%.*s\n", 1, "abc");        // 输出a  
  7. printf("%.*s\n", 2, "abc");        // 输出ab  
  8. printf("%.*s\n", 3, "abc");        // 输出abc >3是一样的效果 因为输出类型type = s,遇到'\0'会结束  

答案:自己写的,oj不通过。。。mmp;借鉴地址(https://blog.csdn.net/riverflowrand/article/details/44353855)

#include <stdio.h>

int main() {
	
	int n, k,  flag;
	double a1, a2, cre, sco;

	scanf("%d", &n);
		
		
		while(n--) {
			a1 = 0.0;
			a2 = 0.0;
			flag = 0;
			scanf("%d", &k);
			while(k--) {
				scanf("%*s%lf%lf", &cre, &sco);
				if(sco<60) {
					flag = 1;
				}
				a1 += cre * sco;
				a2 += cre;
			}
			if(flag==1)
				printf("Sorry!\n");
			else
				printf("%.2lf\n", a1 / a2);
			if(n)
				printf("\n");	
		}
		
		
	
	
	return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_40728285/article/details/80084208