鱼C论坛

 找回密码
 立即注册
查看: 972|回复: 10

[已解决]关于数组的最大最小值

[复制链接]
发表于 2020-5-4 18:06:22 | 显示全部楼层 |阅读模式
5鱼币
  输入1个正整数n(1<n<=10),再输入n个整数,将最小值与第1个数交换,最大值与最后1个数交换,然后输出交换后的n个数
  一个关于数组的实验题,找不到问题出在哪里啊
  下面是代码,大佬们帮帮忙啊QAQ
#include<stdio.h>
int main()
{
        int bool1=0,bool2=0;
        int n,i,j,a[10];
        printf("输入整数个数:");
        scanf("%d",&n);
        printf("请输入%d个整数:",n);
        for(i=0;i<n;i++){
                scanf("%d",&a[i]);
        } 
        for(i=0;i<n;i++){//min
                for(j=i;j<n;j++){//比较 
                        if(a[i]<=a[j]){
                                bool1++;
                        }
                }
                if(bool1=n){//交换 
                        a[i]+=a[0];
                        a[0]=a[i]-a[0];
                        a[i]-=a[0];
                        break;
                }
                bool1=0;
        }
        for(i=0;i<n;i++){//max
                for(j=i;j<n;j++){//比较 
                        if(a[i]>=a[j]){
                                bool2++;
                        } 
                }
                if(bool2=n){//交换 
                        a[i]+=a[n-1];
                        a[n-1]=a[i]-a[n-1];
                        a[i]-=a[n-1];
                        break;
                }
                bool2=0;
        }
        for(i=0;i<n;i++){
                printf("%d ",a[i]);
                
        }
        return 0;
}
最佳答案
2020-5-4 18:06:23
张小艾 发表于 2020-5-4 18:26
bool1是用来寄存一个数字小于等于数组中数字的个数,当输入的a【i】小于等于所有数字的话,bool1就是n ...

求最大最小值就用这个方法:
#include<stdio.h>
#include<stdlib.h>
 
int main(void) {
        
        int a[5] = { 7,3,20,8,9 };
        int max = a[0];
        for (int i = 0; i < 5; i++) {
                if (a[i] > max) {
                        max = a[i];
                }
        }
 
        printf("max is %d\n", max);
        return 0;
}

最佳答案

查看完整内容

求最大最小值就用这个方法:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-4 18:06:23 | 显示全部楼层    本楼为最佳答案   
张小艾 发表于 2020-5-4 18:26
bool1是用来寄存一个数字小于等于数组中数字的个数,当输入的a【i】小于等于所有数字的话,bool1就是n ...

求最大最小值就用这个方法:
#include<stdio.h>
#include<stdlib.h>
 
int main(void) {
        
        int a[5] = { 7,3,20,8,9 };
        int max = a[0];
        for (int i = 0; i < 5; i++) {
                if (a[i] > max) {
                        max = a[i];
                }
        }
 
        printf("max is %d\n", max);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-4 18:15:13 | 显示全部楼层
请问一下 bool1 和 bool2 这两个变量是存放什么的呀……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 18:26:50 | 显示全部楼层
liuzhengyuan 发表于 2020-5-4 18:15
请问一下 bool1 和 bool2 这两个变量是存放什么的呀……

  bool1是用来寄存一个数字小于等于数组中数字的个数,当输入的a【i】小于等于所有数字的话,bool1就是n了,这个数字就是数组里最小的数字了,没想到更好的办法找到最值_(:з」∠)_
bool2同理,找最大值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 19:21:43 | 显示全部楼层
liuzhengyuan 发表于 2020-5-4 18:35
求最大最小值就用这个方法:

emmmmm这样写的话,max和min的初始化感觉有点问题,不过能做完题就得了多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-4 19:22:56 | 显示全部楼层
张小艾 发表于 2020-5-4 19:21
emmmmm这样写的话,max和min的初始化感觉有点问题,不过能做完题就得了多谢

有什么问题呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 19:59:40 | 显示全部楼层

就是最小值默认初始化为0的话,输入的都是正数,那输出的min=0了啊_(:з」∠)_
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 20:02:15 | 显示全部楼层

而且好像有个交换的问题,min放在a[0];那a[0]放在那里啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-4 20:02:33 From FishC Mobile | 显示全部楼层
张小艾 发表于 2020-5-4 19:59
就是最小值默认初始化为0的话,输入的都是正数,那输出的min=0了啊_(:з」∠)_

初始化不要为 0 ,初始为数组中第一个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-4 20:03:32 From FishC Mobile | 显示全部楼层
张小艾 发表于 2020-5-4 20:02
而且好像有个交换的问题,min放在a[0];那a[0]放在那里啊

你可以用
Min 来存放数组下标
这样方便多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-4 20:07:16 | 显示全部楼层
liuzhengyuan 发表于 2020-5-4 20:03
你可以用
Min 来存放数组下标
这样方便多了

顿悟啊!我怎么没想到,可能我真是一只菜鸡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 01:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表