C++ primer Plus(第六版)第七章函数 编程

本文详细探讨了C++ Primer Plus第六版中的第七章内容,重点介绍了C++中的函数编程概念和实践。通过阅读,读者将了解如何定义、调用和使用函数,包括函数参数、返回值、递归以及函数模板等核心知识点,从而提升C++编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 第七章.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <iostream>//预编译,使用iostream文件在编译前替代这行代码
#include <array>
#include <string>
#include <iomanip>

const int SIZE = 101;

using namespace std;//将使用std命名空间中的定义
/*  编写一个程序,不断要求用户输入两个数,直到其中一个为0。
    对于每两个数,程序将使用一个函数来计算他们的调和平均数,并将结果返回给main(),而后者将报告结果。
    调和平均数指的是倒数平均值的倒数。计算公式为: 调和平均数=2.0*x*y/(x+y)。*/
double tiaohe(double, double);
double tiaohe(double x, double y)
{
   
	double z;
	z = 2.0*x*y / (x + y);
	return z;
}


void Xiti1()//
{
   
	double d1, d2;
	while (cin>>d1>>d2&&(d1!=0||d2!=0))
	{
   
		//d3=tiaohe(d1, d2);
		cout << "调和平均数为:"<<tiaohe(d1, d2) << endl;
	}

	return;
}
/*. 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。
   程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。
   请使用3个数组处理函数来分别进行输入、显示和计算平均成绩。。*/
int input(double chengji[], int time);
double avge(double chengji[],int time);
void display(double chengji[], int time, double avge);
const int SIZE1 = 10;
int input(double chengji[],int time)
{
   
	int i;
	for ( i = 0; i < time;i++)
	{
   
		if(!(cin >> chengji[i])) break;
	}	
	return i;
}
double avge(double chengji[], int time)
{
   
	int i;
	double sum=0;
	for ( i = 0; i < time; i++)
	{
   
		sum += chengji[i];
	}
	return sum / time;
}
void display(double chengji[], int time, double avge)
{
   
	int i;
	for ( i = 0; i < time; i++)
	{
   
		cout << chengji[i]<<" ";
	}
	cout <<"平均值:" <<avge << endl;
}
void Xiti2()//
{
   
	double *grade = new double[SIZE1];
	double average;
	int time=SIZE1;
	time=input(grade,time);
	average = avge(grade,time);
	display(grade,time,average);
	return;
}
/*下面是一个结构声明
struct box
{
    char maker[40];
    float height;
    float width;
    float length;
    float volume;
};
a. 编写一个函数,按值传递box结构,并显示每一个成员的值
b. 编写一个函数,传递box结构的地址,并将volume成员设置为其他三维长度的乘积
c. 编写一个使用这两个函数的简单程序

				  */
struct box
{
   
	char maker[40];
	float height;
	float width;
	float length;
	float volume;
};
void display(box bb);
void display(box bb)
{
   
	cout <<  "高度:"<<bb.height<<endl<<"长度:" << bb.length<<endl<<"宽度:" << bb.width <<"体积:"<< bb.volume<<endl;
}
void tiji(box*point);
void tiji(box*pp)
{
   
	cout << "输入长度:";
	cin >> pp->length;
	cout << "输入宽度:";
	cin >> pp->width;
	cout << "输入高度:";
	cin >> pp->height;
	pp->volume = pp->height*pp->length*pp->width;
}
void Xiti3()//简述:
{
   
	box changfang;
	tiji(&changfang);
	display(changfang);
	return;
}
/*.许多州的彩票发行机构都使用如程序清单7.4 所示的简单彩票玩法的变体。
   在这些玩法中,玩家从一组被称为域号码(field number)的号码中选择几个。
   例如,可以从域号码1~47 中选择5个号码;还可以从第二个区间(如1~27 )选择一个号码(称为特选号码)。
   要赢得头奖,必须正确猜中所有的号码。中头奖的几率是选中所有域号码的几率与选中特选号码几率的乘积。
   例如,在这个例子中,中头奖的几率是从47个号码中正确选择5个号码的几率与从27个号码中正确选择一个号码几率的乘积。
   请修改程序清单7.4, 以计算中得这种彩票头奖的几率。


																			*/
double jilv(unsigned number, unsigned pick);
double jilv(unsigned number, unsigned pick)
{
   
	double result=1;
	unsigned m, p;
	for (m = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泽龙先生~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值