Sasakisouji 2021-11-29 21:35 采纳率: 71.4%
浏览 12

分函数读取指针时发生访问冲突

通过调用函数与指针完成得票数排序与排名的查找程序;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();
}
  • 写回答

1条回答 默认 最新

  • 拂面清风三点水 2021-11-29 21:50
    关注

    错误发出来看看

    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器