C++ Primer Plus学习:第七章 函数-C++的编程模块(2)

本文介绍了两个关于结构体和函数的示例:第一个示例展示了如何定义结构体并使用函数来操作这些结构体;第二个示例则进一步讨论了如何通过指针来传递结构体变量。
函数与结构
  eg

    eg1

#include <iostream>
using namespace std;

struct travel_time
{
       int hours;
       int mins;
       };
const int Mins_per_hr = 60;

travel_time sum(travel_time t1,travel_time t2);
void show_time(travel_time t);

int main()
{
    travel_time day1 = {5,45};
    travel_time day2 = {4,55};
    
    travel_time trip = sum(day1,day2);
    cout<<"Two-day total:";
    show_time(trip);
    
    travel_time day3 = {4,32};
    cout<<"Three-day total:";
    show_time(sum(trip,day3));
    
    system("pause");
    return 0;
    }

travel_time sum(travel_time t1,travel_time t2)
{
            travel_time total;
            
            total.mins = (t1.mins+t2.mins)%Mins_per_hr;
            total.hours = t1.hours+t2.hours+(t1.mins+t2.mins)/Mins_per_hr;
            
            return total;
            }

void show_time(travel_time t)
{
     cout<<t.hours<<" hours,"<<t.mins<<" mins.\n";
     }


    eg2结构拷贝

#include <iostream>
#include <cmath>
using namespace std;
struct polar
{
       double distance;
       double angle;
       };
struct rect
{
       double x;
       double y;
       };
polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

int main()
{
    rect rplace;
    polar pplace;
    
    cout<<"Enter the x and y values:";
    while(cin>>rplace.x>>rplace.y)
    {
                                  pplace = rect_to_polar(rplace);
                                  show_polar(pplace);
                                  cout<<"Next two numbers(q to quit):";
                                  }
    cout<<"Done/\n";
    
    system("pause");
    return 0;
    }

polar rect_to_polar(rect xypos)
{
      polar answer;
      
      answer.distance = sqrt(xypos.x*xypos.x+xypos.y*xypos.y);
      answer.angle = atan2(xypos.y,xypos.x);
      return answer;
      }
      
void show_polar(polar dapos)
{
     const double Rad_to_deg = 57.29577951;
     cout<<"distance = "<<dapos.distance;
     cout<<",angle = "<<dapos.angle*Rad_to_deg;
     cout<<" degrees\n";
     }


    eg3指向原始结构指针

#include <iostream>
#include <cmath>
using namespace std;

struct polar
{
       double distance;
       double angle;
       };
struct rect
{
       double x;
       double y;
       };

void rect_to_polar(const rect* pxy,polar *pda);
void show_polar(const polar * pda);

int main()
{
    rect rplace;
    polar pplace;
    
    cout<<"Enter the x and y values:";
    while(cin>>rplace.x>>rplace.y)
    {
                                  rect_to_polar(&rplace,&pplace);
                                  show_polar(&pplace);
                                  cout<<"Next two numbers)(q to quit):";
                                  }
    cout<<"Done.\n";
    
    system("pause");
    return 0;
    }

void show_polar(const polar* pda)
{
     const double Rad_to_deg = 57.29577951;
     cout<<"distance = "<<pda->distance;
     cout<<",angle = "<<pda->angle*Rad_to_deg;
     cout<<" degrees\n";
     }
     
void rect_to_polar(const rect* pxy,polar* pda)
{
     pda->distance = sqrt(pxy->x*pxy->y+pxy->y*pxy->y);
     pda->angle = atan2(pxy->y,pxy->x);
     }


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值