我需要找到最大和最小元素,用最小值交换最大值的位置,并计算所有元素的和和乘积。
我的尝试运行没有错误,但总和、乘积和更改答案不正确。请如果你能帮助我。
#include <stdio.h>
#include <conio.h>
int main()
{
int m[8];
printf("\nInput the elements of the array: ");
for (int i=0; i<8; i++) {
scanf("%d", &m[i]); }
int max=m[0], min=m[0];
for(int i=0; i<8; i++) {
if(max < m[i]) {
max=m[i]; }
if(min > m[i]) {
min=m[i]; } }
for(int i=0; i<8; i++) {
if(m[i] == min) {
m[i] = max; } }
for(int i=0; i<8; i++) {
if(m[i] == max) {
m[i] = min; } }
int sum=0, x=0;
for(int i=0; i<8; i++) {
sum += m[i];
x = m[i]*m[i]; }
printf("\n Maximum element: %d", max);
printf("\n Minimum element: %d", min);
printf("\n Sum of all elements: %d", sum);
printf("\n Product of all elements: %d", x);
printf("\n\n Array with the maximum and minimum elements changed:\n");
for(int i=0; i<8; i++) {
printf("%d", m[i]);
printf(" "); }
_getch();
}
问题在于交换最小值和最大值的循环对。
上面的第二个,按照第一个建立的步骤,因为 max 在第二个开头的数组中是 2 次,所以最后最大值丢失,最小值在最终数组中保留 2 次.
解决方案建议:
然后,您只需将值与索引交换即可。
并且它删除了那些交换最小值和最大值的循环。
最后,在产品中我看到一个错误,也许你应该这样做,因为你现在在代码中拥有的是一种力量,你只会得到数组最后一个元素的值。
可以尝试声明一个变量max和min,并用for进行比较,最终这些变量存储的值是最大值还是最小值