查找C中的最大和最小整数

Finding the largest and smallest integers in C

正如我在另一个问题中提到的,我一直在从K.N.King的C编程中自学C:现代方法(2ndedn)。

我很享受,但我希望在适当的时候把这个奇怪的问题贴在这里征求意见,因为不幸的是,我没有导师,有些人会提出更多的问题,然后他们会回答!

我想问一个问题,让我写一个程序,找出用户输入的四个整数中最大和最小的…我想出了一个办法来找到最大的,但对于我的生活来说,我无法找出如何让最小的出来。问题是,四个if语句应该足够。数学不是我的拿手好戏,我很感谢你的建议!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main(int argc, const char *argv[])
{

    int one, two, three, four;

    printf("Enter four integers:");

    scanf("%d %d %d %d", &one, &two, &three, &four);

    if (four > three && four > two && four > one)
            printf("Largest: %d", four);
    else if (three > four && three > two && three > one)
            printf("Largest: %d", three);
    else if (two > three && two > four && two > one)
            printf("Largest: %d", two);
    else
            printf("Largest: %d", one);

    return 0;

}

我尽量保持简单,因为我只不过是27章中的第5章!

干杯安得烈


1
2
3
4
5
6
7
8
9
10
11
12
13
if (first > second)
    swap(&first, &second);
if (third > fourth)
    swap(&third, &fourth);
if (first > third)
    swap(&first, &third);
if (second > fourth)
    swap(&second, &fourth);

printf("Smallest: %d
"
, first);
printf("Largest: %d
"
, fourth);

外部函数是作为一swap()左运动。


另一个可能的搜索方式为:

1
2
3
4
5
int one, two, three, four;  
//Assign values to the four variables;  
int largest, smallest;  
largest = max(max(max(one, two), three), four);  
smallest = min(min(min(one, two), three), four);

if语句不需要单;)


在所有的地方:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  if (a > b) {
    max = a;
    min = b;
  } else {
    max = b;
    min = a;
  }
  if (c > d) {
    max2 = c;
    min2 = d;
  } else {
    max2 = d;
    min2 = c;
  }
  if (max < max2) {
    max = max2;
  }
  if (min > min2) {
    min = min2;
  }


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
/*
SOLUTION 1

int main(void) {
    int a1,a2,a3,a4,max,min,max1,min1,max2,min2;
    printf("Enter four integers :");
    scanf("%d %d %d %d",&a1,&a2,&a3,&a4);
    if (a1 > a2) {
        max1 = a1;
        min1 = a2;
    } else {
        max1 = a2;
        min1 = a1;
    }
    if (a3 > a4) {
        max2 = a3;
        min2 = a4;
    } else {
        max2 = a4;
        min2 = a3;
    }
    if (max1 > max2)
        max = max1;
    else
        max = max2;
    if (min1 < min2)
        min = min1;
    else
        min = min2;
    printf("Largest : %d
",max);
    printf("Smallest : %d
",min);
}
*/


/*
SOLUTION 2
*/


int main(void) {
    int a1,a2,a3,a4;
    printf("Enter four integers :");
    scanf("%d %d %d %d",&a1,&a2,&a3,&a4);
    if (a1 > a2) {
        int temp1 = a1; a1 = a2; a2 = temp1; // Swap the numbers (a1 to contain smallest number)
    }
    if (a3 > a4) {
        int temp2 = a3; a3 = a4; a4 = temp2; // Swap the numbers (a1 to contain smallest number)
    }
    if (a1 > a3) {
        int temp3 = a1; a1 = a3; a3 = temp3; // Swap the numbers (a1 to contain smallest number)
    }
    if (a2 > a4) {
        int temp4 = a2; a2 = a4; a4 = temp4; // Swap the numbers (a1 to contain smallest number)    
    }
    printf("Largest : %d
"
,a4);
    printf("Smallest : %d
"
,a1);
}

i’m去直通K.N.国王"C程序设计:现代方法(第二版,"太。下面是我的解决方案在本线程的原始问题。

注意,我使用的概念从C上只通过第5章的书。原规划问题来自第5章7,规划问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 21 #include <stdio.h>
 22
 23 int main(void)
 24 {
 25     int i1, i2, i3, i4, large_1, small_1, large_2, small_2,
 26         largest, smallest;
 27
 28     printf("
Enter four integers:"
);
 29     scanf("%d %d %d %d", &i1, &i2, &i3, &i4);
 30
 31     if (i1 < i2) {
 32         small_1 = i1;
 33         large_1 = i2;
 34     } else {
 35         small_1 = i2;
 36         large_1 = i1;
 37     }
 38
 39     if (i3 < i4) {
 40         small_2 = i3;
 41         large_2 = i4;
 42     } else {
 43         small_2 = i4;
 44         large_2 = i3;
 45     }
 46
 47     if (large_1 < large_2)
 48         largest = large_2;
 49     else
 50         largest = large_1;
 51
 52     if (small_1 < small_2)
 53         smallest = small_1;
 54     else
 55         smallest = small_2;
 56
 57     printf("Largest: %d
"
, largest);
 58     printf("Smallest: %d

"
, smallest);
 59
 60     return 0;
 61 }

我的书是一样的,我会承认它,这给了我A程序相当头痛。这是一个棘手的一个初学者程序员。

第一,你比较一对整数a和b中的代码),min和max和本地存储的地方。做同样的事情在第二对。然后比较本地最让全球最小的事情,做一个最大值。如果没有更多的比四。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>

int main (void)
{
   int a, b, c, d, min1, max1, min2, max2, min, max;
   scanf ("%d %d %d %d", &a, &b, &c, &d);
   if (a > b)
   {
      max1 = a;
      min1 = b;
   }
   else
   {
      max1 = b;
      min1 = a;
   }
   if (c > d)
   {
      max2 = c;
      min2 = d;
   }
   else
   {
      max2 = d;
      min2 = c;
   }
   if (min1 < min2) min = min1;
   else min = min2;
   if (max1 > max2) max = max1;
   else max = max2;
   printf ("%d %d", max, min);
   return 0;
}

有更好的方式来解决,这是显示在这里,他们中的一些,但他们在以后的章节的书的封面。


解决这一问题的管理甚至比4 IF语句少,这里是我的解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>

int main(void){
    int no1, no2, no3, no4;
    int max1, max2, max3, min1, min2, min3;

    printf("Enter four integers:");
    scanf_s("%d %d %d %d", &no1, &no2, &no3, &no4);

    if(no1 > no2 || no1 < no2 && no3 > no4 || no3 < no4){
        no1 > no2 ? (max1=no1) : (max1=no2);
        no1 > no2 ? (min1=no2) : (min1=no1);
        no3 > no4 ? (max2=no3) : (max2=no4);
        no3 > no4 ? (min2=no4) : (min2=no3);
    }
    if(max1 > max2 || max1 < max2 && min1 > min2 || min1 < min2){
        max1 > max2 ? (max3=max1) : (max3=max2);
        min1 > min2 ? (min3=min2) : (min3=min1);
    }

    printf("The largest number is %d
"
, max3);
    printf("The smallest number is %d
"
, min3);
}

但是我不知道我在做正确的事情。至少我认为它会帮助的人:)


1
2
3
4
5
printf("Largest: %d
"
,(one>two ? one:two)>(three>four ? three:four)
                ? (one>two ? one:two):(three>four ? three:four));
printf("Smallest: %d",(one<two ? one:two)<(three<four ? three:four)
                ? (one<two ? one:two):(three<four ? three:four));