初学C++,练习题编程无法运行。请高手帮忙看下程序!
做书上的练习题:第六章6.编写一个程序,记录捐助给“维护合法权利团体”的钱。该程序要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动...
做书上的练习题:第六章 6.编写一个程序,记录捐助给“维护合法权利团体”的钱。该程序要求用户输入捐献者数目,然后要求用户输入每一个捐献者的姓名和款项。这些信息被储存在一个动态分配的结构数组中。每个结构有两个成员:用来存储姓名的字符数组(或string对象)和用来存储款项的double成员。读取所有的数据后,程序将显示所有捐款超过10000的捐款者的姓名及其捐款数额。该列表前应包含一个标题,指出下面的捐款者是重要捐款人(Grand Patrons)。然后,程序将列出其他的捐款者,该列表要以Patrons开关。如果某种类别没有捐款者,则程序将打印单词“none”。该程序只显示这两种类别,而不进行排序。
编程如下:
// donation patrons.cpp : 定义控制台应用程序的入口点。
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
string name[20];
}
int main()
{
int n,i;
int sign=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=0,i<n,i++)
{
cout<<"请输入第"<<i<<"名捐献者姓名:"<<endl;
cin.getline(n_patrons[i].name,20);
cout<<"请输入第"<<i<<"名捐献数额:"<<endl;
cin.get();
cin>>n_patrons[i].money;
}
while(n!=0)
{
if(n_patrons[i].money>=10000)
{
cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
else if(n_patrons[i].money<10000)
{
cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
}
cout<<"none"<<endl;
return 0;
}
请高手帮我看看 程序里有那几处错误,关于输入捐款者名字, 用cin.getline格式应该如何编写,试了好几种方法,都不行。
还有请教高手,初学C++应该如何练习编程,看了书上的内容总也记不住,有没有有效点的方法适合初学者一步一步学习的。
万分感谢! 展开
编程如下:
// donation patrons.cpp : 定义控制台应用程序的入口点。
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
string name[20];
}
int main()
{
int n,i;
int sign=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=0,i<n,i++)
{
cout<<"请输入第"<<i<<"名捐献者姓名:"<<endl;
cin.getline(n_patrons[i].name,20);
cout<<"请输入第"<<i<<"名捐献数额:"<<endl;
cin.get();
cin>>n_patrons[i].money;
}
while(n!=0)
{
if(n_patrons[i].money>=10000)
{
cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
else if(n_patrons[i].money<10000)
{
cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
}
cout<<"none"<<endl;
return 0;
}
请高手帮我看看 程序里有那几处错误,关于输入捐款者名字, 用cin.getline格式应该如何编写,试了好几种方法,都不行。
还有请教高手,初学C++应该如何练习编程,看了书上的内容总也记不住,有没有有效点的方法适合初学者一步一步学习的。
万分感谢! 展开
4个回答
展开全部
// donation patrons.cpp : 定义控制台应用程序的入口点。
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
string name; //
};//
int main()
{
int n,i;
int sign;//=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=0,i<n,i++)
{
cout<<"请输入第"<<i<<"名捐献者姓名:"<<endl;
cin.ignore(100, '\n');//
getline(cin, n_patrons[i].name);//
cout<<"请输入第"<<i<<"名捐献数额:"<<endl;
//cin.get();
cin>>n_patrons[i].money;
}
cout << "Grand patrons:" << endl;//
sign=0;//
for(i=0;i<n;i++) //while(n!=0)
{
if(n_patrons[i].money>=10000)
{
//cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
sign++; //i++;
}
}//
if(sign==0) cout << "none" << endl;//
cout << "Patrons:" << endl;//
sign=0;//
for(i=0;i<n;i++)//
{//
if(n_patrons[i].money<10000)
{
//cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
sign++;//i++;
}
}
if(sign==0) cout<<"none"<<endl; //
delete[] n_patrons;//
return 0;
}
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
string name; //
};//
int main()
{
int n,i;
int sign;//=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=0,i<n,i++)
{
cout<<"请输入第"<<i<<"名捐献者姓名:"<<endl;
cin.ignore(100, '\n');//
getline(cin, n_patrons[i].name);//
cout<<"请输入第"<<i<<"名捐献数额:"<<endl;
//cin.get();
cin>>n_patrons[i].money;
}
cout << "Grand patrons:" << endl;//
sign=0;//
for(i=0;i<n;i++) //while(n!=0)
{
if(n_patrons[i].money>=10000)
{
//cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
sign++; //i++;
}
}//
if(sign==0) cout << "none" << endl;//
cout << "Patrons:" << endl;//
sign=0;//
for(i=0;i<n;i++)//
{//
if(n_patrons[i].money<10000)
{
//cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
sign++;//i++;
}
}
if(sign==0) cout<<"none"<<endl; //
delete[] n_patrons;//
return 0;
}
展开全部
struct patrons { .... }中 大括号结束后,后面添加一个分号。
struct patrons中的string name[20];改称string name;
for (i=0,i<n,i++) 中的逗号改成分号
cin.getline(n_patrons[i].name,20); 改成 cin >> n_patrons[i].name;
cin.get(); 一行去掉
while(n!=0) 一行改成for(i=0;i<n;)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
照着书写的错误太多了。
确定string name[20],不是char name[20];,
还有for循环用逗号分隔吗?
getline是用char数组为参数的
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
char name[20];
};
int main()
{
int n,i;
int sign=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=1;i<=n;i++)
{
cout<<"请输入第"<<i<<"名捐献者姓名:"<<endl;
//cin.getline(n_patrons[i].name,19);
cin>>n_patrons[i].name;
cout<<"请输入第"<<i<<"名捐献数额:"<<endl;
cin>>n_patrons[i].money;
}
i=0;
while(i<n)
{
if(n_patrons[i].money>=10000)
{
cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
else if(n_patrons[i].money<10000)
{
cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
}
cout<<"none"<<endl;
system("pause");
return 0;
}
这是改过之后的
c++你就是找一本经典的书,照着上面的例子一点一点的敲吧,一边敲一边琢磨,认真看就是了,应该是没有捷径的吧。
c++ primer这本书不错
确定string name[20],不是char name[20];,
还有for循环用逗号分隔吗?
getline是用char数组为参数的
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
char name[20];
};
int main()
{
int n,i;
int sign=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=1;i<=n;i++)
{
cout<<"请输入第"<<i<<"名捐献者姓名:"<<endl;
//cin.getline(n_patrons[i].name,19);
cin>>n_patrons[i].name;
cout<<"请输入第"<<i<<"名捐献数额:"<<endl;
cin>>n_patrons[i].money;
}
i=0;
while(i<n)
{
if(n_patrons[i].money>=10000)
{
cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
else if(n_patrons[i].money<10000)
{
cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
}
cout<<"none"<<endl;
system("pause");
return 0;
}
这是改过之后的
c++你就是找一本经典的书,照着上面的例子一点一点的敲吧,一边敲一边琢磨,认真看就是了,应该是没有捷径的吧。
c++ primer这本书不错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题有点多!下面是我改的你试试!
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
char name[20];
};
int main()
{
int n,i;
int sign=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"名捐献者姓名:"<<endl;
cin.ignore();
cin.getline(n_patrons[i].name,20);
//cin>>n_patrons[i].name;
cout<<"请输入第"<<i+1<<"名捐献数额:"<<endl;
//cin.get();
cin>>n_patrons[i].money;
}
i = 0;
while(i<n)
{
if(n_patrons[i].money>=10000)
{
cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
else if(n_patrons[i].money<10000)
{
cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
}
if (n==0)
cout<<"none"<<endl;
system("pause");
return 0;
}
#include <iostream>
#include <string>
using namespace std;
struct patrons
{
double money;
char name[20];
};
int main()
{
int n,i;
int sign=0;
cout<<"请输入捐献者数目:"<<endl;
cin>>n;
patrons *n_patrons=new patrons[n];
for (i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"名捐献者姓名:"<<endl;
cin.ignore();
cin.getline(n_patrons[i].name,20);
//cin>>n_patrons[i].name;
cout<<"请输入第"<<i+1<<"名捐献数额:"<<endl;
//cin.get();
cin>>n_patrons[i].money;
}
i = 0;
while(i<n)
{
if(n_patrons[i].money>=10000)
{
cout<<"Grand patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
else if(n_patrons[i].money<10000)
{
cout<<"Patrons:"<<endl;
cout<<n_patrons[i].name<<"捐款:"<<n_patrons[i].money<<endl;
i++;
}
}
if (n==0)
cout<<"none"<<endl;
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询