牛客网计算机上机编程真题(一)

这段代码包含三个C++程序。第一个计算文本输入中按键的总时间,考虑按键顺序。第二个程序找出给定数字的质因数个数。第三个程序按分数对学生进行升序或降序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
int main()
{
	map<char, int> inputTime = {
            {'a', 1}, {'b', 2},{'c', 3},
            {'d', 1}, {'e', 2},{'f', 3},
            {'g', 1}, {'h', 2},{'i', 3},
            {'j', 1}, {'k', 2},{'l', 3},
            {'m', 1}, {'n', 2},{'o', 3},
            {'p', 1}, {'q', 2},{'r', 3},{'s',4},
            {'t', 1}, {'u', 2},{'v', 3},
            {'w', 1}, {'x', 2},{'y', 3},{'z',4}
    };
    //某个字母属于哪个按键
    map<char, int> keyMap = {
            {'a', 2}, {'b', 2},{'c', 2},
            {'d', 3}, {'e', 3},{'f', 3},
            {'g', 4}, {'h', 4},{'i', 4},
            {'j', 5}, {'k', 5},{'l', 5},
            {'m', 6}, {'n', 6},{'o', 6},
            {'p', 7}, {'q', 7},{'r', 7},{'s',7},
            {'t', 8}, {'u', 8},{'v', 8},
            {'w', 9}, {'x', 9},{'y', 9},{'z',9}
};
string str;
while(cin>>str)
{
	int sum=0;
	int lastinput=1;
	for(int i=0;i<str.size();i++)
	{
		if(keyMap[str[i]]==lastinput)
		{
			sum+=2+inputTime[str[i]]; 
		}
		else
		{
			sum+=inputTime[str[i]];
			
		}
		lastinput=keyMap[str[i]];
	}
	cout<<sum<<endl;
}
}

在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
int fun(int num)
{
	int ans=0;
	int i;
	for(i=1;i*i<num;i++)
	{
		if(num%i==0)
		{
			ans+=2;
		}
	}
		if(i*i==num)
		{
			ans++;
		}
	
	return ans;
}
int main()
{
	int n,num;
	while(cin>>n)
	{
		for(int i=0;i<n;i++)
		{
			cin>>num;
			int d=fun(num);
			cout<<d<<endl;
		}
	}
	return 0;
}

在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
struct Student{
	string name;
	int score;
};
int flag;
bool cmp(Student s1,Student s2)
{
	if(flag==0)
    return s1.score <s2.score ;
    else
    {
    	return s1.score>s2.score ;
	}
	
}
int main()
{
	int n;
	while(cin>>n)
	{	
	cin>>flag;
	Student stu[n];
	for(int i=0;i<n;i++)
	{
		cin>>stu[i].name>>stu[i].score;
	}
	stable_sort(&stu[0],&stu[n],cmp);

	
		for(int i=0;i<n;i++)
		{
			cout<<stu[i].name<<" "<<stu[i].score<<endl;
		}
	
}
		
}

在这里插入图片描述
在这里插入图片描述
主要最小值设置那里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值