随手附上一些代码,未必是最优解,仅供参考。

加密四位数

#include<iostream>
#include<cstring>
using namespace std;
const int N=100002;
char c[N];
int main()
{
	cin>>c;
	for(int i=0;i<strlen(c);i++)
		if((c[i]>='0'&&c[i]<='9')||(c[i]>='A'&&c[i]<='F')||(c[i]>='a'&&c[i]<='f')) continue;
		else
		{
			cout<<"NO";
			return 0;
		}
	long long sum=0,num,wq=1;
	for(int i=strlen(c)-1;i>=0;i--)
	{
		if(c[i]>='0'&&c[i]<='9')
			num=c[i]-'0';
		else switch(c[i])
		{
		case 'A':case 'a':num=10;break;
			case 'B':case 'b':num=11;break;
			case 'C':case 'c':num=12;break;
			case 'D':case 'd':num=13;break;
			case 'E':case 'e':num=14;break;
			case 'F':case 'f':num=15;break;
		}
		sum+=num*wq;
		wq*=16;
	}
	cout<<sum<<endl;
}

大佬的更简洁的程序如下:

大学电子系C++模拟考试-LMLPHP

最大数与第一个数交换

【问题描述】
编写函数,功能是将数组中的最大数与第一个数交换,并计算数组元素的平均值。例如输入5个元素3、4、1、5、2,将最大数5和第一个数3的位置交换后得到5、4、1、3、2,平均值为3。要求输入输出均在主函数中完成。

【输入形式】
输入分两行,第一行为n的值,第二行为n个数

【输出形式】
输出分两行,第一行为交换后数组n个元素的值,第二行为平均值。

【样例输入】

5

5 3 2 1 7

【样例输出】

7 3 2 1 5

3.6

思路

写函数,交换,求平均。

我的程序有点繁琐,就是找最大的时候把最大值也用一个变量保存了下来。

#include<iostream>
#include<cstring>
using namespace std;
const int N=100002;
double fun(int n,int f[])
{
	int maxx=-1,maxp=0,sum=0;
	for(int i=0;i<n;i++)
	{
		sum+=f[i];
		if(f[i]>maxx)
		{
			maxx=f[i];
			maxp=i;
		}
	}
	swap(f[0],f[maxp]);
	return (double)sum/n;
}
int main()
{
	int a[N],n;
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	double ave=fun(n,a);
	for(int i=0;i<n;i++) cout<<a[i]<<" ";
	cout<<endl<<ave;
}

其实没有问最大值,那就只要知道下标就行了,下面这也是一个大佬的程序,更简洁。

#include<iostream>
using namespace std;
double han(int a[],int n)
{
	int i,max=0,t;
	double b=0;
	for(i=0;i<n;i++)
		b=b+a[i];
		b=b*1.0/n;
	for(i=0;i<n;i++)
	{
		if(a[i]>a[max])
		{
			max=i;
		}
		t=a[max];
		a[max]=a[0];
		a[0]=t;
	}
		return b;
}
int main()
{
	int a[999],n,i;
	double s;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	s=han(a,n);
	for(i=0;i<n;i++)
		cout<<a[i]<<" ";
	cout<<endl<<s;
	return 0;
}

最后,祝大家都能取得令人满意的成绩!

留下点赞或者评论再走呗~

12-09 04:49