| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1687 人关注过本帖
标题:大家看看我的程序错哪了?
只看楼主 加入收藏
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
收藏
 问题点数:0 回复次数:12 
大家看看我的程序错哪了?
题目是:设计一个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;
}
搜索更多相关主题的帖子: int car 年份 
2008-03-09 17:08
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
自学的道路不容易。要把握好每一个能学习的机会。只要用学到东西其它的不用管。
提醒一下,要注意一下程序的风格。
加油!

[[it] 本帖最后由 随心 于 2008-3-9 17:45 编辑 [/it]]

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-03-09 17:25
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
收藏
得分:0 
谢谢你的鼓励,我按你说的改了程序,但是运行后,再输入完数据后只显示最后输入的结果啊,怎么回事呢?

I think I could do better.
2008-03-09 17:35
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
[bo]以下是引用 [un]flysky102[/un] 在 2008-3-9 17:08 的发言:[/bo]

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

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

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

你的意思是要把上面输入的再全部输出一遍吧?

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-03-09 17:38
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
收藏
得分:0 
恩,是的

I think I could do better.
2008-03-09 17:42
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
这样:
程序代码:
#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]]

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-03-09 17:44
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
动态分配的内存用过之后需要被delete。
delete [] cars;
2008-03-09 17:45
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
收藏
得分:0 
cin >> cars[i].name; //为什么这个地方又能用“.”了呢?还有,我看primer书上说的,输入字符时最好用cin.get()可是我发现在这个程序里如果用了这个,程序就不会达到题目要求的那样了

I think I could do better.
2008-03-09 17:47
flysky102
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-26
收藏
得分:0 
回复 7# 的帖子
是啊,我忘了释放内存了,初学,经验不足啊

I think I could do better.
2008-03-09 17:49
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
因为这个时候cars[i]已经是数组中一个变量了就可以用.我想用cin.get(),是想得到一个回车吧....

学习需要安静。。海盗要重新来过。。
2008-03-09 17:51
快速回复:大家看看我的程序错哪了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019106 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved