C++ Primer Plus (第6版)编程练习 代码-----第九章

本文通过几个C++程序实例介绍了结构体的定义与使用,包括高尔夫球员信息管理、字符串统计、复合数据类型应用及销售数据处理等功能,展示了结构体在不同场景中的运用。

1.golf.h

#include"stdafx.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"stdafx.h"
#include"golf.h"

#include<iostream>
using namespace std;
void setgolf(golf &g,const char*name,int hc)
{
		
	 strcpy(g.fullname,name);
	
	g.handicap=hc;
}
int setgolf(golf &g)
{
	
	cout<<"Please enter the name: ";
	cin.getline(g.fullname,40);
	
	
  if(strlen(g.fullname)==0)
	  return 0;
  else 
	  cout<<"Please enter the handicap: ";
	  cin>>g.handicap;
	  return 1;
}
void handicap(golf &g,int hc)
{
	g.handicap=hc;
}
void showgolf(const golf &g)
{
   cout<<"the name is :     "<<g.fullname<<endl;
   cout<<"the handicap is : "<<g.handicap<<endl<<endl<<endl;

}


main.cpp

#include "stdafx.h"
#include<iostream>
#include <string>
#include<cctype>
#include "golf.h"
using namespace std;


int main()
{
golf ann;
setgolf(ann,"Ann Birdfree",24);
showgolf(ann);
handicap(ann,26);
showgolf(ann);
int i=0; 
golf gf[5] ;
 int  test=setgolf(gf[i]);
    while((test==1)&&(i<4))
{
     i++;
 cin.get();
 test=setgolf(gf[i]);


}
for(int j=0;j<=i;j++)
{
cout<<"the "<<j+1<<" is : "<<endl;
 showgolf(gf[j]);
cout<<endl;
}
    cout<<"Bye!\n";
system("pause");
return 0;
}




2.


#include "stdafx.h"
#include<iostream>
#include <string>
#include<cctype>
using namespace std;
void strcount(const string  & str);

const int ArSize =10;
int main()
{
	string input;

	cout<<"Enter a line:\n";
	getline(cin,input);
	while(input!="")
	{
	   
	    strcount(input);
		
	    cout<<"Enter next line(empty line to quit):\n";
	   getline(cin,input);
	}
	cout<<"Bye\n";
	system("pause");
	return 0;
}


void strcount(const string &str)
{
	static int total = 0;
	int count =str.length();
	int n=str.length();
	for(int i=0;i<n;i++)
	{
	  if(str[i]==' ')
		  count--;
	}
	 total+=count;
	 cout<<count<<"characters\n";
	 cout<<total<<"characters total \n";

}

3.

#include "stdafx.h"
#include<iostream>
#include <string>
#include<cctype>
using namespace std;


struct chaff
{
   char dross[20];
   int slag;
};
char buffer1[50];

int main()
{
	chaff *p1;
	p1=new(buffer1)chaff[2];
	strcpy(p1->dross,"test1");
	p1->slag=10;
	cout<<p1->dross<<" is at "<<&(p1->dross)<<"    "<<p1->slag<<" at "<<&(p1->slag)<<endl;
	p1++;
	strcpy(p1->dross,"test2");
	p1->slag=20;
	cout<<p1->dross<<" is at "<<&(p1->dross)<<"    "<<p1->slag<<" at "<<&(p1->slag)<<endl;

	
	system("pause");
	return 0;
}

4.

t1.h


#include"stdafx.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);

}

t1.cpp



#include"stdafx.h"

#include"t1.h"
#include<iostream>
namespace SALES
{

	
	void setSales(Sales & s,const double ar[],int n)
	{
		double sum=0,max=ar[0],min=ar[0];
	   for(int i=0;i<n;i++)
		{
			s.sales[i]=ar[i];
			sum=sum+s.sales[i];
			if(s.sales[i]>max)
				max=s.sales[i];
			if(s.sales[i]<min)
				min =s.sales[i];
	    }
	   s.average=sum/n;
	   s.max=max;
	   s.min=min;

	
	}
	void setSales(Sales & s)
	{
	  double sum=0;
	   for(int i=0;i<4;i++)
		{  
			std::cout<<"Plesae enter the number:";
			std::cin>>s.sales[i];	 
			sum=sum+s.sales[i];
	    }
	   double   max=s.sales[0],min=s.sales[0];
	   for(int i=0;i<4;i++)
		{ 
	       if(s.sales[i]>max)
				max=s.sales[i];
			
			if(s.sales[i]<min)
				min =s.sales[i];
	   }
	   s.average=sum/4;
	    s.max=max;
	   s.min=min;
	
	}
	void showSales(const Sales & s)
		
	{	
		int n =sizeof(s.sales)/8;
	
	  std::cout<<"The sales   of Sales is :";
		  for(int i=0;i<n;i++)
		  std::cout<<s.sales[i]<<" ";
		  std::cout <<std::endl;
	  std::cout<<"The average of Sales is :"<<s.average<<std::endl;
	  std::cout<<"The max     of Sales is :"<<s.max<<std::endl;
	  std::cout<<"The min     of Sales is :"<<s.min<<std::endl;
	
	}

}

main.cpp



#include "stdafx.h"
#include<iostream>
#include <string>
#include<cctype>
#include"t1.h"


int main()
{
	using namespace SALES;
	Sales s1;
	double st[4]={3.08,2.01,10.234,1.097};
	 setSales(s1,st,3);
	 showSales(s1);
	 Sales s2;
	 setSales(s2);
	 showSales(s2);
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值