m0_56720327 2022-09-16 16:14 采纳率: 83.3%
浏览 63
已结题

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

为什么没有输出结果

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MaxSize 100
  4. typedef int ElemType;
  5. typedef struct
  6. {
  7. int data[MaxSize];
  8. int length;
  9. }SqList;
  10. //初始化线性表
  11. void InitList(SqList *&L)
  12. {
  13. L->length=0;
  14. }
  15. //创建顺序表
  16. void CreatList(SqList *L)
  17. {
  18. int n, len, i;
  19. printf("输入顺序表的长度:");
  20. scanf("%d", &len);
  21. L->length = len;
  22. printf("输入顺序表的元素:");
  23. for (i=0;i<len;i++)
  24. {
  25. scanf("%d",&n);
  26. L->data[i]=n;
  27. }
  28. }
  29. //3、顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中。
  30. void UnioList(SqList *LA,SqList *LB,SqList *&LC)
  31. {
  32. int i,j,k;
  33. for(k=0;k<LA->length;k++){
  34. LC->data[LC->length]=LA->data[k];
  35. LC->length++;
  36. }
  37. for(i=0;i<LB->length;i++){
  38. for(j=0;i<LA->length;j++){
  39. if(LB->data[i]!=LA->data[j]){
  40. LC->data[LC->length]=LB->data[i];
  41. LC->length++;
  42. }
  43. }
  44. }
  45. }
  46. //输出顺序表
  47. void OutList(SqList* L)
  48. {
  49. int i;
  50. for (i=0;i<L->length;i++)
  51. printf("%d ",L->data[i]);
  52. printf("\n\n");
  53. }
  54. int main()
  55. {
  56. SqList L1,L2,LA,LB,L;
  57. SqList* LC=&L;
  58. ElemType x;
  59. printf("顺序表LA:\n");
  60. CreatList(&LA);
  61. printf("顺序表LB:\n");
  62. CreatList(&LB);
  63. printf("-------顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中-------\n");
  64. UnioList(&LA,&LB,LC);
  65. printf("LA和LB的并集:");
  66. OutList(LC);
  67. return 0;
  68. }

展开全部

  • 写回答

2条回答 默认 最新

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

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

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #define MaxSize 100
    4. typedef int ElemType;
    5. typedef struct
    6. {
    7. int data[MaxSize];
    8. int length;
    9. }SqList;
    10. //初始化线性表
    11. void InitList(SqList *&L)
    12. {
    13. L->length=0;
    14. }
    15. //创建顺序表
    16. void CreatList(SqList *L)
    17. {
    18. int n, len, i;
    19. printf("输入顺序表的长度:");
    20. scanf("%d", &len);
    21. L->length = len;
    22. printf("输入顺序表的元素:");
    23. for (i=0;i<len;i++)
    24. {
    25. scanf("%d",&n);
    26. L->data[i]=n;
    27. }
    28. }
    29. //3、顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中。
    30. void UnioList(SqList *LA,SqList *LB,SqList *&LC)
    31. {
    32. int i,j,k,flg; //修改
    33. for(k=0;k<LA->length;k++){
    34. LC->data[LC->length]=LA->data[k];
    35. LC->length++;
    36. }
    37. for(i=0;i<LB->length;i++){
    38. for(j=0,flg=0;j<LA->length;j++){//for(j=0,flg=0;i<LA->length;j++) i<LA->length; i错误
    39. if(LB->data[i]==LA->data[j]){//if(LB->data[i]!=LA->data[j])
    40. flg = 1; //算法修改
    41. break; //修改
    42. }
    43. }
    44. if(!flg){ //修改
    45. LC->data[LC->length]=LB->data[i];
    46. LC->length++;
    47. }
    48. }
    49. }
    50. //输出顺序表
    51. void OutList(SqList* L)
    52. {
    53. int i;
    54. for (i=0;i<L->length;i++)
    55. printf("%d ",L->data[i]);
    56. printf("\n\n");
    57. }
    58. int main()
    59. {
    60. SqList L1,L2,LA,LB,L;
    61. SqList* LC=&L;
    62. InitList(LC); //初始化顺序表 L 修改
    63. ElemType x;
    64. printf("顺序表LA:\n");
    65. CreatList(&LA);
    66. printf("顺序表LB:\n");
    67. CreatList(&LB);
    68. printf("-------顺序表LA和顺序表LB中的元素值无序,求出LA和LB的并集,结果存储在顺序表LC中-------\n");
    69. UnioList(&LA,&LB,LC);
    70. printf("LA和LB的并集:");
    71. OutList(LC);
    72. return 0;
    73. }

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月17日
  • 创建了问题 9月16日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部