yam962 2022-10-05 16:48 采纳率: 0%
浏览 12

为什么会修改data[2]的值

为什么会修改data[2]的值,搞半天没弄明白,到底什么原因啊,求解答,谢谢。

img

img

img

  • 写回答

1条回答 默认 最新

  • a5156520 2022-10-05 19:42
    关注

    除了把你上面提供的代码的函数声明处添加了相应参数后,以及在main函数里把L变量的类型改为LIST后,代码可以正常运行了。

    两处修改都因为编译时报错,第一个是因为定义函数处的原型要和声明函数处原型一致,第二个是因为几处函数都需要一个LIST指针,而不是LIST指针的指针,修改后可以正常运行。修改如下:

    #include<stdio.h>
    
    struct MYLIST{
        int length;
        int data[100];
    };
    
    typedef struct MYLIST LIST;
    void Isert(LIST * L ,int n);
    void MyPrint(LIST *L);
    void MySort(LIST*L);
    void Add(LIST*L,int x);
    
    
    
    int main(void){
        
        LIST  L ;
        int n;
        int x;
        printf("为数组赋多少元素:");
        scanf("%d",&n);
        Isert(&L,n);
        printf("顺序表数据原顺序为:");
        MyPrint(&L);
        printf("\n升序排序后的顺序为:");
        MySort(&L);
        MyPrint(&L);
        printf("\n输入您要添加的数据:");
        scanf("%d",&x);
        Add(&L,x);
        MySort(&L);
        MyPrint(&L);
        
    } 
    
    void Isert(LIST * L,int n){
        L->length = n;
        for(int i=1;i<=n;i++){
            printf("第%d个元素为:",i);
            scanf("%d",&L->data[i-1]);
        }
    }
    
    void MyPrint(LIST * L){
    //    printf("L-length=%d\n",L->length);
        for(int i=0;i<L->length;i++){
            printf("%d\t",L->data[i]);
        //    printf("L->data[%d]=%d\t",i,L->data[i]);
        }
        printf("\n");
    }
    
    void MySort(LIST *L){
        //printf("L-length=%d\n",L->length);
        for(int i=0;i<L->length;i++){
        //    printf("L->data[%d]=%d\t",i,L->data[i]);
            for(int j=i+1;j<L->length;j++){
                
                if(L->data[i]>=L->data[j]){
                    int temp = L->data[i];
                    L->data[i] = L->data[j];
                    L->data[j] = temp;
                }
            }
        } 
    }
    
    void Add(LIST * L, int x){
        L->data[L->length] = x;
        L->length++;
    }
    
    

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月5日

悬赏问题

  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词