注册 登录
编程论坛 C++教室

大家看看我的程序错哪了?

flysky102 发布于 2008-03-09 17:08, 1696 次点击
题目是:设计一个car的结构,用它存储下述有关汽车的信息:生产商,生产年份。编写一个程序,向用户询问有多少辆汽车。随后,程序使用new来创建一个由相应数量的car结构组成的动态数组,接下来,程序提示用户输入每辆车的生产商和年份信息,下面是我的程序,大家帮我看看错哪了,谢谢了!麻烦改错的同时告诉下我为什么这样改,我是自学的C++。。。
#include <iostream>
struct car{
   char name[20];
   int year;
};
int main()
{using namespace std;
 int n,i;
 cout<<"how many cars do you wish to catalog?";
 cin>>n;
 car *cars=new car[n];
 for(i=1;i<=n;i++)
  {cout<<"car #"<<i<<":";
   cout<<"\nplease enter the make:";
   cin.get(cars->name,20);
   cout<<"\nplease enter the year made:";
   cin>>(*cars).year;  
}
cout<<"here is your collection:"<<(*cars).year
       <<cars->name;
   system("pause");
   return 0;
}
12 回复
#2
随心2008-03-09 17:25
自学的道路不容易。要把握好每一个能学习的机会。只要用学到东西其它的不用管。
提醒一下,要注意一下程序的风格。
加油!

[[it] 本帖最后由 随心 于 2008-3-9 17:45 编辑 [/it]]
#3
flysky1022008-03-09 17:35
谢谢你的鼓励,我按你说的改了程序,但是运行后,再输入完数据后只显示最后输入的结果啊,怎么回事呢?
#4
随心2008-03-09 17:38
[bo]以下是引用 [un]flysky102[/un] 在 2008-3-9 17:08 的发言:[/bo]

题目是:设计一个car的结构,用它存储下述有关汽车的信息:生产商,生产年份。编写一个程序,向用户询问有多少辆汽车。随后,程序使用new来创建一个由相应数量的car结构组成的动态数组,接下来,程序提示用户输入每辆车的生产商和年 ...

[bo]以下是引用 [un]flysky102[/un] 在 2008-3-9 17:35 的发言:[/bo]

谢谢你的鼓励,我按你说的改了程序,但是运行后,再输入完数据后只显示最后输入的结果啊,怎么回事呢?

你的意思是要把上面输入的再全部输出一遍吧?
#5
flysky1022008-03-09 17:42
恩,是的
#6
随心2008-03-09 17:44
这样:
程序代码:

#include <iostream>
using namespace std;

struct car
{
    char name[20];
    int year;
};

int main()
{
    int n = 0, i = 0;
    cout << "how many cars do you wish to catalog?" << endl;
    cin >> n;
    car *cars = new car[n];
    for(i=0; i<n; i++)
    {
        cout << "car #" << i+1 << ":" << endl;
        cout << "\nplease enter the make:" << endl;
        cin >> cars[i].name;  
        cout<<"\nplease enter the year made:" << endl;
        cin >>cars[i].year;  
        cin.get();
    }
   
    for (int ps=0; ps<n; ps++)
    cout << "here is your collection:"
         << cars[ps].year << ends
         << cars[ps].name <<endl;
    delete [] cars;    //谢谢七楼,我的确忘了  
    system("pause");
    return 0;
}


[[it] 本帖最后由 随心 于 2008-3-9 17:53 编辑 [/it]]
#7
lonmaor2008-03-09 17:45
动态分配的内存用过之后需要被delete。
delete [] cars;
#8
flysky1022008-03-09 17:47
cin >> cars[i].name; //为什么这个地方又能用“.”了呢?还有,我看primer书上说的,输入字符时最好用cin.get()可是我发现在这个程序里如果用了这个,程序就不会达到题目要求的那样了
#9
flysky1022008-03-09 17:49
回复 7# 的帖子
是啊,我忘了释放内存了,初学,经验不足啊
#10
sunkaidong2008-03-09 17:51
因为这个时候cars[i]已经是数组中一个变量了就可以用.我想用cin.get(),是想得到一个回车吧....
#11
随心2008-03-09 17:52
cars[i]现在保存的是一个car结构的对象,访问对象的成员当然就要用"."了
#12
flysky1022008-03-09 17:53
哦,懂了,谢谢大家了
#13
flysky1022008-03-09 17:59
cars[ps].year << ends  //这里面的为什么要用个ends呢?
1