第一题
题目描述
下面是一个头文件:
const int Len = 40;
struct golf
{
char fullname[Len];
int handicap;
};
int setgolf(golf &g);
void handicap(golf &g, int hc);
void showgolf(const golf &g);
函数说明
下面是一个头文件:
const int Len = 40;
struct golf
{
char fullname[Len];
int handicap;
};
int setgolf(golf &g);
void handicap(golf &g, int hc);
void showgolf(const golf &g);
函数说明
注意到setgolf( )被重载,可以这样使用其第一个版本:
golf ann;
setgolf (ann,"Ann Birdfree", 24);
上述函数调用提供了存储在ann结构中的信息。可以这样使用其第二个版本:
golf andy;
setgolf (andy);
上述函数将提示用户输入姓名和等级,并将它们存储在andy结构中。这个函数可以(但是不一定必须) 在内部使用第一个版本。
根据这个头文件,创建一个多文件程序。其中的一个文件名为golf.cpp,它提供了与头文件中的 原型匹配的函数定义;另一个文件应包含main(),并演示原型化函数的所有特性。例如,包含一个 让用户输入的循环,并使用输入的数据来填充一个由golf结构组成的数组,数组被填满或用户将高 尔夫选手的姓名设置为空字符串时,循环将结束。main( )函数只使用头文件中原型化的函数来访问 golf结构。
代码片段
//golf.h
const int Len = 40;
struct golf
{
char fullname[Len];
int handicap;
};
void setgolf(golf &g, const char *name, int hc);
int setgolf(golf &g);
void handicap(golf &g, int hc);
void showgolf(const golf &g);
//golf.cpp
#include
#include
#include"golf.h"
void setgolf(golf &g, const char *name, int hc)
{
strcpy(g.fullname,name);
handicap(g,hc);
return ;
}
int setgolf(golf &g)
{
using namespace std;
cin.clear();
cin.sync();
cout<<"Fullname: ";
cin.getline(g.fullname,Len);
if(!strcmp(g.fullname,""))
return 0;
else
{
cout<<"Handicap: ";(cin>>g.handicap).get();
return 1;
}
}
void handicap(golf &g, int hc)
{
g.handicap=hc;
}
void showgolf(const golf &g)
{
using std::cout;
cout<<"Fullname: "<
//main.cpp
#include
#include "golf.h"
int m = 0;
int main(void)
{
using namespace std;
cout << "Please enter how many persons will you enter? " << endl;
while (!(cin >> m))
{
cout << "Invalid input! Please enter ahain!n";
cin.clear();
cin.sync();
}
cin.clear();
cin.sync();
golf *pr = new golf[m];
cout << "Now, you can input your data in the formal of below data: n";
setgolf(pr[0], "fullname1", 1);
showgolf(pr[0]);
cout << "Below are your inputs: n";
for (int i = 0; i < m&&setgolf(pr[i]); i++)
cout << "nThe next input: nn";
cout << "nThe input has finished!nBye!n";
cout << "Below are your input: n";
for (int i = 0; i < m && pr[i].fullname[0] != ' '; i++)
showgolf(pr[i]);
while (cin.get() != EOF)
;
return 0;
}
第二题
题目描述
修改程序清单9.9,用string 对象代替字符数组。这样,该程序将不再需要检查输入的字符串是否 过长,同时可以将输入字符串同字符串“” 进行比较,以判断是否为空行。
代码片段
#include
#include
#include
using namespace std;
const int Size = 10;
void strcount(const string str)
{
static int total = 0;
int count = 0;
cout << """ << str << "" contains ";
for(int i=0;str[i]!=' ';i++)
if(str[i]!=' ')
count++;
total += count;
cout << count << " charactersn";
cout << total << " characters total!n";
}
int main()
{
string input;
cout << "Enter a line:" << endl;
while (getline(cin,input))
{
if(input=="")
break;
cin.clear();
cin.sync();
strcount(input);
cout<<"Enter next line( empty line to quit): "<
第三题
题目描述
下面是一个结构声明
struct chaff{
char dross[20];
int slag;
}
编写一个程序,使用定位new运算符将一个包含两个这种结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。一种方法是像程序清单9.10那样将一个静态数组用作缓冲区;另一种方法是使用常规new运算符来分配缓冲区。
代码片段
#include
#include
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
char zeon[512];
int main(void)
{
chaff *pr = new (zeon) chaff[2];
chaff *ps = new chaff[2];
cout<<"Please enter your data:n";
for(int i=0;i<2;i++)
{
cout<<"Dross: ";
char name[20];
cin.getline(name,20);
cin.clear();
cin.sync();
strcpy((pr+i)->dross,name);
strcpy((ps+i)->dross,name);
cout<<"nSlag: ";
cin>>(pr+i)->slag;
cin.get();
(ps+i)->slag=(pr+i)->slag;
}
for(int i=0;i<2;i++)
{
cout<<"n#"<dross<dross;
cout<<"nSlag: "<<(ps+i)->dross<slag<
第四题
题目描述
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
//main.cpp #include#include "golf.h" int m = 0; int main(void) { using namespace std; cout << "Please enter how many persons will you enter? " << endl; while (!(cin >> m)) { cout << "Invalid input! Please enter ahain!n"; cin.clear(); cin.sync(); } cin.clear(); cin.sync(); golf *pr = new golf[m]; cout << "Now, you can input your data in the formal of below data: n"; setgolf(pr[0], "fullname1", 1); showgolf(pr[0]); cout << "Below are your inputs: n"; for (int i = 0; i < m&&setgolf(pr[i]); i++) cout << "nThe next input: nn"; cout << "nThe input has finished!nBye!n"; cout << "Below are your input: n"; for (int i = 0; i < m && pr[i].fullname[0] != ' '; i++) showgolf(pr[i]); while (cin.get() != EOF) ; return 0; }
第二题
题目描述
修改程序清单9.9,用string 对象代替字符数组。这样,该程序将不再需要检查输入的字符串是否 过长,同时可以将输入字符串同字符串“” 进行比较,以判断是否为空行。
代码片段
#include
#include
#include
using namespace std;
const int Size = 10;
void strcount(const string str)
{
static int total = 0;
int count = 0;
cout << """ << str << "" contains ";
for(int i=0;str[i]!=' ';i++)
if(str[i]!=' ')
count++;
total += count;
cout << count << " charactersn";
cout << total << " characters total!n";
}
int main()
{
string input;
cout << "Enter a line:" << endl;
while (getline(cin,input))
{
if(input=="")
break;
cin.clear();
cin.sync();
strcount(input);
cout<<"Enter next line( empty line to quit): "<
第三题
题目描述
下面是一个结构声明
struct chaff{
char dross[20];
int slag;
}
编写一个程序,使用定位new运算符将一个包含两个这种结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。一种方法是像程序清单9.10那样将一个静态数组用作缓冲区;另一种方法是使用常规new运算符来分配缓冲区。
代码片段
#include
#include
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
char zeon[512];
int main(void)
{
chaff *pr = new (zeon) chaff[2];
chaff *ps = new chaff[2];
cout<<"Please enter your data:n";
for(int i=0;i<2;i++)
{
cout<<"Dross: ";
char name[20];
cin.getline(name,20);
cin.clear();
cin.sync();
strcpy((pr+i)->dross,name);
strcpy((ps+i)->dross,name);
cout<<"nSlag: ";
cin>>(pr+i)->slag;
cin.get();
(ps+i)->slag=(pr+i)->slag;
}
for(int i=0;i<2;i++)
{
cout<<"n#"<dross<dross;
cout<<"nSlag: "<<(ps+i)->dross<slag<
第四题
题目描述
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
修改程序清单9.9,用string 对象代替字符数组。这样,该程序将不再需要检查输入的字符串是否 过长,同时可以将输入字符串同字符串“” 进行比较,以判断是否为空行。
代码片段
#include
#include
#include
using namespace std;
const int Size = 10;
void strcount(const string str)
{
static int total = 0;
int count = 0;
cout << """ << str << "" contains ";
for(int i=0;str[i]!=' ';i++)
if(str[i]!=' ')
count++;
total += count;
cout << count << " charactersn";
cout << total << " characters total!n";
}
int main()
{
string input;
cout << "Enter a line:" << endl;
while (getline(cin,input))
{
if(input=="")
break;
cin.clear();
cin.sync();
strcount(input);
cout<<"Enter next line( empty line to quit): "<
第三题
题目描述
下面是一个结构声明
struct chaff{
char dross[20];
int slag;
}
编写一个程序,使用定位new运算符将一个包含两个这种结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。一种方法是像程序清单9.10那样将一个静态数组用作缓冲区;另一种方法是使用常规new运算符来分配缓冲区。
代码片段
#include
#include
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
char zeon[512];
int main(void)
{
chaff *pr = new (zeon) chaff[2];
chaff *ps = new chaff[2];
cout<<"Please enter your data:n";
for(int i=0;i<2;i++)
{
cout<<"Dross: ";
char name[20];
cin.getline(name,20);
cin.clear();
cin.sync();
strcpy((pr+i)->dross,name);
strcpy((ps+i)->dross,name);
cout<<"nSlag: ";
cin>>(pr+i)->slag;
cin.get();
(ps+i)->slag=(pr+i)->slag;
}
for(int i=0;i<2;i++)
{
cout<<"n#"<dross<dross;
cout<<"nSlag: "<<(ps+i)->dross<slag<
第四题
题目描述
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
第三题
题目描述
下面是一个结构声明
struct chaff{
char dross[20];
int slag;
}
编写一个程序,使用定位new运算符将一个包含两个这种结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。一种方法是像程序清单9.10那样将一个静态数组用作缓冲区;另一种方法是使用常规new运算符来分配缓冲区。
代码片段
#include
#include
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
char zeon[512];
int main(void)
{
chaff *pr = new (zeon) chaff[2];
chaff *ps = new chaff[2];
cout<<"Please enter your data:n";
for(int i=0;i<2;i++)
{
cout<<"Dross: ";
char name[20];
cin.getline(name,20);
cin.clear();
cin.sync();
strcpy((pr+i)->dross,name);
strcpy((ps+i)->dross,name);
cout<<"nSlag: ";
cin>>(pr+i)->slag;
cin.get();
(ps+i)->slag=(pr+i)->slag;
}
for(int i=0;i<2;i++)
{
cout<<"n#"<dross<dross;
cout<<"nSlag: "<<(ps+i)->dross<slag<
第四题
题目描述
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
下面是一个结构声明
struct chaff{
char dross[20];
int slag;
}
编写一个程序,使用定位new运算符将一个包含两个这种结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。一种方法是像程序清单9.10那样将一个静态数组用作缓冲区;另一种方法是使用常规new运算符来分配缓冲区。
代码片段
#include
#include
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
char zeon[512];
int main(void)
{
chaff *pr = new (zeon) chaff[2];
chaff *ps = new chaff[2];
cout<<"Please enter your data:n";
for(int i=0;i<2;i++)
{
cout<<"Dross: ";
char name[20];
cin.getline(name,20);
cin.clear();
cin.sync();
strcpy((pr+i)->dross,name);
strcpy((ps+i)->dross,name);
cout<<"nSlag: ";
cin>>(pr+i)->slag;
cin.get();
(ps+i)->slag=(pr+i)->slag;
}
for(int i=0;i<2;i++)
{
cout<<"n#"<dross<dross;
cout<<"nSlag: "<<(ps+i)->dross<slag<
第四题
题目描述
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
第四题
题目描述
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &S, const double ar[], int n);
void setSales(Sales &s);
void showSales(const Sales &s);
}
第一个文件是一个头文件,其中包含名称空间;第二个文件是一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales( )的交互式版本为一个结构提供值,然后使用setSales( )的非交互式版本为另一个结构提供值。另外它还使用showSales( )来显示这两个结构的内容。
代码片段
//4.h
namespace sALEs
{
const int QUARTERs = 4;
struct sales
{
double sales[QUARTERs];
double average;
double max;
double min;
};
void setsales(sales &s, const double ar[], int n);
void setsales(sales &s);
void showsales(const sales &s);
}
//4.cpp
#include
#include "4.h"
namespace sALEs
{
void setsales(sales &s, const double ar[], int n)
{
double sum = 0;
double min = ar[0], max = ar[0];
for (int i = 0; i < QUARTERs && i < n; i++)
{
s.sales[i] = ar[i];
sum += ar[i];
if (min > ar[i])
min = ar[i];
if (max < ar[i])
max = ar[i];
}
s.average = sum / (n > QUARTERs ? QUARTERs : n);
s.min = min;
s.max = max;
}
void setsales(sales &s)
{
using std::cout, std::cin;
cout << "Please enter the sales(lesser than 0 to quit and no more than four numbers): n";
double min, max, sum = 0;
int i;
for (i = 0; i < 4; i++)
{
cout << "#" << i+1 << "n";
cin >> s.sales[i];
if (s.sales[i] < 0)
break;
if (i == 0)
max = min = s.sales[0];
sum += s.sales[i];
if (min > s.sales[i])
min = s.sales[i];
if (max < s.sales[i])
max = s.sales[i];
}
cout << "Bye!n";
s.average=sum/i; s.min = min;
s.max = max;
}
void showsales(const sales &s)
{
using namespace std;
cout<<"sales:n";
for(int i=0;i<4;i++)
{
if(s.sales[i]>1e-6)
cout<
cout<
//main.cpp
#include
#include"4.h"
int main(void)
{
using namespace sALEs;
sales exam1,exam2;
double temp[3]={1.1,2.2,3.3};
setsales(exam1,temp,3);
showsales(exam1);
setsales(exam2);
showsales(exam2);
while(std::cin.get()!=EOF);
return 0;
}
//main.cpp #include#include"4.h" int main(void) { using namespace sALEs; sales exam1,exam2; double temp[3]={1.1,2.2,3.3}; setsales(exam1,temp,3); showsales(exam1); setsales(exam2); showsales(exam2); while(std::cin.get()!=EOF); return 0; }



