题目描述
定义并实现三个函数:
第一个函数是整数函数,返回类型为整数,参数是一个整数变量,操作是求该变量的平方值
第二个函数是浮点数函数,返回类型为浮点数,参数是一个浮点数变量,操作是求该变量的平方根值。求平方根可以使用函数sqrt(浮点参数),将返回该参数的平方根,在VC中需要头文件cmath。
第三个函数是字符串函数,无返回值,参数是一个字符串指针,操作是把这个字符串内所有小写字母变成大写。
要求:定义三个函数指针分别指向这三个函数,然后根据调用类型使用函数指针来调用这三个函数。不能直接调用这三个函数。
如果类型为I,则通过指针调用整数函数;如果类型为F,则通过指针调用浮点数函数;如果类型为S,则通过指针调用字符串函数
输入
第一行输入一个t表示有t个测试实例
每行先输入一个大写字母,表示调用类型,然后再输入相应的参数
依次输入t行
输出
每行输出调用函数后的结果
输入样例1
5
S shenzhen
I 25
F 6.25
I 31
S China
输出样例1
SHENZHEN
625
2.5
961
CHINA
#include<iostream>
#include<cmath>
using namespace std;
int pow1(int n)
{
int m;
m = n*n;
return m;
}
void str1(char *p)
{
while(*p!='\0')
{
if(*p>='a'&&*p<='z')
*p=*p-('a'-'A');
p++;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
//函数指针,它是指针,指向函数
char c;
cin >> c;
if(c=='I')
{
int i;
cin >> i;
int (*fun1)(int); //声明一个函数指针
fun1 = pow1; // 第一种方式:指针变量名等于函数名;第二种方式:函数名取地址
cout << fun1(i) << endl; //调用
}
else if(c=='F')
{
float f;
cin>>f;
float (*fun2)(float);
fun2 = sqrt;
cout << fun2(f) << endl;
}
else if(c=='S')
{
char h[30];
cin>>h;
void (*fun3)(char *);
fun3 = str1;
fun3(h); //由于这里返回void类型,所以直接调用后输出h即可
cout << h << endl;
}
}
return 0;
}
本文介绍如何定义和实现整数、浮点数和字符串处理函数,并创建函数指针,根据输入类型调用相应函数。通过实例展示了如何使用if-else结构根据字符类型调用不同函数指针。
703

被折叠的 条评论
为什么被折叠?



