求一组数中的最大值及其位置。例如:数据为:2 7 34 4 23 56 10 45。最大值应为:56,位置应为:
不需要输入数组个数吗?下面的代码不需要输入数组元素个数,运行结果如下:
代码:
#include <stdio.h>
int main()
{
int a[100], n=0;
int max, index = 0;
char ch;
while (1)
{
scanf("%d", &a[n]);
if (n == 0)
{
max = a[0];
index = 0;
}
else if (a[n] > max)
{
max = a[n];
index = n;
}
n++;
ch = getchar();
if (ch == '\n')//输入回车符结束
break;
}
printf("最大值:%d,位置:%d\n", max, index); //位置输出下标,下标从0开始
return 0;
}
先定义一个一维数组,在输入的过程中寻找,最后输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[100]={},maxx=0,p;//maxx存储最大值
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]>maxx)
maxx=a[i],p=i;//在输入过程中判断
}
cout<<maxx<<endl<<p;//输出
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:定义一维数组存储数据,并定义两个临时变量记录最大值和其索引位置。循环遍历判断,最后输出。
#include <stdio.h>
#define n 10
int main(){
int max=0,a[n],i=0;
int p1=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
max=a[0];
for(i=0;i<n;i++){
if(a[i]>max){
max=a[i];
p1=i;
}
}
printf("最大值应为:%d,位置应为:%d\n",max,p1+1);
return 0;
}