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 |
外部函数是作为一
另一个可能的搜索方式为:
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 |