m0_56720327 2022-09-17 00:14 采纳率: 83.3%
浏览 60
已结题

C语言主函数调用函数时没有输出结果

为什么没有输出结果

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100

typedef int ElemType;
typedef struct
{
    int data[MaxSize];
    int length;
}SqList;

//初始化线性表
void InitList(SqList *&L)
{
    L->length=0;
}

//创建顺序表
void CreatList(SqList *L)
{
    int n, len, i;
    printf("输入顺序表的长度:");
    scanf("%d", &len);
    L->length = len;
    printf("输入顺序表的元素:");
    for (i=0;i<len;i++)
    {
        scanf("%d",&n);
        L->data[i]=n;
    }
} 

//3、顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中。
void UnioList(SqList *LA,SqList *LB,SqList *&LC)
{
    int i,j,k;
    for(k=0;k<LA->length;k++){
        LC->data[LC->length]=LA->data[k];
        LC->length++;
    }
    for(i=0;i<LB->length;i++){
        for(j=0;i<LA->length;j++){
            if(LB->data[i]!=LA->data[j]){
                LC->data[LC->length]=LB->data[i];
                LC->length++;
            }
        }
    }
}

//输出顺序表
void OutList(SqList* L)
{
    int i;
    for (i=0;i<L->length;i++)
        printf("%d ",L->data[i]);
    printf("\n\n");
} 

int main()
{
    SqList L1,L2,LA,LB,L;
    SqList* LC=&L;
    ElemType x;
    printf("顺序表LA:\n");
    CreatList(&LA);
    printf("顺序表LB:\n");
    CreatList(&LB);
    printf("-------顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中-------\n");
    UnioList(&LA,&LB,LC);
    printf("LA和LB的并集:"); 
    OutList(LC);
    return 0;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-09-17 14:57
    关注

    void UnioList(SqList *LA,SqList *LB,SqList *&LC) 函数算法有错误,循环因子错误,还有表 L 未初始化等,修改处见注释,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #define MaxSize 100
     
    typedef int ElemType;
    typedef struct
    {
        int data[MaxSize];
        int length;
    }SqList;
     
    //初始化线性表
    void InitList(SqList *&L)
    {
        L->length=0;
    }
     
    //创建顺序表
    void CreatList(SqList *L)
    {
        int n, len, i;
        printf("输入顺序表的长度:");
        scanf("%d", &len);
        L->length = len;
        printf("输入顺序表的元素:");
        for (i=0;i<len;i++)
        {
            scanf("%d",&n);
            L->data[i]=n;
        }
    } 
     
    //3、顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中。
    void UnioList(SqList *LA,SqList *LB,SqList *&LC)
    {
        int i,j,k,flg;   //修改
        for(k=0;k<LA->length;k++){
            LC->data[LC->length]=LA->data[k];
            LC->length++;
        }
        for(i=0;i<LB->length;i++){
            for(j=0,flg=0;j<LA->length;j++){//for(j=0,flg=0;i<LA->length;j++) i<LA->length; i错误
                if(LB->data[i]==LA->data[j]){//if(LB->data[i]!=LA->data[j])
                   flg = 1;                  //算法修改
                   break;                    //修改
                }
            }
            if(!flg){                        //修改
                LC->data[LC->length]=LB->data[i];
                LC->length++;
            }
        }
    }
     
    //输出顺序表
    void OutList(SqList* L)
    {
        int i;
        for (i=0;i<L->length;i++)
            printf("%d ",L->data[i]);
        printf("\n\n");
    } 
     
    int main()
    {
        SqList L1,L2,LA,LB,L;
        SqList* LC=&L;
        InitList(LC); //初始化顺序表 L 修改
        ElemType x;
        printf("顺序表LA:\n");
        CreatList(&LA);
        printf("顺序表LB:\n");
        CreatList(&LB);
        printf("-------顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中-------\n");
        UnioList(&LA,&LB,LC);
        printf("LA和LB的并集:");
        OutList(LC);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日

悬赏问题

  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿