题目描述:
定义并实现三个函数:
第一个函数是整数函数,返回类型为整数,参数是一个整数变量,操作是求该变量的平方值
第二个函数是浮点数函数,返回类型为浮点数,参数是一个浮点数变量,操作是求该变量的平方根值。求平方根可以使用函数sqrt(浮点参数),将返回该参数的平方根,在VC中需要头文件cmath。
第三个函数是字符串函数,无返回值,参数是一个字符串指针,操作是把这个字符串内所有小写字母变成大写。
要求:定义三个函数指针分别指向这三个函数,然后根据调用类型使用函数指针来调用这三个函数。不能直接调用这三个函数。
如果类型为I,则通过指针调用整数函数;如果类型为F,则通过指针调用浮点数函数;如果类型为S,则通过指针调用字符串函数
输入要求:
第一行输入一个t表示有t个测试实例
每行先输入一个大写字母,表示调用类型,然后再输入相应的参数
依次输入t行
输出要求:
每行输出调用函数后的结果
输入样例:
5
S shenzhen
I 25
F 6.25
I 31
S China
输出要求:
SHENZHEN
625
2.5
961
CHINA
#include<iostream>
#include<cstring>
#include<iomanip>
#include<cmath>
using namespace std;
int inti(int x)
{
return x * x;
}
float floatf(float x)
{
return sqrt(x);
}
void strAdd(char* s1)
{
for (int i = 0; s1[i]; i++)
{
if (*(s1 + i) >= 'a' && *(s1 + i) <= 'z')
{
*(s1 + i) = *(s1 + i) - 32;
}
else
{
*(s1 + i) = *(s1 + i);
}
cout << *(s1 + i);
}
}
int main() {
int t;
cin >> t;
while (t--)
{
char ch;
cin >> ch;
switch (ch)
{
case 'I':
{
int x;
cin >> x;
int (*q)(int) = inti;//整数型函数指针,返回整数
cout << q(x) << endl;
break;
}
case 'S':
{
char ch1[100];
cin >> ch1;
strAdd(ch1);
cout << endl;
break;
}
case 'F':
{
float x;
cin >> x;
float (*p)(float) = floatf;
cout << p(x) << endl;//浮点型函数指针,返回浮点数
break;
}
}
}
return 0;
}