zoukankan      html  css  js  c++  java
  • 嘉宾与幸运中奖者

    今天有同学做菊花厂的校招机试题遇到这个问题。

    题目要求

    • 输入一个包含6个人名的字符串,人名之间以空格隔开,人名不超过10个字符,第一个名字为嘉宾名字,后面5人为抽奖者名字;
    • 定义名字中a或者A的幸运值为1,z或者Z为26;
    • 后面5人中谁和嘉宾的幸运值相差最小,谁就获奖,当出现幸运值相差最小的人数为复数时,选取其在名单中排名最靠后的。

    ①示例输入
    ccc aaa bbb fff AAZZ xyx
    输出
    bbb

    ②示例输入
    ccc aaa bcb fff AAZZ cbb
    输出
    cbb

    程序

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int sum = 0;
    
    int goal(string name)
    {
    	int length = name.length();
    	int b[10];//人名不大于10个字符
    	for (int i = 0; i < length; i++)
    	{
    		if (name[i] >= 'a'&&name[i] <= 'z')//如果为小写字母
    			b[i] = name[i] - 'a'+1;
    		else //如果为大写字母
    			b[i] = name[i] - 'A'+1;
    	}
    	//计算该人名的幸运值
    	for (int i = 0; i < length; i++)
    	{
    		sum +=b[i];
    	}
    	return sum;
    }
    
    int main(int argc, char** argv) {
    	while (1)
    	{
    		/*获取字符串*/
    		string name_array;
    		getline(cin, name_array);
    
    		/*按空格分割人名*/
    		istringstream str(name_array);
    		string out;
    		string name[6];
    		int i = 0;
    		while (str >> out) //遇到空格就结束条件判断,执行函数体语句;直到串流全部输出给string对象,值为0
    		{
    			name[i] = out;
    			i++;
    		}
    
    		/*计算幸运值*/
    		int b[6] = { 0 };
    		for (int i = 0; i < 6; i++)
    		{
    			b[i] = goal(name[i]);
    			sum = 0;
    		}
    		/*计算5名抽奖者和嘉宾的幸运值差值*/
    		int c[5] = { 0 };
    		for (int i = 0; i < 5; i++)
    		{
    			c[i] = b[i + 1] - b[0];
    		}
    		/*计算差值的绝对值*/
    		int d[5] = { 0 };
    		for (int i = 0; i < 5; i++)
    		{
    			if (c[i] < 0)
    				d[i] = -c[i];
    			else
    				d[i] = c[i];
    		}
    		/*寻找差值绝对值中最小一个数字对应的下标,当有多个相同最小值时,取最后一个的下标*/
    		int n, min;
    		min = d[0];
    		for (int i = 1; i < 5; i++)
    		{
    			if (d[i] <= min)
    				n = i; //记录最小值的下标
    
    			min = d[n];//更新最小值
    		}
    		/*输出中奖者*/
    		cout << name[n + 1] << endl;
    	}
    
    }
    
  • 相关阅读:
    20165103 第四周查漏补缺
    20165103 2017-2018-2 《Java程序设计》第3周学习总结
    20165103 2017-2018-2 《Java程序设计》第2周学习总结
    20165103 2017-2018-2 《Java程序设计》第1周学习总结
    MySQL事务一致性理解
    mysql的事务四个特性以及 事务的四个隔离级别
    序列化和反序列化的简单理解
    内存溢出和内存泄漏的区别,产生原因以及解决方案
    oracle入门学习之oracle数据库结构
    Java微服务(Spring-boot+MyBatis+Maven)入门教程
  • 原文地址:https://www.cnblogs.com/j-c-y/p/13443087.html
Copyright © 2011-2022 走看看