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

这些代码示例展示了C++中处理用户输入、数组操作、矩阵乘法、循环和条件判断的应用。还包括寻找最大最小值、三角形类型判断、数组排序和素数检测等算法实现。

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

在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
int main()
{
	int x,y;
	int maxx,maxy,minx,miny;
	while(cin>>x>>y&&x!=0||y!=0)
	{
	   maxx=x,maxy=y,minx=x,miny=y;
		
		while(x!=0||y!=0)
		{
		
		if(x>maxx)
		{
			maxx=x;
		}
		if(x<minx)
		{
			minx=x;
		}
		if(y>maxy)
		{
			maxy=y;
		}
		if(y<miny)
		{
			miny=y;
		}
		if(y>maxy)
		{
			maxy=y;
		}
		cin>>x>>y;
	}
	cout<<minx<<" "<<miny<<" "<<maxx<<" "<<maxy<<" "<<endl;
	}
	
}

在这里插入图片描述


#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	while(cin>>n)
	{
		for(int i=0;i<=n/5;i++)
		{
			for(int j=0;j<=n/3;j++)
			{
				for(int k=0;k<=3*n;k++)
				{
					if((i+j+k==100)&&(3*5*i+3*3*j+k<=3*n)) 
					{
						cout<<"x="<<i<<","<<"y="<<j<<","<<"z="<<k<<endl;
					}
				}
			}
		}
	}
}

在这里插入图片描述


#include<bits/sdc++.h>
using namespace std;
int main()
{
	int n;
	int a[100];
    while(cin>>n)
    {
    	for(int i=0;i<n;i++)
    	{
    		cin>>a[i];
		}
		int t1=0,t2=0;  //这里一定要记得赋值为0,我刚开始没有赋值为0所以错了 
		int max_num=a[0];
		int min_num=a[0];
		for(int i=0;i<n;i++)
		{
			if(a[i]>max_num)
			{
				max_num=a[i];
				      t1=i;
			}
			if(a[i]<min_num)
			{
				min_num=a[i];
				t2=i;
			}
		}
		int temp;
	    temp=a[t1];
	    a[t1]=a[t2];
	    a[t2]=temp;
	    for(int i=0;i<n;i++)
	    {
	    	cout<<a[i]<<" ";
		}
	}
}

在这里插入图片描述

include<bits/sdc++.h>
using namespace std;
int main()
{
	int a[2][3]={0};
	int b[3][2]={0};
	int c[2][2]={0};
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<3;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<2;j++)
		{
			cin>>b[i][j];
		}
	}
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<2;j++)
		{
			for(int k=0;k<3;k++)
			{
				c[i][j]+=a[i][k]*b[k][j];
			}
		}
	}
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<2;j++)
		{
			cout<<c[i][j]<<" ";
			
		}
		cout<<endl;
	}
}

在这里插入图片描述
在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
int main()
{
    int flag=0;
	int n,i;
	while(cin>>n&&n!=0)
	{
		int a[300];
		for( i=0;i<n;i++)
		{
			cin>>a[i];
		}
		int m;
        cin>>m;

		for(int i=0;i<n;i++)
		{
			if(a[i]==m)
			{
				cout<<i<<endl;
                flag=1;
				
			 } 
		}
		if(flag==0)cout<<"-1"<<endl;
	}
}

在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
int main()
{
	int a,b,c; 
	while(cin>>a>>b>>c)
	{
		int t1,t2,t3;
		t1=a*a+b*b-c*c;
		t2=a*a+c*c-b*b;
		t3=b*b+c*c-a*a;
	int ans=t1*t2*t3;
	if(ans==0) cout<<"直角三角形"<<endl;
	 else if(ans<0) cout<<"钝角三角形"<<endl;
	 else
	 {
	 	cout<<"锐角三角形"<<endl;
	  } 
	}
}

在这里插入图片描述


#include<bits/sdc++.h>
using namespace std;
int main()
{
	
  int a[10]={0};
  int n,i;
for( i=0;i<20;i++)
{
	cin>>n;
	a[n]++;
	
}
int max_num=a[0];
 int max=i;
for(i=0;i<10;i++)
{
   if(a[i]>max_num)
   {
   	max_num=a[i];
   	max=i;
	   }
	   	
}
cout<<max<<endl;
}

在这里插入图片描述

//考虑特殊情况


#include<bitsdc++.h>
using namespace std;
bool Prime(int n)
{
    if(n==0||n==1||n<0)
    {
        return false;
    }
	
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
		return false;
	}
	return true;
}
int main()
{
	int n;
	while(cin>>n)
	{
        
        
		if(Prime(n))
		{
			cout<<"yes"<<endl;
		}
		else
		{
			cout<<"no"<<endl;
		}
	}
}

在这里插入图片描述

#include<bits/sdc++.h>
using namespace std;
int main()
{
	int rich,poor=0;
	rich=10*30;
	for(int i=0;i<30;i++)
	{
		poor+=pow(2,i); 
	}
	cout<<rich<<" "<<poor<<endl;
}

在这里插入图片描述

#include<bitsdc++.h>
using namespace std;
int main()
{
	string a;
	while(getline(cin,a))
	{
       reverse(a.begin(),a.end());
	
	cout<<a<<endl;
}
}

在这里插入图片描述
//for循环里面两个if可以不用写else 了 不用再写ielse{continue}了

#include<iostream>
using namespace std;
int main()
{
    string s;
    cin >> s;
    for(int i=0; i<s.length(); i++)
    {
        if( s[i]>='a'&&s[i]<='z'  )
        {
            s[i] = 'z' + 'a' - s[i];
        }
        if( s[i]>='A'&&s[i]<='Z' )
        {
            s[i] = 'Z' + 'A' - s[i];
        }
    }
    cout << s << endl;


在这里插入图片描述
//实际上是求有多少个2

#include<bitsdc++.h>
using namespace std;
int main()
{
	int n,m;
	while(cin>>n>>m&&n!=0)
	{
		int sum=0;
		int s=1;
		for(int i=n-m+1;i<=n;i++)
		{
			s=s*i;
			while(s%2==0)
			{
				sum++;
				s=s/2;
			}
           
		}
		cout<<sum<<endl;
	}
}

在这里插入图片描述

#include<bitsdc++.h>
using namespace std;
bool isPrime(int n)
{
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
		{
			return false;
		}
	}
	return true;
}
int main()
{
	int flag=0;
	int n;
	while(cin>>n)
	{
	
	
	for(int i=2;i<n;i++)  //这里不包括n  素数不包括自身
	{
		if(isPrime(i)&&i%10==1)
		{
			flag=1;
			cout<<i<<" ";
		}
	}
	if(flag==0) cout<<"-1";
	cout<<endl;
}
}

在这里插入图片描述
//利用结构体进行比较

#include<bitsdc++.h>
using namespace std;
struct Pair{
	int x;
	int y;
};
bool cmp(Pair p1,Pair p2)
{
	if(p1.x ==p2.x)
	{
		return p1.y<p2.y;
	}
	return p1.x <p2.x;
}
int main()
{
	int n;
	while(cin>>n)
	{
		Pair p[n];
		for(int i=0;i<n;i++)
		{
			cin>>p[i].x>>p[i].y; 
		}
		sort(p,p+n,cmp);
		cout<<p[0].x <<" "<<p[0].y <<endl;
	}
}

在这里插入图片描述

#include<bitsdc++.h>
using namespace std;
void Swap(int a[100][100],int n,int i,int max_num)
{
	int temp;
	for(int j=0;j<n;j++)
	{
		temp=a[i][j];
		a[i][j]=a[max_num][j];
		a[max_num][j]=temp;
	}
}
int main()
{
	int i,j,max_num;
	int n;
	int a[100][100];
	while(cin>>n)
	{
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				cin>>a[i][j];
			}
		}
		for(j=0;j<n;j++)  //一行一行地查找可以先控制列 
		{
			  max_num=j;
			for(i=j;i<n;i++)
			{
				if(a[max_num][j]<a[i][j])
				{
	
					max_num=i;
				}
			}
			Swap( a,n, j, max_num);
		}
	
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			cout<<a[i][j];
			if(j!=n-1) cout<<" ";
			else
			cout<<endl;
		}
	}
}
}

在这里插入图片描述

#include<bitsdc++.h>
using namespace std;
int main()
{
	string a;
	string b;
	int j;
	while(getline(cin,a))
	{
		char c[150];
		j=0;
		getline(cin,b);
		int len=b.size();
		for(int i=0;i<len;i++)
		{
			c[j]=a[i];
			j++;
			c[j]=b[len-i-1];
			j++;
		}
		for(int i=0;i<j;i++)
		{
			cout<<c[i];
		}
		
	}
}

在这里插入图片描述

#include<bitsdc++.h>
using namespace std;
int main()
{
	int month1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //28
	int month2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; //29 这两个数字容易忘记 
	int year,day;
	
	while(cin>>year>>day)
	{
		int sum=0,i=0,d;
		if((year%400==0)||((year%4==0)&&(year%100!=0)))
		{
				while(day>sum)
				{
					d=day-sum;   //减 
					i++;
					sum+=month2[i];
				}
		}
		else
		{
				while(day>sum)
				{
					d=day-sum;
					i++;
					sum+=month1[i];
				}
		}
		 printf("%04d-%02d-%02d\n",year,i,d);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值