zhoushudehencai @ 2022-11-11 00:26:42
#include<stdio.h>
int flag = 0;
int jc(int i)
{
int j = 0;
int ret = 1;
for (j = 0; j <= i; j++)
{
ret *= 10;
}
return ret;
}
int ws(int n)
{
if (n < 10)
{
flag++;
return flag;
}
if (n >= 10)
{
flag++;
return ws(n / 10);
}
}
int main()
{
long n = 0;
scanf("%ld", &n);
int j = ws(n);
flag = 0;
int arr[1001];
int i = 0;
for (i = 0; i <= j - 1; i++)
{
if (i == 0)
{
arr[i] = n % 10;
}
if (i != 0)
{
arr[i] = (n / jc(i - 1)) % 10;
}
}
for (i = 0; i<=j-1; i++)
{
if (i == 0)
{
if (arr[i] != 0)
{
printf("%d", arr[i]);
}
}
if (i != 0)
{
if (arr[i] != 0 || arr[i - 1] != 0)
{
printf("%d", arr[i]);
}
}
}
return 0;
}
by W123789 @ 2022-11-11 07:41:00
错误原因:
#include<stdio.h>
int flag = 0;
int jc(int i)
{
int j = 0;
int ret = 1;
for (j = 0; j <= i; j++)
{
ret *= 10;
}
return ret;
}
int ws(int n)
{
if (n < 10)
{
flag++;
return flag;
}
if (n >= 10)
{
flag++;
return ws(n / 10);
}
}
int main()
{
long n = 0;
scanf("%ld", &n);
if (n < 0) //判负数
{
n = -n;
putchar('-');
}
int j = ws(n);
flag = 0;
int arr[1001];
int i = 0;
for (i = 0; i <= j - 1; i++)
{
if (i == 0)
{
arr[i] = n % 10;
}
if (i != 0)
{
arr[i] = (n / jc(i - 1)) % 10;
}
}
bool flag2 = 0;
for (i = 0; i<=j-1; i++)
{
if (i == 0)
{
if (arr[i] != 0 || i == j - 1) // 判n = 0
{
printf("%d", arr[i]);
}
}
if (i != 0)
{
if (arr[i] != 0 || (arr[i] == 0 && flag2 == 1))//处理0
{
printf("%d", arr[i]);
}
}
if (arr[i] > 0)
{
flag2 = 1;
}
}
return 0;
}
by zhoushudehencai @ 2022-11-11 13:15:35
感谢大佬抽出时间看我的代码,本人新手,刚刚更正了大佬指出的几个错误,已经取得了一百分,再次对大佬表示由衷的感谢!!