EGZYQY 2024-05-02 20:50 采纳率: 0%
浏览 1

关于#c语言#的问题:在输入完数据的数量后,还要输入一个数才进行下一步,为啥呀(相关搜索:线性表)

在输入完数据的数量后,还要输入一个数才进行下一步,为啥呀?

img

#include<stdio.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct {
    DataType data[MAXSIZE];
    int Length;
}SeqList;
 
void InitList(SeqList *L) {   //初始化线性表
    L->Length = 0;
}

void CreatList(SeqList* L, int n) {  //建立顺序表并输入多个元素
    int i;
    printf("请输入%d个整数:", n);
    if (n>MAXSIZE) {
        printf("overflow");
        return 0;
    }
    for (i = 0;i < n;i++) {
        scanf("%d", &L->data[i]);    
    }L->Length = i;
}
void Length(SeqList* L) {
    int i;
    for (i = 0;L->data[i] != NULL;i++);
    return i;
}

    void DisList(SeqList * L) {
        int i=0;
        for (i = 0;i<L->Length;i++) {
            printf("%5d",L->data[i]);
        }
    }

int main() {

    SeqList L;
    int n=0;
    InitList(&L);
    printf("请输入建立线性表的个数: \n");
    scanf("%d ",&n);

    CreatList(&L, n);
    printf("建立的线性表为:");
    DisList(&L);


    return 0;
}

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-02 20:50
    关注

    引自免费微信小程序:皆我百晓生

    在给定的C语言代码中,问题出现在CreatList函数中的数据读取部分。当调用scanf("%d", &L->data[i])时,程序会等待用户输入一个整数。然而,在main函数中,当用户输入线性表的大小n之后,由于输入流中还存在一个换行符\n(因为用户通常按回车键结束输入),这个换行符会被下一个scanf语句误认为是一个整数。

    解决这个问题的方法是在读取线性表大小n之后,先清除输入缓冲区,确保接下来的CreatList函数能正确读取用户的输入。可以使用下面的代码片段替换main函数中的相应部分:

    // ...
    printf("请输入建立线性表的个数: \n");
    scanf("%d", &n); // 读取线性表的大小
    
    // 清除输入缓冲区中的换行符
    int c;
    while ((c = getchar()) != '\n' && c != EOF) {}
    
    CreatList(&L, n);
    // ...
    

    这样做的效果是读取了n之后,程序会立即忽略掉直到遇到换行符的所有字符,包括那个多余的换行符。然后CreatList函数就能正常接收用户输入的整数了。修改后的完整main函数如下:

    int main() {
    
        SeqList L;
        int n=0;
        InitList(&L);
        printf("请输入建立线性表的个数: \n");
        scanf("%d", &n);
    
        // 清除输入缓冲区中的换行符
        int c;
        while ((c = getchar()) != '\n' && c != EOF) {}
    
        CreatList(&L, n);
        printf("建立的线性表为:");
        DisList(&L);
    
        return 0;
    }
    

    现在,当你运行程序时,它应该能在输入线性表的大小后立即接受数据输入,而不需要再额外输入一个数。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月2日

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注