这段代码语法没问题,运行起来不对劲,不知道怎么回事

来源:百度知道 编辑:UC知道 时间:2024/06/09 10:18:45
//题目是主要针对new结构数组的赋值和循环问题
#include<iostream.h>
struct car
{
char name[20];
int year;

}
main()
{
int n=0,i=0;
cout<<"how many cars do you wish to catalog?";
cin>>n;//输入需要的结构数量
car *p=new car[n];//分配内存
if(i<n)//用循环给car结构数组内的成员分别赋值,把if换成while错误不一样
{
cout<<"car#"<<i+1<<":"<<endl;
cout<<"please enter the name:";
cin.getline((p+i)->name,20);//给name成员赋值,要求输入可以有空格,运行时,不显示对name的输入
cout<<"please enter the year:";
cin>>(p+i)->year;//给year成员赋值
i++;
}
i=0;
cout<<"here is what you want:\n";
while(i<n)//这里再通过查看输出刚才输入的信息
{cout<<(p+i)->year<<"...."<<(p+i)->name[20]<<endl;
i++;
}
}

1、cin.getline读取了你上面输入n时输入的回车,所以没有等待你再次输入数据。可以改成:
cin>>(p+i)->name;

2、输出字符串只需要给出字符串第一个字符的地址,如下:cout<<(p+i)->year<<"...."<<(p+i)->name<<endl;

3、一些建议:
结构体定义后应该有分号。
struct car
{
char name[20];
int year;
};

main函数因该加上返回类型,因为默认是int