[英]What can I do to make it so my programs keeps the lowest number entered in a switch in a do while loop?
我正在尝试从用户那里获取他们想要输入的数字。 在菜单中。 我已经获得了工作所需要做的一切,除了最低限度的事情。 我不确定从这里去哪里。 我不知道如何在交换机中获取该号码。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define PAUSE system("pause")
#define CLEAR system("cls")
main() {
// Initialize variables
char choice;
int sum = 0;
int avg = 0;
int high = 0;
int low = 0;
int quit = 0;
int i = 0;
int num = 0;
int j = 0;
int prevNum;
do{
printf("What would you like to do\n"
"A: enter an integer\n"
"B: show sum\n"
"C: Show average\n"
"D: show Highest num\n"
"E: Show lowest\n"
"Q: quit\n");
scanf("%c", &choice);
CLEAR;
switch (choice) {
case 'A':
printf("Enter an Integer\n");
scanf("%i", &num);
j++;
sum = num + sum;
if (num > high)
high = num;
PAUSE;
break;
case 'B':
printf("The sum of al numbers entered is %i\n", sum);
PAUSE;
break;
case 'C':
avg = sum / j;
printf("The average of all numbers entered is %i\n",avg);
PAUSE;
break;
case 'D':
printf("The Highest number entered is %i\n", high);
PAUSE;
break;
case 'E':
printf("The lowest number entered is %i\n", low);
PAUSE;
break;
case 'Q':
quit = 1;
break;
} // end switch
} while (quit != 1);
PAUSE;
} // END MAIN
您可以使用:
if (num < low) {
low = num;
}
唯一的问题是第一个数字。 由于您将low
初始化为0
,因此用户输入的任何正数都不会低于此。 您需要特别对待第一个数字。 您可以为此检查j
的值。
然后在您的A
情况下,测试此变量。
case 'A':
printf("Enter an Integer\n");
scanf("%i", &num);
j++;
sum = num + sum;
if (j == 1 || num > high)
high = num;
if (j == 1 || num < low)
low = num;
PAUSE;
break;
正确的初始化是强制性的。
建议:
high
应初始化为INT_MIN。
low
应初始化为INT_MAX。
注意:这些宏位于stdint.h中。
然后在两行之后:
if (num > high)
high = num;
插入两行:
if(num < low)
low = num;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.