第1题:
golf.cpp
#pragma warning (disable :4996)
#include <iostream>
#include "golf.h"
#include <string>
using namespace std;
void setgolf(golf& g, const char* name, int hc)
{
strcpy(g.fullname, name);
g.handicap = hc;
}
int setgolf(golf& g)
{
char name[Len];
int hc;
cout << "请输入姓名:";
cin.get(name, Len);
cin.ignore(Len, '\n');
cout << "请输入hc:";
cin >> hc;
cin.get();
if (strcmp(name, " ") == 0)
{
return 0;
}
else
{
strcpy(g.fullname, name);
g.handicap = hc;
return 1;
}
}
void handicap(golf& g, int hc)
{
g.handicap = hc;
}
void showgolf(const golf& g)
{
cout << "name:" << g.fullname << "\t";
cout << "handicap:" << g.handicap << endl;
}
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);
main.c
#include <iostream>
#include "golf.h"
int main()
{
using namespace std;
golf in[5];
for (int i = 0; i < 5; i++)
{
char name[Len];
int hc;
int result = 1;
if (i % 2 == 0)
{
cout << "此为模式2:\n";
result = setgolf(in[i]);
}
else
{
cout << "此为模式1:\n请输入姓名:";
cin.get(name, Len);
cin.ignore(Len, '\n');
cout << "请输入hc:";
cin >> hc;
cin.get();
setgolf(in[i], name, hc);
if (strcmp(name, " ") == 0)
{
result = 0;
}
}
if (result == 0)
{
break;
}
if (i == 3)
{
handicap(in[i], 7);
}
showgolf(in[i]);
}
return 0;
}
第2题:
#pragma warning (disable:4996)
#include <iostream>
#include <string>
const int ArSize = 10;
void strcount(const std::string str);
int main()
{
using namespace std;
string input;
char next;
cout << "Enter a line:\n";
getline(cin,input);
while (cin)
{
strcount(input);
cout << "Enter next line(empty line to quit):\n";
getline(cin,input);
if (input==" ")
{
break;
}
}
cout <<"Bye\n" ;
return 0;
}
void strcount(const std::string str)
{
using namespace std;
static int total = 0;
int count = 0;
cout << "\"" << str << "\" contains ";
count=str.length();
total += count;
cout << count << " characters\n";
cout << total << " characters total\n";
}
//原代码处理了超过数组长度的字符
//此代码未做该处理
//类似的处理见第1题中的 golf.cpp 的第20行 cin.ignore(Len, '\n');
第3题:
#pragma warning (disable:4996)
#include <iostream>
#include <string>
#include <new>
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
char b[50];
int main()
{
int i=0;
cout <<(void*) b<<endl;
chaff *a1 = new (b) chaff[2];
chaff *a2 = new chaff[2];
for (i=0;i<3;i++)
{
int n;
char name[20];
cout << "输入字符串:";
cin >> name;
cout << "输入数字:";
cin >> n;
strcpy(a1[i].dross, name);
a1[i].slag = n;
cout << "输入字符串:";
cin >> name;
cout << "输入数字.";
cin >> n;
strcpy(a2[i].dross, name);
a2[i].slag = n;
}
cout << a1<<"\t";
cout << a2<<endl;
for(i=0;i<3;i++)
{
cout << a1[i].dross<<"\t"<<a1[i].slag<<"\t"<<&a1[i]<<endl<<endl;
cout << a2[i].dross << "\t" << a2[i].slag<<"\t"<<&a2[i]<<endl<<endl;
}
return 0;
}
第4题:
headfile_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 );
void setSales(Sales & s);
void showSales(const Sales &s);
}
c_4.cpp
#include "headfile_4.h"
#include <iostream>
#include<iomanip>
namespace SALES
{
void setSales(Sales& s, const double ar[], int n)
{
double min, max, aver;
min = ar[0];
max = ar[0];
aver = 0.0;
int i;
for (i = 0; i < n; i++)
{
s.sales[i] = ar[i];
if (min > ar[i])
{
min = ar[i];
}
if (max < ar[i])
{
max = ar[i];
}
aver += ar[i];
}
while (i < QUARTERS)
{
s.sales[i] = 0.0;
i++;
}
aver /= n;
s.min = min;
s.max = max;
s.average = aver;
}
void setSales(Sales& s)
{
std::cout << "请输入s的值:";
double min;
double max;
double aver;
double n;
for (int i = 0; i < 4; i++)
{
std::cin >> n;
if (i == 0)
{
min = n;
max = n;
aver = 0.0;
}
else
{
if (min > n)
{
min = n;
}
if (max < n)
{
max = n;
}
}
s.sales[i] = n;
aver += n;
}
aver /= 4;
s.average = aver;
s.max = max;
s.min = min;
}
void showSales(const Sales& s)
{
using namespace std;
cout << "s.sales:" << endl;
for (int i = 0; i < 4; i++)
cout << s.sales[i] << "\t";
cout << endl;
cout << left << setw(20) << "s.average:" << s.average << endl;
cout << left << setw(20) << "s.max:" << setw(20) << s.max << endl;
cout << left << setw(20) << "s.min:" << setw(20) << s.min << endl;
}
}
main.cpp
#pragma warning (disable:4996)
#include <iostream>
#include <string>
#include <new>
#include"headfile_4.h"
using namespace std;
using namespace SALES;
int main()
{
Sales s1,s2;
double ar1[2] = {462.3,580.66};
setSales(s1,ar1,2);
setSales(s2);
cout << "s1:"<<endl;
showSales(s1);
cout << "s2:" << endl;
showSales(s2);
return 0;
}