注册 登录
编程论坛 C++教室

问题,不懂

一切皆安 发布于 2011-06-17 16:32, 260 次点击
#include<iostream>
using namespace std;
void (*p[5])(int&,int&);
void square(float&x,float&y){x=x*x;y=y*y;}
void cube(float&x,float&y){x=x*x*x;y=y*y*y;}
void printf(float&x,float&y){cout<<"长:"<<x<<"\t"<<"宽:"<<y<<endl;}
void Swap(float&x,float&y){int z;z=x;x=y;y=z;}
int main()
{
   float a=2,b=3;
   char  choice='0';
   int i;
   void (*p[5])(float&x,float&y);
   for(i=0;i<5;i++)
   {
       cout<<"(0)退出(1)平方(2)立方(3)交换x和y的值:";
       cin>>choice;
       bool quit=false;
       switch (choice)
       {
       case'0':quit=true;
           break;
       case'1':p[i]=square;
           break;
       case'2':p[i]=cube;
           break;
       case'3':p[i]=Swap;
           break;
       default:p[i]=0;
       }
     if(quit)break;
     if(p[i]==0)
     {
     cout<<"请输入一个从0到3之间的数字\n";
     i=i-1;
     continue;
     }
     cout<<"第<<i+1<<次执行,到第5次结束\n";
     cout<<"初始值\n";
     print(a,b);
     cout<<"现在调用函数指针数组p["<<i<<"]所指向的函数...\n";
         p[i](a,b);
         cout<<"运算后\n";
    print(a,b);
         }
   return 0;
}

一个错误,哪错误了呢
2 回复
#2
惊涛High浪2011-06-17 17:34
傻瓜吗?第六行的函数名能为关键字吗??并且与后面的调用函数名也不同,所以只要将第六行的printf改成print就行啦!!
#3
lichenblue2011-06-17 17:41
void printf(float&x,float&y){cout<<"长:"<<x<<"\t"<<"宽:"<<y<<endl;}

你调用时名字搞成print,少个f
1