我不理解

陈志轩  •  5个月前


#include<iostream>
#include<stack>
using namespace std;
stack <int> ans;
int main(){
	int n,m;
	cin>>n>>m;
	if (n == 0){
		ans.push(0);
	}
	while (n > 0){
		ans.push(n % m);
		n /= m;
	}
	while (!ans.empty()){
		if (ans.top() >= 10){
			putchar((char)(ans.top() - 10 + 'A'));
		}
		else{
			cout<<ans.top();
		}
		ans.pop();
	}
	return 0;
}

上面的代码应该会在第 18 行报错,因为没有加 cstdio 头文件,但是放到 magicoj 上就 AC 了,我很不理解

我发现在 C++98 评测环境下改代码会 CE,但是放到其他评测环境下(如 C++11)就 不会 CE 了,所以是我的 dev-c++ 太 old 了吗(

还有一个,我把代码改成了这样:

#include<iostream>
#include<stack>
using namespace std;
stack <int> ans;
int main(){
	int n,m;
	cin>>n>>m;
	if (n == 0){
		ans.push(0);
	}
	while (n > 0){
		ans.push(n % m);
		n /= m;
	}
	while (!ans.empty()){
		if (ans.top() >= 10){
			putwchar((char)(ans.top() - 10 + 'A'));
		}
		else{
			cout<<ans.top();
		}
		ans.pop();
	}
	return 0;
}

这次不会 CE 了,但是只有第八个测试点 WA 了,其他都 AC,而且我的输出与第八个点的答案一样,所以咋回事呢(


评论:

蒟蒻想问一句putchar改成putwchar有甚么效果


吴悠  •  5个月前