输入一个正整数n (1<n≤10),再输入n个整数,将它们存入数组a中。输出最小值和它所对应的下标。
#include <stdio.h>
int main()
{
int a[10],i=0,n=0,min=0,xb=0;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
if (i==0)
{
min = a[i];
}else if (min > a[i])
{
min = a[i];
xb = i;
}
}
printf("min[%d]=[%d],",xb,min);
}
思路 可以用循环实现,不断比较数组每个元素
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n = 0, i;
int min = 0,minpos = 0;
int* a = NULL;
printf("请输入你要输入多少整数\n");
scanf("%d",&n);
a = (int*)malloc(n*sizeof(int));
if(a == NULL) return -1;
printf("请输入这%d个整数\n",n);
for(i=0; i<n;)
{
scanf("%d",a+i);
if(*(a+i)<2 || *(a+i)>10)
{
printf("重新输入\n");
}else{
i++;
}
}
min = *a;
for(i=0; i<n; i++)
{
if(*(a+i) < min)
{
min = *(a+i);
minpos = i;
}
}
printf("最小数%d,位置%d\n",min, minpos+1);
*(a+minpos) = *a;
*a = min;
for(i=0; i<n; i++)
{
printf("%d\t",*(a+i));
}
return 0;
}
学习下排序算法
最大值最小值都有,你自己改装一下吧
// 给你一段代码你参考一下
#include<stdio.h>
static inline int MyMax(int a, int b)
{
return (a > b) ? a : b;
}
static inline int MyMin(int a, int b)
{
return (a > b) ? b : a;
}
int main()
{
int i, m, sum;
int max = 0x80000000;
int min = 0x7fffffff;
double aver;
scanf("%d",&m);
int a[m];
sum=0;
for(i = 0; i < m; i++) {
scanf("%d",&a[i]);
sum += a[i];
min = MyMin(min, a[i]);
max = MyMax(max, a[i]);
}
aver = (double)sum / (double)m;
printf("aver = %f, max=%d, min=%d\n", aver, max, min);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632