```cpp
for(int i=0;i<a3;i++){
s1[i]=s[i];1 <-- 1?
}
```
by __HHX__ @ 2023-06-13 19:55:28
# 自己来回答了
# 把前面代码中的字符串转为数字数组就行,转为字符串就不行也不知道为啥,反正后面过了
## 下面是正确的代码,把函数的形参由字符数组换成了数字数组就AC了
```
#include<bits/stdc++.h>
using namespace std;
int z1(int a[],int p){
int n=p-1;
while(a[n]==0&&n!=0) {
n--;
}
for(int i=n;i>=0;i--){
cout<<a[i];
}
}
int z2(int a[],int p){
int n=p-1;
while(a[n]==0&&n!=0){
n--;
}
int j=0;
while(a[j]==0&&j!=n) j++;
for(int i=n;i>=j;i--){
cout<<a[i];
}
}
int zh2(char s[],int p){
int n=p-1;
while(s[n]=='0'&&n!=0) {
n--;
}
int j=0;
while(s[j]=='0'&&j!=n) j++;
for(int i=n;i>=j;i--){
cout<<s[i];
}
}
//下面两个函数是之前的,后面没用
/*int zh1(char s[]){
int n=strlen(s)-1;
while(s[n]=='0'&&n!=0) {
n--;
}
for(int i=n;i>=0;i--){
cout<<s[i];
}
}
int zh(char s[]){
int n=strlen(s)-1;
while(s[n]=='0'&&n!=0) {
n--;
}
for(int i=n;i>=0;i--){
cout<<s[i];
}
}*/
int main(){
char s[21];
char s1[20],s2[20];
int k[21],h[21];
// cin>>s;
scanf("%s",s);
// if(s[0]=='-') cout<<"-";
int flag=1,a1,a2,a3;
for(int i=0;i<strlen(s);i++){
if(s[i]=='.'){
flag=2;
a1=i;
break;
}
else if(s[i]=='/'){
flag=3;
a2=i;
break;
}
else if(s[i]=='%'){
flag=4;
a3=i;
break;
}
else flag=1;
}
//cout<<flag<<" ";
if(flag==1){
zh2(s,strlen(s));
}
int p1,p2;//用来统计两个数字数组的长度,为啥要自己统计因为不知道为啥用strlen统计出来的老是不对
if(flag==2){
p1=0;
for(int i=0;i<a1;i++){
s1[p1]=s[i];
k[p1]=s[i]-'0';
p1++;
}
p2=0;
for(int i=a1+1;i<strlen(s);i++){
s2[p2]=s[i];
h[p2]=s[i]-'0';
p2++;
}
z1(k,p1);
cout<<".";
z2(h,p2);
}
if(flag==3){
p1=0;
for(int i=0;i<a2;i++){
s1[p1]=s[i];
k[p1]=s[i]-'0';
p1++;
}
p2=0;
for(int i=a2+1;i<strlen(s);i++){
s2[p2]=s[i];
h[p2]=s[i]-'0';
p2++;
}
z1(k,p1);
cout<<"/";
z2(h,p2);
}
if(flag==4){
p1=0;
for(int i=0;i<a3;i++){
s1[p1]=s[i];
k[p1]=s[i]-'0';
p1++;
}
z1(k,p1);
cout<<"%";
}
return 0;
}
```
by freegt @ 2023-06-18 23:23:03
```cpp
for(int i=0;i<a1;i++){
s1[i]=s[i];
}
```
这段代码后面要补段`s1[a1]='\0';`,要不函数`zh1`内获取长度就不对了
by JvRuoDiu @ 2023-06-27 16:01:51
@[JvRuoDiu](/user/288008)
哭哭哭,明白了,字符串和字符数组的区别55555
by freegt @ 2023-07-14 16:54:21