函数指针数组实现计算器和qsort的使用

我只是一个虾纸丫 提交于 2020-01-19 22:40:36

斜体样式```c
//函数指针数组实现计算器的功能
#include<stdio.h>
int add(int x, int y)
{
return x+y;

}
int min(int x, int y)
{
return x-y;
}
int mul(int x, int y)
{
return xy;
}
int div(int x, int y)
{
return x/y;
}
//
***************************************************
void menu()
{
printf(“\n");
printf("1.add 2.min
\n");
printf("3.mul 4.div
\n");
printf(“5.exit*********************\n”);
printf("
**************\n”);

}
int main()
{
int rel = 0,input = 0,x,y;
int (*pl[5])(int, int)={0,add,min,mul,div};//函数指针数组
do
{
menu();
printf(“请输入一个数\n”);
scanf("%d",&input);
if(input>0 && input<=4)
{
printf(“请输入两个操作数\n”);
scanf("%d%d",&x,&y);
rel = pl[input](x, y);
printf("%d\n",rel);
}
}while(input);

}


```c



//void qsort (void* base, size_t num, size_t size,
//            int (*compar)(const void*,const void*));





/*#include<stdio.h>
#include<stdlib.h>
void print_data(int arr[], int n)
{
	int i;
	for(i=0; i<n; i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
}

int cmp_by_num(const void *e1, const void *e2)
{
	return *(int *)e1 - *(int *)e2;
	
}

int main()
{
	int sz;
	int arr[10] = {7,4,3,1,8,5,2,6,9,0};
	sz = sizeof(arr)/sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), cmp_by_num);
	print_data(arr, sz);
	return 0;
};
//使用qsort对整数的排序
*/



//使用qsort对结构体的排名
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Stu
{
	char name[20];
	int num;
};
int cmp_by_name(const void *e1, const void *e2)
{
	return strcmp(((struct Stu*)e1)->name, ((struct Stu *)e2)->name);
}
void print_data(struct Stu arr[], int n)
{
	int i = 0;
	for(i=0; i<n; i++)
	{
		printf("%s %d\n",arr[i].name,arr[i].num);
	}
}
int main()
{
	int sz = 0;
	struct Stu arr[3] = {{"zhangsan",15},{"lisi",20},{"wangwu",50}};
	sz = sizeof(arr)/sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]),cmp_by_name);
	print_data(arr,sz);

	return 0;
}






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!