80分,改后70,WA求解
查看原帖
80分,改后70,WA求解
229218
最萌軒宇楼主2022/10/20 20:38

80 分代码:

#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main() {
	scanf("%d", &n);
	int k = 0, nn = abs(n);
	int m = nn;
	while(nn) {
		if(nn / 10 != 0) {
			nn /= 10;
			k++;
		} else {
			k++;
			break;
		}
	}
	if(n == 0) {
		printf("%d", n);
	} else if(n < 0) {
		printf("-");
	}
	if(m % 10 == 0) {
		m /= 10;
		for(int i = 1; i < k; i++) {
			printf("%d", m % 10);
			m /= 10;
		}
	} else {
		for(int i = 1; i <= k; i++) {
			printf("%d", m % 10);
			m /= 10;
		}
	}
	return 0;
}

主要思路是用 while 求整数绝对值长度,然后判断是否为 0 ,或负数,否则正数,负数输出" - ",接着倒序输出,这里忽视了 9000000 的情况,导致输出 0 没有全部判断

下面是 70 分代码:

#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main() {
	scanf("%d", &n);
	int k = 0, nn = abs(n);
	int m = nn;
	while(nn) {
		if(nn / 10 != 0) {
			nn /= 10;
			k++;
		} else {
			k++;
			break;
		}
	}
	if(n == 0) {
		printf("%d", n);
	} else if(n < 0) {
		printf("-");
	}
	for(int i = 1; i <= k; i++) {
		if(m % 10 == 0) {
			m /= 10;
		} else {
			printf("%d", m % 10);
			m /= 10;
		}
	}
	return 0;
}

改后在 for 循环内加入

if(m % 10 == 0) {
	m /= 10;
}

判断当前数值是否为 0 ,否则输出当前数值

求dalao讲解, 蟹蟹

2022/10/20 20:38
加载中...