c语言 最小数和最大数

本文探讨了使用C语言寻找数组中的最大值和最小值的方法。通过对比两个示例代码,一个正确运行并找到最大最小值,另一个则存在逻辑错误导致结果不准确。文章旨在帮助读者理解正确的编程思路。

正确代码
| #include <stdio.h>
int main()
{
int n,a[100];
int mind=99999,maxd=-1;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]<mind) mind=a[i];
if(a[i]>maxd) maxd=a[i];
}
printf("%d %d",mind,maxd);
return 0;
}
上面是摘抄別人的代码
看了他人的代码,我觉得很受启发,这种方法很好,简洁灵活。

(错误代码)
#include<stdio.h>
int main()
{
int n,i,a,b=1,t,s;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
if(a>b)
{
t=a; b=t;
}
if(a>=b)
{
s=b;
}
else s=a;
}
printf("%d %d\n",s,t);
return 0;
}

不知道为什么不通过????求解。
在这里插入图片描述

在这里插入图片描述

以下几种场景分别展示了使用C语言输出最大数最小的代码: ### 输入三个,输出最大数最小 ```c #include<stdio.h> void main() { int a,b,c,t,q; printf("please input a,b,c"); scanf("%d,%d,%d",&a,&b,&c); if(a>=b&&a>=c) t=a; else if(b>=a&&b>=c) t=b; else t=c; if(a<=b&&a<=c) q=a; else if(b<=a&&b<=c) q=b; else q=c; printf("max:%d\nmin:%d",t,q); } ``` 此代码通过`if`语句来判断三个中的最大数最小后将结果输出。 也可以使用三目运算实现同样的功能: ```c #include<stdio.h> void main() { int a,b,c,t,q; printf("please input a,b,c"); scanf("%d,%d,%d",&a,&b,&c); t=a>=b?a:b; t=t>=c?t:c; q=a<=b?a:b; q=q<=c?q:c; printf("max:%d\nmin:%d",t,q); } ``` 这里使用三目运算符简洁地完成了最大数最小的判断并输出结果 [^4]。 ### 从键盘输入一组据,输出最大数最小并交换它们的位置 ```c #include <stdio.h> #define MAX_SIZE 100 int main() { int arr[MAX_SIZE]; int n, i; int max_index = 0, min_index = 0; // 输入据 printf("请输入据的个: "); scanf("%d", &n); printf("请输入 %d 个整:\n", n); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } // 找出最大数最小的位置 for (i = 1; i < n; i++) { if (arr[i] > arr[max_index]) { max_index = i; } if (arr[i] < arr[min_index]) { min_index = i; } } // 交换最大数最小的位置 int temp = arr[max_index]; arr[max_index] = arr[min_index]; arr[min_index] = temp; // 输出交换后的据 printf("交换最大数最小位置后的据为:\n"); for (i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 该代码首先从键盘输入一组据,然后找出其中最大数最小的位置,将它们的位置互换后输出新的据 [^1]。 ### 输入一个整,输出其各位中的最大数最小的差 ```c #include<stdio.h> int main() { int n,g; int max = 0,min=10; scanf("%d", &n); while (n != 0) { g = n % 10; if (g > max) { max = g; } if (g < min) { min = g; } n /= 10; } int cha = max - min; printf("%d", cha); return 0; } ``` 此代码通过循环取出输入整的每一位,找出最大数最小后计算它们的差值并输出 [^2]。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值