【C/C++】PAT乙级1027打印沙漏 测试点0,1,2错误
题目描述
错误详情
#include<iostream>
using namespace std;
int main(void){
int num;
char c;
cin>>num>>c;
int last;
int k=1;
if(num==1){
cout<<"*"<<endl;
last=0;
}
else if(num>1){
{
num=num-1;
while(num>0){
k+=2;
num=num-k*2;
if(num<0){
last=num+k*2;
break;
}
}
}
if(last!=0){
k=k-2;
}
//k=k-2;//最长的一排有多少个;
int current_num=k;
for(int i=0;i<k;i++){
if(current_num==k){
for(int j=0;j<k;j++){
if(j!=k-1) cout<<"*";
else cout<<"*"<<endl;
}
}
else{
for(int j=0;j<(k-current_num)/2;j++){
cout<<" ";
}
for(int j=0;j<current_num;j++){
if(j!=current_num-1) cout<<"*";
else cout<<"*"<<endl;
}
}
if(i<k/2) current_num-=2;
else current_num+=2;
}
}
cout<<last;
return 0;
}
这个代码在我自己电脑上Dev c++运行是正确的,但是在平台上运行是错误的。错误主要是剩余符号为0的情况。
错误对比
为什么会这样啊,表示费解,求大佬T T