为什么输入number为1他后面还会出现这个循环呀😭也没有清屏😭


void input_information()
{
    printf("\n请输入您需要录入的学生数量:");
    int number;
    scanf("%d",&number);
    printf("\n");
    
    char student[number][4];//姓名 性别 年龄 学号 学院 
    
    int i,j;
    for(i=0;i<number;i++)
    {
        for(j=0;j<4;j++){    
        
        printf("请输入学生姓名:\n");
        scanf("%s",&student[number][j]);
        printf("\n");
        
        printf("请输入学生性别:\n");
        scanf("%s",&student[number][j]);
        printf("\n");
        
        printf("请输入学生年龄:\n");
        scanf("%s",&student[number][j]);
        printf("\n");
        
        printf("请输入学生学号\n");
        scanf("%s",&student[number][j]);
        printf("\n");
        
        printf("请输入学生学院:\n");
        scanf("%s",&student[number][j]);
        printf("\n");
        }
        system("cls");
    }
    
    printf("录入成功!");
    
}


img

scanf("%s",&student[number][j]);
改成
scanf("%s",&student[i][j]);
都写错了
另外student元素是个数据结构吧,姓名应该是 scanf("%s",&student[number][j].name);这样吧




void input_information()
{
    printf("\n请输入您需要录入的学生数量:");
    int number;
    scanf("%d", &number);
    printf("\n");
    
    char student[number][5][100]; // 姓名 性别 年龄 学号 学院 

    for(int i=0; i<number; i++)
    {
        printf("请输入学生姓名:\n");
        scanf("%s", student[i][0]);
        printf("\n");
        
        printf("请输入学生性别:\n");
        scanf("%s", student[i][1]);
        printf("\n");
        
        printf("请输入学生年龄:\n");
        scanf("%s", student[i][2]);
        printf("\n");
        
        printf("请输入学生学号:\n");
        scanf("%s", student[i][3]);
        printf("\n");
        
        printf("请输入学生学院:\n");
        scanf("%s", student[i][4]);
        printf("\n");
        
        system("cls"); // Windows,用cls清屏。Linux或Mac,用clear清屏
    }
    
    printf("录入成功!");
}

int main()
{
    input_information();
    return 0;
}

for(j=0;j<4;j++){
这你不是包进这个循环里了吗
跟number有什么关系

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7534075
  • 除此之外, 这篇博客: 《画解数据结构》十张动图,画解双端队列中的 1、数据结构定义 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 对于链表,在进行 双端队列的定义 之前,我们需要考虑以下几个点:
      1)队列数据的存储方式,以及队列数据的数据类型;
      2)队列的大小;
      3)队首指针;
      4)队尾指针;

    • 我们可以定义一个 双端队列结构体,C语言实现如下所示:
    #define DataType int              // (1)
    struct QueueNode;                 // (2)
    struct QueueNode {                // (3)
        DataType data;
        struct QueueNode *prev;
        struct QueueNode *next;
    };
    
    struct Queue {
        struct QueueNode *head, *tail;// (4)
        int size;                     // (5)
    };
    
    • (1)(1)(1) 队列结点元素的 数据域,这里定义为整型;
    • (2)(2)(2) struct QueueNode;是对 链表结点 的声明;
    • (3)(3)(3) 定义链表结点,其中DataType data代表 数据域struct QueueNode *prev代表 前驱指针域struct QueueNode *next代表 后继指针域;注意,双端队列 需要用 双向链表 实现,单向链表 无法满足需求;
    • (4)(4)(4) head作为 队首指针tail作为 队尾指针
    • (5)(5)(5) 由于 求链表长度 的算法时间复杂度是 O(n)O(n)O(n) 的, 所以我们需要记录一个size来代表现在队列中有多少元素。每次 入队size自增,出队size自减。这样在询问 队列 的大小的时候,就可以通过 O(1)O(1)O(1) 的时间复杂度。