通过调用函数与指针完成得票数排序与排名的查找程序;input()输入各小组的票数;sort()进行排序;find()进行查找;print()打印数组。
执行至分函数时发生位置访问冲突,不知道如何解决,望有缘人指正并说明原因,谢谢!
#include"stdio.h"
int menu(void);
int input(int *a);
void sort(int *a,int n);
void find(int *a,int n);
void print(int *a,int n);
int x=0,*a,b[11]={0},*c,n=0;
int main()
{
a=&x;c=b;
printf("2021112596高智尧\n");
menu();
}
int menu(void)
{
int i;
printf("************************\n");
printf(" 1--输入\n");
printf(" 2--从小到大排序\n");
printf(" 3--查找\n");
printf(" 4--输出\n");
printf(" 5--退出\n");
printf("************************\n");
printf("请输入你要进行的操作:");
scanf("%d",&i);
switch(i)
{
case(1):input(c);break;
case(2):sort(c,n);break;
case(3):find(c,n);break;
case(4):print(c,n);break;
case(5):break;
}
return 0;
}
int input(int *a)
{
int i;
printf("请输入每个小组的得票数,若输入-1则结束:\n");
for(i=1;i<=10;i++)
{
scanf("%d",*(c+i));
if(*(c+i)==-1)break;
}
menu();
return 0;
}//数组从1开始
void sort(int *a,int n)
{
int i,j;
for(i=1;i<10;i++)
for(j=i+1;j<11;j++)
if(*(c+j)>*(c+i)){n=*(c+i);*(c+i)=*(c+j);*(c+j)=n;}
menu();
}
void find(int *a,int n)
{
printf("请输入要查找的排名:");
scanf("%d",&n);
if(*(c+n)!=0||*(c+n)!=-1)
printf("该排名票数为:%d\n",*(c+n));
else printf("没有该排名!\n");
menu();
}
void print(int *a,int n)
{
printf("打印数组:\n");
for(n=0;n<11;n++)
printf(" %d",*(c+n));
menu();
}