百口莫辩克斯 2022-04-19 15:21 采纳率: 61.5%
浏览 20
已结题

洛谷P1305新二叉树 分别用string和getchar,结果都对,为什么只有getcahr错了?

getchar()版本
#include<bits/stdc++.h>
using namespace std;
struct node
{
char now;char l;char r;
}a[100];
int n;
char root;
void dfs(char x)
{
if(x=='')return;
cout<<x;
for(int i=1;i<=n;i++)
{
if(a[i].now==x)
{
dfs(a[i].l);
dfs(a[i].r);
break;
}
}
}
bool f[100005]={0};
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
getchar();
a[i].now=getchar();
a[i].l=getchar();
a[i].r=getchar();
f[(int)(a[i].l)]=1;
f[(int)(a[i].r)]=1;
}
for(int i=1;i<=n;i++)
{
if(!f[(int)(a[i].now)])root=a[i].now;
}
if(root!='
')
dfs(root);
return 0;

}

string版本
#include<bits/stdc++.h>
using namespace std;
struct node
{
char now;char l;char r;
}a[100];
int n;
char root;
void dfs(char x)
{
if(x=='')return;
cout<<x;
for(int i=1;i<=n;i++)
{
if(a[i].now==x)
{
dfs(a[i].l);
dfs(a[i].r);
break;
}
}
}
bool f[100005]={0};
int main()
{
cin>>n;
string m;
for(int i=1;i<=n;i++)
{
cin>>m;
a[i].now=m[0];
a[i].l=m[1];
a[i].r=m[2];
f[(int)(a[i].l)]=1;
f[(int)(a[i].r)]=1;
}
for(int i=1;i<=n;i++)
{
if(!f[(int)(a[i].now)])root=a[i].now;
}
if(root!='
')
dfs(root);
return 0;

}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-04-19 17:26
    关注

    乍看起来c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在输入、输出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf简单,不用格式控制符!
    但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。
    摒弃cin、cout、ifstream、ofstream、istringstream、ostringstream!
    使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 VESTA绘图原子颜色显示异常
  • ¥15 天翼云搭建多ip l2tp
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)
  • ¥15 通过AT指令控制esp8266发送信息
  • ¥15 有哪些AI工具提供可以通过代码上传EXCEL文件的API接口,并反馈分析结果
  • ¥15 二维装箱算法、矩形排列算法(相关搜索:二维装箱)