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日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境