C++ Primer Plus(第五版)第四章编程练习题9 求助
第五题:结构CandyBar 包含3个成员.第一个成员存储了糖块的品牌,第二个成员存储糖块的重量(可以有小数);第三个成员存储了糖块的卡路里,含量(整数).请编写一个程序,声明这个结构,创建一个名为snack的CandyBar变量,并将基成员分别初始化为"Mocha Munch"2.3和350.化应在声明snack时进行.最后,程序显示snack变量的内容.第六题:结构CandyBar包含3个成员,如编程练习5所示.请编写一个程序,创建一个程序,创建一个饱含3个元素的CandyBar数组,并将它们初始化为所选择的值,然后显示每个结构的内容.
第九题:完成编程练习6,但使用new来动态分配数组,而不是声明一个包含3个元素的CandyBar数组.
做第九题作业时,这里小弟理解 不是声明一个包含3个元素的CandyBar数组 应为声明包含未知个元素的CandyBar数组,于是写了如下代码,编译通过,但输入bra数组后就立刻出现遗传乱码数字,小弟菜鸟也,不懂,求助高手们,帮忙改一下代码并说明一下,先谢过!
#include <iostream>
#include <cstring>
using namespace std;
struct CandyBar
{
char brand[30];
float weight;
int colorie;
};
void main()
{
cout<<"请输入正整数:";
int x;
cin>>x;
CandyBar* p=new CandyBar[x];
char bra[30];
for(int i=0;i<x;i++)
{
cin.getline(bra,30);
strncpy(p[i].brand,bra,29);
p[i].brand[29]='\0';
cin>>p[i].weight;
cin>>p[i].colorie;
cout<<p[i].brand<<endl;
cout<<p[i].weight<<endl;
cout<<p[i].colorie<<endl;
}
delete [] p;
}