函数指针数组

编写8个任务函数,一个scheduler调度函数和一个execute执行函数。仅在main函数中调用scheduler函数,scheduler函数要求用最快的方式调度执行用户指定的任务函数。 ①先设计task0, task1, task2, task3, task4, task5, task6, task7共8个任务函数,每个任务函数的任务就是输出该任务被调用的字符串。例如,第0个任务函数输出“task0 is called!”,第1个任务函数输出“task1 is called!”,以此类推。 ②scheduler函数根据键盘输入的数字字符的先后顺序,一次调度选择对应的任务函数。例如,输入:1350并回车,则scheduler函数一次调度选择task1, task3, taks5, task0,然后以函数指针数组和任务个数为参数将调度选择结果传递给execute函数并调用execute函数。 ③execute函数根据scheduler函数传递的指针数组和任务个数为参数,按照指定的先后顺序依此调用执行选定的任务函数。 当输入13607122并回车,程序运行结果应当如下: task1 is called! task3 is called! task6 is called! task0 is called! task7 is called! task1 is called! task2 is called! task2 is called!

#include <stdio.h>
#include <malloc.h>
#include <string.h>
int task0(){printf("task0 is called!\n");return 0;}
int task1(){printf("task1 is called!\n");return 0;}
int task2(){printf("task2 is called!\n");return 0;}
int task3(){printf("task3 is called!\n");return 0;}
int task4(){printf("task4 is called!\n");return 0;}
int task5(){printf("task5 is called!\n");return 0;}
int task6(){printf("task6 is called!\n");return 0;}
int task7(){printf("task7 is called!\n");return 0;}
void execute(int (*b[])(viod),int n){
	for(int i=0;i<n;i++)
	b[i](); 
    return ;
}
void scheduler(){
	int (*a[8])(void);
	int (*b[8])(void);
	a[0]=task0;a[1]=task1;a[2]=task2;a[3]=task3;
	a[4]=task4;a[5]=task5;a[6]=task6;a[7]=task7;
	char str[20];
	gets(str);
	for(int i=0;i<strlen(str);i++)
	b[i]=a[str[i]-'0'];
	execute(b,strlen(str));
    return ;
}
int main(){
	scheduler();
	return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值