• 嘉宾与幸运中奖者


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

    题目要求

    • 输入一个包含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;
    	}
    
    }
    
  • 相关阅读:
    [已解决]import pymssql ImportError: libsybdb.so.5
    找出生成json中的error_code,并加以处理
    [转]正则匹配时对象必须为string or bytes-like object
    [转]python执行bash指令,如果指令返回错误,如何优雅的结束python程序
    group()与groups()的区别
    Unsupported major.minor version 51.0解决办法(转)
    谈谈互联网后端基础设施(转)
    java日志体系的思考(转)
    JAVA模块以及未来(转)
    使用Spring Loader或者Jrebel实现java 热部署
  • 原文地址:https://www.cnblogs.com/j-c-y/p/13443087.html
Copyright © 2020-2023  润新知