现在的位置: 首页 > 综合 > 正文

函数指针

2017年12月27日 ⁄ 综合 ⁄ 共 1675字 ⁄ 字号 评论关闭

#include <iostream>
#include <string>
using namespace std;
/*
int(*func)(int);
long(*func1)(int); //声明了一个指针.该指针指向一个函数.
long *func1(int);  //声明了一个函数.该函数返回一个指针.
*/
float (*fp)(float&,float&);
void (*p)(float&,float&);
float triangle(float &x,float &y)//三角形
{
 return x*y*0.5;
}
float rectangle(float &x,float &y)//长方形
{
 return x*y;
}
void Swap(float &x,float &y)
{
 float n;
 n=x;
 x=y;
 y=n;
}
void print(float &x,float &y)
{
 cout<<"长为:"<<x<<" 宽为:"<<y<<endl;
}
bool check(string str)
{
 for (int i=0;i<str.length();i++)
 {
  if ((str[i]>'9'||str[i]<'0')&&(str[i]!='.'))
  {
   return false;
  }
 }
 return true;
}
void get(float &x,float &y)
{
  cout<<"请输入x的新值:";
 string str1;
  cin>>str1;
 while(!check(str1))
  {
   cout<<"输入的不是数字!请重新输入!"<<endl;
   cin>>str1;
  }
  x=atof(str1.c_str());
  cout<<"请输入y的新值:";
 string str2;
  cin>>str2;
 while(!check(str2))
  {
   cout<<"输入的不是数字!请重新输入!"<<endl;
   cin>>str2;
  }
  y=atof(str2.c_str());
}
int main()
{
 bool quit=false;
 float a=2,b=3;
 int choice;
 while(quit==false)
 {
  cout<<"[0]退出[1]设定长宽[2]三角形[3]长方形[4]交换长和宽的值";
  cin>>choice;
  switch (choice)
  {
  case 0:
   quit=true;
   break;
  case 1:
   /*
   cout<<"设定前长和宽的值为:";
   print(a,b);
   get(a,b);
   cout<<"设定后长和宽的值为:";
   print(a,b);
   */
   p=get;
   break;
  case 2:
   //print(a,b);
   cout<<"三角形的面积为:";
   /*<<triangle(a,b)<<endl;*/
   fp=triangle;
   break;
  case 3:
   
   //print(a,b);
   cout<<"长方形的面积为:";
   /*<<triangle(a,b)<<endl;*/
   fp=rectangle;
   break;
  case 4:
   /*
   cout<<"交换前长和宽的值为:";
   print(a,b);
   swap(a,b);
   cout<<"交换后长和宽的值为:";
   print(a,b);
   */
   p=Swap;
   break;
  default:
   quit=true;
   break;
  }
  if (choice==1||choice==4)
  {
   print(a,b);
   p(a,b);
   print(a,b);
  }
  else if (choice==2||choice==3)
  {
   print(a,b);
   cout<<"面积为:"<<fp(a,b)<<endl;
   print(a,b);
  }

 }
 return 0;
}

【上篇】
【下篇】

抱歉!评论已关闭.