求解答,测试点本地过的,没有问题,但就是显示测试点错误不AC

P1553 数字反转(升级版)

```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


|