随手附上一些代码,未必是最优解,仅供参考。
加密四位数
#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;
}
大佬的更简洁的程序如下:
最大数与第一个数交换
【问题描述】
编写函数,功能是将数组中的最大数与第一个数交换,并计算数组元素的平均值。例如输入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;
}
最后,祝大家都能取得令人满意的成绩!
留下点赞或者评论再走呗~