WFR 发表于 2020-6-13 17:34:50

无法进行顺序表的遍历输出,到底是什么地方错了

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define max 100
typedef struct students
{
        int number;
        int score;
}list;
typedef list datatype;
typedef struct shunxubiao
{
        datatype students;
        int length;
}info;
info kong();//置空一个顺序表
void Scanf(info L);//向顺序表中输入想要输入的数据
void printflist(info L);//此函数是为了进行函数的输出
int main()
{
        info A = kong();//定义一个顺序表啊
        Scanf(A);//向顺序表中输入想要输入的数据
        printflist(A);
        return 0;
}
info kong()//置空一个顺序表
{
        info L;
        L.length = 0;
        return L;
}
void Scanf(info L)//向顺序表中输入想要输入的数据
{
        if (L.length == max)
        {
                printf("顺序表中已经满了,无法进行输入");
                exit(1);
        }
        char ch;
        do
        {
                printf("请输入学生成绩:");
                scanf("%d",& L.students.score);
                printf("请输入学生的学号:");
                scanf("%d", &L.students.number);
                L.length++;
                printf("是否继续输入?(Y||N):");
                scanf(" %c", &ch);
        } while (ch=='y'||ch=='Y');
}//这个函数是为了进行数据的输入而准备的
void printflist(info L)//此函数是为了进行函数的输出
{
        int i;
        for (i=0;i<;i++)
        {
                printf("学生的成绩");
                printf("%d", L.students.score);
                printf("学生的学号");
                printf("%s", L.students.number);
        }
}请求帮助

WFR 发表于 2020-6-13 17:36:16

这个遍历函数应该怎么写啊??{:5_99:}

WFR 发表于 2020-6-13 17:37:33

在vs2019上像是printflist函数中for循环位置的L.length 的值是零,该怎么解决啊?{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}

WFR 发表于 2020-6-13 17:49:23

顺序表的长度为什么经过了输入之后还是0,明明有将长度加1的语句

superbe 发表于 2020-6-13 19:50:55

本帖最后由 superbe 于 2020-6-13 19:56 编辑

输入数据的函数应使用指针参数,否则的话,数据只是输入到临时变量里,main里的顺序表并没有得到数据。还有其它一些修改。
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 100

typedef struct student
{
    int number;
    int score;
}datatype;
typedef struct shunxubiao
{
    datatype students;
    int length;
}info;
info kong();               //置空一个顺序表
void Scanf(info * L);      //向顺序表中输入想要输入的数据
void printflist(info * L); //输出顺序表

int main()
{
    info A = kong();       //定义一个顺序表
    Scanf(&A);             //向顺序表中输入想要输入的数据
    printflist(&A);
    return 0;
}

info kong()                //置空一个顺序表
{
    info L;
    L.length = 0;
    return L;
}

void Scanf(info * L)       //向顺序表中输入想要输入的数据
{
    if (L->length == MAX)
    {
      printf("顺序表中已经满了,无法进行输入");
      exit(1);
    }
    char ch;
    do
    {
      printf("请输入学生成绩: ");
      scanf("%d", &L->students.score);
      printf("请输入学生的学号: ");
      scanf("%d", &L->students.number);
      L->length++;
      printf("是否继续输入?(Y||N): ");
      scanf(" %c", &ch);
    } while (ch == 'y' || ch == 'Y');
}

void printflist(info * L)//输出顺序表
{
    int i;
    for (i = 0; i < L->length; i++)
    {
      printf("学生的成绩: %3d ", L->students.score);
      printf("学生的学号: %d\n", L->students.number);
    }
}

chxchxkkk 发表于 2020-6-14 01:15:00

WFR 发表于 2020-6-13 17:49
顺序表的长度为什么经过了输入之后还是0,明明有将长度加1的语句

在csdn论坛上也是你问的吗,有回答
页: [1]
查看完整版本: 无法进行顺序表的遍历输出,到底是什么地方错了