C ++ cin>>报错
voidinitLinklist(Linklist*&L){intn;Linklist*p,*q;cout<<"请输入学生人数:";#include<fstream>#i...
void initLinklist(Linklist *&L)
{
int n;
Linklist *p,*q;
cout<<"请输入学生人数:";
#include<fstream>
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
typedef struct node
{
string ID;
string name;
double score[3];
double average;
struct node *next;
}Linklist;
void initLinklist(Linklist *&L)
{
int n;
Linklist *p,*q;
cout<<"请输入学生人数:";
cin>>n;
cout<<"输入:学号|姓名|数学|英语|计算机"<<endl;
L=(Linklist *)malloc(sizeof(Linklist));
p=L;
while(n--)
{
q=(Linklist *)malloc(sizeof(Linklist));
// cin>>q->ID>>q->name;
q->average=0;
for (int i=0;i<3;i++)
{
cin>>q->score[i];
q->average+=q->score[i];
}
q->average/=3;
p->next=q;
p=q;
}
p->next=NULL;
}
这是部分代码
在q=(Linklist *)malloc(sizeof(Linklist));
// cin>>q->ID>>q->name;
经过调试发现这里报错
要是注释掉这一行程序正确运行 请问怎么回事? 展开
{
int n;
Linklist *p,*q;
cout<<"请输入学生人数:";
#include<fstream>
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
typedef struct node
{
string ID;
string name;
double score[3];
double average;
struct node *next;
}Linklist;
void initLinklist(Linklist *&L)
{
int n;
Linklist *p,*q;
cout<<"请输入学生人数:";
cin>>n;
cout<<"输入:学号|姓名|数学|英语|计算机"<<endl;
L=(Linklist *)malloc(sizeof(Linklist));
p=L;
while(n--)
{
q=(Linklist *)malloc(sizeof(Linklist));
// cin>>q->ID>>q->name;
q->average=0;
for (int i=0;i<3;i++)
{
cin>>q->score[i];
q->average+=q->score[i];
}
q->average/=3;
p->next=q;
p=q;
}
p->next=NULL;
}
这是部分代码
在q=(Linklist *)malloc(sizeof(Linklist));
// cin>>q->ID>>q->name;
经过调试发现这里报错
要是注释掉这一行程序正确运行 请问怎么回事? 展开
2个回答
展开全部
我觉得你没有搞清楚C和C++的区别,特别是没有搞清楚struct在C和C++中的区别,你写的是“披着C++外皮”的C代码,所以运行出错。
1.结构体定义作如下修改:
struct LinkList
{
string ID;
string name;
double score[3];
double average;
LinkList *next;
};
2.把所有的=(Linklist *)malloc(sizeof(Linklist))全部修改为=new LinkList。
追问
谢谢,那请问如果改成纯C语言的应该是怎么改呢?最近刚学C++觉得cin什么的比scanf方便所以用了C++的代码 就有点四不像的样子了
追答
把string改为char[],cin和cout改为scanf和printf,预编译部分改为C风格,其他不变
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询