|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- //DNX写于2023年11月14日
- char *getword(char c);
- int square(int num);
- int add(int a,int b);
- int sub(int a,int b);
- int mul(int a,int b);
- int sel(int (*fp)(int,int),int a,int b);
- int (*option(char))(int,int);
- int main()
- {
- char in;
- printf("请输入一个字母:");
- scanf("%c",&in);
- printf("%s\n",getword(in));//指针函数
- int num;
- int (*fp)(int);
- printf("请输入一个整数:");
- scanf("%d",&num);
- fp = square;//函数名相当于函数地址
- printf("%d * %d = %d\n",num,num,(*fp)(num));//函数指针
- //将函数指针作为参数
- int a,b;
- printf("请输入a b:");
- scanf("%d %d",&a,&b);
- printf("%d + %d = %d\n",a,b,sel(add,a,b));
- printf("%d - %d = %d\n",a,b,sel(sub,a,b));
- //将函数指针作为返回值
- char op;
- int (*fpp)(int,int);
- printf("请输入一个算式(仅支持+ - *):");
- scanf("%d%c%d",&a,&op,&b);
- fpp = option(op);
- printf("%d %c %d = %d\n",a,op,b,sel(fpp,a,b));
- return 0;
- }
- char *getword(char c)
- {
- //指针函数:使用指针变量作为函数的返回值
- switch(c)
- {
- case 'A':
- case 'a':return "Apple";break;
- case 'B':
- case 'b':return "Banana";break;
- case 'C':
- case 'c':return "Cat";break;
- case 'D':
- case 'd':return "Dog";break;
- default:return "error";
- }
- //注意:不要返回局部变量的指针
- }
- int square(int num)
- {
- return num*num;
- }
- int add(int a,int b)
- {
- return a + b;
- }
- int sub(int a,int b)
- {
- return a - b;
- }
- int mul(int a,int b)
- {
- return a * b;
- }
- int sel(int (*fp)(int,int),int a,int b)
- {
- return (*fp)(a,b);
- }
- int (*option(char op))(int,int)
- {
- switch(op)
- {
- case '+': return add;
- case '-': return sub;
- case '*': return mul;
- }
- }
复制代码
运行结果:
请输入一个字母:d
Dog
请输入一个整数:3
3 * 3 = 9
请输入a b:1 2
1 + 2 = 3
1 - 2 = -1
请输入一个算式(仅支持+ - *):3*5
3 * 5 = 15
Process returned 0 (0x0) execution time : 21.742 s
Press any key to continue.
在FishC学C的第十五天 |
|