每当我输入-1时,什么都不会发生

时间:2020-10-08 17:29:06

标签: c

问题:要求用户输入数量不限的数字,但在输入前哨(标志)值-1时将终止(使用WHILE语句)。 您的程序将打印一个输出:最大数量

每当我输入-1时,都不会发生任何事情。

    #include <stdio.h>

    int main(void) {
    int number=0;
    int max;
    printf("Enter numbers: ");
    while(scanf("%d",&number)!=-1) {
        if(number>max) {
            max=number;
        }
    }
    printf("The max value is %d \n",max);
    return 0;
}

2 个答案:

答案 0 :(得分:3)

您正在将scanf的返回值与-1比较。您应该将number与-1比较。

答案 1 :(得分:1)

您检查了#!/usr/bin/env python3 from tkinter import * from tkinter import ttk root = Tk() root.title("Layout Problem") root.grid_columnconfigure(0, weight=1, minsize=500) root.grid_rowconfigure(0, weight=1, minsize=350) frame0 = ttk.Frame(root, padding=4) frame0.grid(column=0, row=0, sticky=(W, N, E, S)) frame0.grid_columnconfigure(0, weight=1) frame0.grid_rowconfigure(0, weight=1) frame1 = ttk.Frame(frame0, padding=4) frame1.grid_columnconfigure(1, weight=1) frame1['borderwidth'] = 2 frame1['relief'] = "ridge" frame1.grid(column=0, row=0, sticky=(W, N, E)) # add widgets to 'frame1' ttk.Label(frame1, text="Label: ").grid(row=0, column=0, sticky=W) entryValue = StringVar() ttk.Entry(frame1, textvariable=entryValue)\ .grid(row=0, column=1, sticky=(W, E)) entryValue.set("Entry") ttk.Button(frame1, text="Button")\ .grid(row=0, column=2, sticky=E) root.mainloop() 的返回值,但没有检查scanf()的值。检查一下。

还使用number的值而不进行初始化会调用未定义的行为,因此您必须首先对其进行初始化。

尝试一下:

max

我也将#include <stdio.h> #include <limits.h> /* for using INT_MIN */ int main(void) { int number=0; int max=INT_MIN; /* initialize max */ printf("Enter numbers: "); while(scanf("%d",&number)==1 && number!=-1) { /* check value of number */ if(number>max) { max=number; } } printf("The max value is %d \n",max); return 0; } 的检查从scanf()更改为!=-1,以便在输入诸如==1之类的非数字字符串时,检查不会陷入无限循环。