高级启示者
缔造者之神
给3个函数:
string tq(string s){
string z;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9') z=z+s[i];
}
return z;
}
int sz(string z){
int sum=0;
for(int i=0;i<z.size();i++){
if(z[i]>='0'&&z[i]<='9')
sum+=z[i]-'0';
}
return sum;
}
bool cmp(string x,string y){
if(sz(x)!=sz(y)) return sz(x)>sz(y);
else if(tq(x)!=tq(y)) return tq(x)<tq(y);
return x<y;
}
望采纳!
高级启示者
@潘艺博
for(int i=1;i<=n;i++) {
cin>>a>>b>>c;
sum=double(f(a+b,b,c)*f(a,b,b+c))/f(a,b,c);
printf("%.2f\n",sum);
}
核心
李宜和在2021-08-13 11:59:42追加了内容
f是函数
初级天翼
思路:
定义整形n,字符串数组s[10010],bool型cmp函数,在里面定义两个形参string a,string b,在函数里定义整形sa,sb(sb别想成**,这里是sumb的缩写,sa同理)和字符串sza,szb,遍历字符串a,判断a[i]是数字,sza+=a[i](组成数字串),sa+=a[i]-'0'(累加这个数字字符是几)(b字符串同理),如果sa不等于sb,返回sa大于sb,否则如果sza不等于szb,返回sza小于szb,否则返回a小于b//主函数内
----------------------------分---------------------------------------割----------------------------------------线---------------------------
输入n,getline(cin,s[0])(吃换行),循环读入getline(cin,s[i]),输入后在循环外使用sort排序,最后循环输出s[i]即可AC
望采纳~
中级守护
int n; cin>>n; getline(cin,a[0]); for(int i=1;i<=n;i++){ getline(cin,a[i]); } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ cout<<a[i]<<endl; }
缔造者
函数核心
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9') z=z+s[i];
}
return z;
}
int sz(string z){
int sum=0;
for(int i=0;i<z.size();i++){
if(z[i]>='0'&&z[i]<='9')
sum+=z[i]-'0';
}
return sum;
}
bool cmp(string x,string y){
if(sz(x)!=sz(y)) return sz(x)>sz(y);
else if(tq(x)!=tq(y)) return tq(x)<tq(y);
return x<y;
}
主函数核心
for(int i=1;i<=n;i++){
getline(cin,a[i]);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<endl;
}