这是一个关于在一组数字中找到最大和最小数字的问题,但我们不知道用户想要多少数字 -
到目前为止,这就是我所做的:
#include <stdio.h>
#include <conio.h>
int main()
{
int num;
int i;
int maxi=0;
int minim=0;
int cont = 0;
printf ("\nQuantity of numbers?: ");
scanf ("%d", &num);
while (num>0)
{
printf ("\nEnter number:");
scanf ("%d", &i);
if (num>i)
minim=i++;
else
if (i>num)
max=i++;
cont++;
}
printf ("\nBiggest number is es: %d", maxi);
printf ("\nSmallest number is: %d", minim);
getch();
return 0;
}
我做了我的程序,询问用户想要放多少个数字,然后我让程序读取它们,但是当它读取最大或最小的数字时,它有时会变小而变得很小而且它不会读取负数。
如何让我的计划更好?
答案 0 :(得分:0)
您正在与错误的值进行比较。
do
{
printf("Enter a number.\n");
scanf("%i", &input);
if min > input
min = input
if max < input
max = input
} while (input > 0);
答案 1 :(得分:0)
#include <stdio.h>
#include <conio.h>
#include <limits.h>
int main(){
int num;
int i;
int maxi=0;
int minim=INT_MAX;
int cont = 0;
printf ("\nQuantity of numbers?: ");
scanf("%d", &num);
if(num > 0){
while (num>0){
printf ("\nEnter number:");
if(scanf("%d", &i) == 1 && !(i<0)){
if(minim > i)
minim = i;
if (maxi < i)
maxi = i;
++cont;
--num;
} else {
//fprintf(stderr, "redo input!\n")
;
}
scanf("%*[^\n]%*c");
}
printf ("\nBiggest number is : %d", maxi);
printf ("\nSmallest number is : %d\n", minim);
}
getch();
return 0;
}
答案 2 :(得分:0)
您应该将mini
初始化为最大可能的int,即INT_MAX
和maxi
,以尽可能小的int,即INT_MIN
。这样,即使第一个数字为负数,也会考虑maxi
,如果第一个数字为正,则仍会考虑mini
。常量INT_MAX
和INT_MIN
包含在<climits>
或<limits.h>
中。
此外,您将当前输入的数字与num
进行比较,#include<limits.h>
#include<stdio.h>
int main()
{
int num;
int maxi=INT_MIN; //initialize max value
int mini=INT_MAX; //initialize min value
int temp;
scanf("%d", &num); //take in number of numbers
while(num--) //loop "num" times, num decrements once each iteration of loop
{
scanf("%d", &temp); //Take in new number
if(temp>maxi) //see if it is new maximum
maxi=temp; //set to new maximum
if(temp<mini) //see if new minimum
mini=temp; //set to new minimum
}
printf("\nMaxi is:\t%d\nMini is:\t%d\n", maxi, mini); //print answer
return 0;
}
是用户输入的数字的计数器,而不是他想要比较的值之一。更好的修改代码将是:
{{1}}