写的乱,所以稍微加了点注释(知道可以用函数,但是之后再学一下..太久了不会用了)
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[20]={'\0'};//所有字符
gets(a);
char b[20]={'\0'};//符号前的字符
char c[20]={'\0'};//符号后
int t=0;//分类下符号,字符前0,小数点和分号1,百分号2
char g;//符号
int i=0;
int r=0;
for(;i<20;i++){
if(t==0&&a[i]!='.'&&a[i]!='/'&&a[i]!='%'){
b[i]=a[i];//把字符前的放到b
}
if(t==1){
c[r++]=a[i];//字符后的放到c
}
if(a[i]=='.'||a[i]=='/'){
t=1;
g=a[i];
}else if(a[i]=='%'){
t=2;
}
}
char d[20]={'\0'};
int j=0;
int f=1; //用来判断0是位于字符前还是字符中间
if(atoi(b)==0){
printf("%c",'0');//考虑字符前全为0
}else{
for(;i>=0;i--){ //字符前不为0
if(b[i]!='\0'){ //不考虑前面0
if(b[i]!='0'){
d[j]=b[i];
j++;
f=0;
}else if(f==0){
d[j]='0';
j++;
}
}
}
}
int m=0;//记录字符后尾部0位置
f=1;
if(t==1){
if(atoi(c)==0){ //字符后全为0
a[j++]=g;
a[j]='0';
}else{
d[j++]=g;
for(i=19;i>=0;i--){
if(c[i]=='0'&&f==1&&g=='/'){ //分号时不需要字符前0
continue;
}
if(c[i]!='\0'){
if(c[i]!='0'){
f=0;
m=j+1;
}
d[j]=c[i];
j++;
}
}
if(g=='.'){ //小数点时
for(;m<20;m++){ //让字符后0变成空字符
d[m]='\0';
}
}
}
}
printf("%s",d);
if(g=='.'&&atoi(c)==0){
printf("%c%d",g,0); //发现1.0会输出1所以补的...
}
if(t==2){
printf("%c",'%');
}
return 0;
}
下载了第一个,输入输出都一样,还是WA