当前位置:   article > 正文

自练题目c++

自练题目c++

题目描述:
已知数组array[10]={1,2,3,4,5,6,7,8,9,10};要求把下标从0到p(p从键盘输入)的数组元素平移到数组的最后,并输出平移后的数组。

输入格式:输入一个整数p;
输出格式:共一行,输出平移后的数组,数字之间用空格分隔

示例:
输入:3
输出:5 6 7 8 9 10 1 2 3 4

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n;
	int k;
	int a[20];
	int b[40];
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	cin>>k;
	for(int i=0;i<n;i++){
		b[i]=a[i];
	}
	for(int i=n;i<2*n;i++){
		b[i]=a[i-n];
	}
	for(int i=k+1;i<k+1+n;i++){
		cout<<b[i]<<" ";
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  1. 阶乘之和

    标题
    阶乘之和

描述
输入自然数N(N<10),采用双层for循环结构,计算N!和ΣN!,并输出结果。

时间限制
1

内存限制
10000

类别
1

输入说明
输入自然数N(<10),如7

输出说明
输出N、N!、ΣN!

输入样例
7

输出样例
7 5040 5913

提示
采用双层for循环结构,不大于10的自然数的阶乘之和

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int m=1,sum=0;
	for(int i=1;i<=n;i++){
		m=m*i;
		sum=sum+m;
	}
	cout<<n<<" "<<m<<" "<<sum;
	return 0; 
}




  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  1. 加权成绩排序(结构体)
#include <bits/stdc++.h>
using namespace  std;
struct stu{
	int id;
	int n1,n2,n3,n4;
	int w1,sum;
}; 
int main(){
	int n;
	stu stu[200];
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>stu[i].id>>stu[i].n1>>stu[i].n2>>stu[i].n3>>stu[i].n4;
		stu[i].w1=stu[i].n1*0.35+stu[i].n2*0.3+stu[i].n3*0.25+stu[i].n4*0.1;
		stu[i].sum=stu[i].n1+stu[i].n2+stu[i].n3+stu[i].n4;
	}
	for(int i=0;i<n-1;i++){
		for(int j=0;j<n-1-i;j++){
			if(stu[j].w1<stu[j+1].w1){
				swap(stu[j],stu[j+1]);
			}
			if(stu[j].w1==stu[j+1].w1){
				if(stu[j].sum<stu[j+1].sum){
					swap(stu[j],stu[j+1]);
				}
			}
			if((stu[j].w1==stu[j+1].w1)&&(stu[j].sum==stu[j+1].sum)){
				if(stu[j].id<stu[j+1].id){
					swap(stu[j],stu[j+1]);
				}
			}
		}
	}
	for(int i=0;i<n;i++){
		cout<<stu[i].id<<" "<<stu[i].w1<<" "<<stu[i].sum<<endl;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  1. 中间数
#include <bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a[1010];
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	int high, low, out=-1; 
	for(int i=0; i<n; i++)
	{
		high=0; low=0;
		for(int j=0; j<n; j++)
		{
			if(a[j]<a[i])
			low++;
			else if(a[j]>a[i])
			high++;
		}
		if(high==low)
		{
			out=a[i];
			break;
		}
	}
	printf("%d", out);
	
	
	
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  1. 最大连续子序列和
#include <bits/stdc++.h>
using namespace std;
int a[10010],dp[10010];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	dp[0]=a[0];
	for(int i=1;i<n;i++){
		dp[i]=max(a[i],dp[i-1]+a[i]);
		
	}

	sort(dp,dp+n);
	cout<<dp[n-1];
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  1. 最长不下降子序列(可不连续)
#include <bits/stdc++.h>
using namespace std;
int a[110],dp[110];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int ans=-1;
	for(int i=1;i<=n;i++){
		dp[i]=1;
		for(int j=1;j<i;j++){
			if(a[i]>=a[j]&&(dp[j]+1>dp[i])){
				dp[i]=dp[j]+1;
			}
		}
		ans=max(ans,dp[i]);
		
	}
	cout<<ans;
	
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  1. 最长公共子序列
#include <bits/stdc++.h>
using namespace std;
char a[100],b[100];
int dp[100][100];
int main(){
	gets(a+1);
	gets(b+1);//从下标为1开始读入
	int lena=strlen(a+1);
	int lenb=strlen(b+1);
	int max_len=0;
	for(int i=0;i<=lena;i++){
		dp[i][0]=0;
	}
	for(int j=0;j<=lenb;j++){
		dp[0][j]=0;
	}
	for(int i=1;i<=lena;i++){
		for(int j=1;j<=lenb;j++){
			if(a[i]==b[j]){
				dp[i][j]=dp[i-1][j-1]+1;
			}
			else{
				dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
			}
		}
	}
	int c=max_len;
	
	cout<<dp[lena][lenb];
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/341325
推荐阅读
相关标签
  

闽ICP备14008679号