朱景瑜大人 @ 2017-11-09 22:28:47
找了一天都找不到问题出在哪里QAQ 求大佬帮看看 非常感谢
#include<iostream>
using namespace std;
int main()
{
int n,i=1,j;
int a[1000];
cin>>n;
if(n<0)
{
n=-n;
do{
a[i]=n%10;
n=n/10;
i++;
}while(n>0);
cout<<"-";
if(a[1]!=0) cout<<a[1];
for(j=2;j<=i-1;j++)
{
cout<<a[j];
}
}
else {
do{
a[i]=n%10;
n=n/10;
i++;
}while(n>0);
if(a[1]!=0) cout<<a[1];
for(j=2;j<=i-1;j++)
{
cout<<a[j];
}
}
return 0;
}
by Kanade @ 2017-11-09 23:32:12
如果n后面有多个0的话,你的判断就是错误的。
因为不止a[1]是0
正确的写法应该像这样
int pos=1;
while(a[pos]==0&&pos<i-1) pos++;
int pos=1;
while(a[pos]==0) pos++;
for(int j=pos;j<=i-1;j++) {
printf("%d",a[j]);
}
修改后的代码如下
已AC
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i=1,j;
int a[1000];
cin>>n;
if(n<0)
{
n=-n;
do{
a[i]=n%10;
n=n/10;
i++;
}while(n>0);
cout<<"-";
int pos=1;
while(a[pos]==0&&pos<i-1) pos++;
for(int j=pos;j<=i-1;j++) {
printf("%d",a[j]);
}
}
else {
do{
a[i]=n%10;
n=n/10;
i++;
}while(n>0);
int pos=1;
while(a[pos]==0&&pos<i-1) pos++;
for(int j=pos;j<=i-1;j++) {
printf("%d",a[j]);
} }
return 0;
}
by Kanade @ 2017-11-09 23:33:32
好像打重了
第一个代码长这样
int pos=1;
while(a[pos]==0&&pos<i-1) pos++;
for(int j=pos;j<=i-1;j++) {
printf("%d",a[j]);
}
by user48442 @ 2017-11-10 07:13:25
因为你需要一个while来解决掉转换后开头的所有零
while(!(n % 10)){
n /= 10;
}
n是处理负数之后的(也就是n<0,n=-n)
by 无欢 @ 2017-11-19 16:44:27
唉。。太复杂
十五行代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int j,x=0;
do
{
j=n%10;
n=n/10;
x=x*10+j*10;
}while(n!=0);
printf("%d",x/10);
return 0;
}
对,就这么简单。。