问题:要求用户输入数量不限的数字,但在输入前哨(标志)值-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;
}
答案 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
之类的非数字字符串时,检查不会陷入无限循环。