考研机试C++题目精选

更多内容会在godownio.github.io更新

算法练习(C++代码)

考研上机或C语言代码笔试准备,暨大机试原题+letcode+牛客+中南大等高校机试

快速幂算法

题目:输入一个整数 n ,求 n^n 的个位数是多少。

快速幂算法:指数为偶数,则底数平方,指数除二;指数为奇数,则指数减一再把结果乘底数,底数平方,指数除二。指数看作二进制,除二可以看作位运算。

#include <iostream>

using namespace std;
int main(){
   
	int n;
	cin>>n;
	int power=n;
	int base=n;
	int result = 1;
	while(power>0){
   
		if(power%2==1){
   
			result *= base;
			power /= 2;
			base *= base;//指数为奇数,先乘底数。除二小数部分舍去。底数平方 
		}
		else{
   
			power /= 2;
			base *= base;//指数为偶数,除二,底数平方 
		}
	}
	cout<<result<<endl; 
	cout<<result%10;//mod 10即个位数
}

image-20240301105155142

斐波那契

输入一个整数 n ,求斐波那契数列的第 n 项。第一项是1, 第二项是1。要求必须递归!

#include <iostream>

using namespace std;

int f(int n){
   
    if(n==1||n==2){
   
        return 1;
    }
    else return f(n-2)+f(n-1);
}

int main(){
   
    int n;
    cin >> n;
    cout<<f(n);
}

成绩排名

对 n 个同学的考试成绩从大到小排名,成绩相同的算同一名。求排名为 m 的成绩。若无排名为m的成绩,输出最后一名的成绩。

  • 输入格式

一共三行

第一行:一个整数 n,表示同学的个数。

第二行:n 个整数,表示 n 个同学的成绩。

第三行:一个整数 m,表示排名。

  • 输出格式

一个整数,表示排名为 m 的成绩。

  • 输入样例

6
100 100 99 98 97

2

  • 输出样例

99

#include <iostream>

using namespace std;
int main(){
   
	int n,m;
	cout<<"输入同学个数:"<<endl;
	cin>>n;
	int score[n];
	cout<<"输入同学的成绩:"<<endl;
	for (int i=0;i<n;i++){
   
		cin>>score[i];
	}
	//cout<<"1";
	for (int i=0;i<n;i++){
   
		for(int j=n-i-1;j>0;j--){
   
			if(score[j]>score[j-1]){
   
				int temp = score[j];
				score[j] = score[j-1];
				score[j-1] = temp;
			}
		}//冒泡排序
	}
	int i=0,j;
	for(j=1;j<n;j++){
   
		if(score[j]!=score[i]){
   
			score[++i]=score[j];
		}
	}//双指针去重
	cout<<"输入要查询的排名:"<<endl;
	cin>>m;
	if(m>i+1){
   
		cout<<score[i]<<endl; 
	}
	else{
   
		cout<<score[m-1];
	}
}

括号匹配

给定三种括号{ },[ ], ( ),和若干小写字母的字符串,请问改字符串的括号是否匹配(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值