c++ 中 cin 的一点小问题
解决时间 2021-01-29 12:04
- 提问者网友:焚苦与心
- 2021-01-28 21:56
#include
#include
#include
#define fo(x,y,z) for (int x=y;x<=z;x++)
#define N 100001
int a[N],f[N][2],fa[N];
int n,m=0,s,t;
struct ta{
int x,y,next;
void plug(int x,int y){x=x,y=y,next=a[x],a[x]=m;}
}e[2*N];
void dfs(int x,int f){
int j=a[x];
fa[x]=f;
while (j){
if (fa[e[j].y]){
if (e[j].y!=f) s=x,t=e[j].y;
}else
dfs(e[j].y,x);
j=e[j].next;
}
}
void init(){
int tmp,y;
cin >> n;
fo (i,1,n){
cin >> tmp;
fo (j,1,tmp){
cin >> y;
e[++m].plug(i,y);
}
}
dfs(1,0);
}
int main(){
init();
work();
return 0;
}
这段程序在C-FREE中编译有错误,问题是[Error] C:\Users\Michael\Documents\cpp\1029.cpp:28: error: `cin' was not declared in this scope,在cin>>n;的位置,为啥?
最佳答案
- 五星知识达人网友:一袍清酒付
- 2021-01-28 23:26
这是一个比较标准的写法,参考一下:
#include
#include
using namespace std;
int main()
{
int a = 0 , b = 1;
cin >> a ;
cout << a << endl ;
if(cin.fail())//如果发生输入错误的话
{
cin.clear(); //清除cin流的错误状态
cin.ignore();//提取并舍弃错误输入
}
cin >> b ;
cout << b << endl;
}
全部回答
- 1楼网友:梦中风几里
- 2021-01-29 03:08
少一句 ”using namespace std;“或者把#include改为#include
- 2楼网友:人间朝暮
- 2021-01-29 02:56
#include
#include
#include
#define fo(x,y,z) for (int x=y;x<=z;x++)
#define N 100001
using namespace std;//加上这句
int a[N],f[N][2],fa[N];
int n,m=0,s,t;
struct ta{
int x,y,next;
void plug(int x,int y){x=x,y=y,next=a[x],a[x]=m;}
}e[2*N];
void dfs(int x,int f){
int j=a[x];
fa[x]=f;
while (j){
if (fa[e[j].y]){
if (e[j].y!=f) s=x,t=e[j].y;
}else
dfs(e[j].y,x);
j=e[j].next;
}
}
void init(){
int tmp,y;
cin >> n;
fo (i,1,n){
cin >> tmp;
fo (j,1,tmp){
cin >> y;
e[++m].plug(i,y);
}
}
dfs(1,0);
}
int main(){
init();
work();
return 0;
}
这样写:
#include
#include
#include
#define fo(x,y,z) for (int x=y;x<=z;x++)
#define N 100001
using namespace std//这句时把标准库里的流类和对象加入到文件中
或者你也可以这样写:
#include
#include
#include
//这里边就直接定义所需要的类和对象了
#define fo(x,y,z) for (int x=y;x<=z;x++)
加一句using namespace std; 或者在每个cin和cout前都加上std:: 。
另外,敢问你的work()函数有定义过吗?会报错的。
#include
using namespace std;
int main()
{
int a = 0 , b = 1;
cin >> a ; //如果此时给a输入一个字母 为什么就不给我给b输入的机会?
//注意:输入字母时,流是无效的
cout << a << endl ;
fflush(stdin);//加入这句清除缓冲区。先清除再设置流状态
cin.clear();
cin >> b ; //如果给a输入一个字母 这一句会自动跳过 为什么?
cout << b << endl;
return 0;
}
我要举报
大家都在看
推荐资讯