C语言编程题:定义一个长度为10的数组,求最大值及下标。
C语言程序如下:
#include <stdio.h>
void fun(int a[],int n,int *k)
{
int i,maxxr,j;
maxxr=a[0];
for(i=0;i<n;i++)
{
if(maxxr<a[i])
{
maxxr=a[i];
}
}
for(i=0;i<n;i++)
{
if(maxxr==a[i]){
j=i;
break;
}
}
*k=j;
}
int main(void)
{
int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
fun(a, 10, &k);
printf("%d,%d", k, a[k]);
}
扩展资料:
思路:
1、先定义数组(其数组长度取最大值,题目要求为10),然后通过for循环给数组一个个赋值,即可得到一个数组;
2、找数组的最大值,这一步是最关键的一步,由于所输入的值不确定那个是最大值,故可以先设置另一个一个变量(index)来存储最大值变量的下标。
3、紧接着继续在数组里for循环,逐一跟下标为index的值相比较,如果比下标为index的值大,这时候就将两者中数值大的下标赋值给index。
4、按要求输出。
#include <stdio.h>
void main()
{
//定义数组
int a[10] = {1,2,3,-4,5,6,-7,8,9,-10};
//给最大值、下标赋值
int max=a[0], pos=0;
//循环
for(int i=1; i<10; i++)
{
//判断循环的a[i]是否大于最大值a[0]=1;
if (a[i] > max)
{
//如果大于则把a[i]的值附给max
max = a[i];
//把i赋值给pos
pos = i;
}
}
//输出最大值和下标
printf("最大值=%d\n下标=%d\n", max, pos);
}
#include<stdio.h>
void main()
{
int max;
int a[10];
int h;
printf("please input 10 number\n");
for(int i = 0; i < 10; i++)
scanf("%d",&a[i]);
max = a[0];
for(i = 0; i < 10; i++)
{
if(a[i] > max)
{
max = a[i];
h = i;
}
}
printf("最大值是:%d, 下标是:%d\n", max, h);
}
#include <stdio.h>
int main()
{
float a[10];
int i,id=0;
float max;
printf("请输入10个数,以回车键隔开\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
max=a[0];
for(i=1; i<10; i++)
if (a[i] > max)
{
max = a[i];
id = i;
}
printf("最大值=%f\n下标=%d\n", max, id);
return 0;
}
没有对i进行定义吧
C语言:求一组数组最大值及最小值的下标。~
max=a[0];min=a[1];for(i=0;imax) max=i; //逻辑错误}for(i=0;iint main(int argc,char **argv){ int a[10],i,n;int Max,Min,max,min;printf("Please input n:");scanf("%d",&n);printf("Please input %d integers:
",n); for(i=0;iMax){Max=a[i];max=i;}if(a[i]<Min){Min=a[i];min=i;}} printf("
最大值下标=%d 最小值下标=%d",max,min);return 0;}
#include#define N 10void main() { float a[N]; int i,m; for ( i=0;i<N;i++ ) scanf("%f",&a[i]); m=0; for ( i=1;i<N;i++ ) if ( a[m]<a[i] ) m=i; printf("%f,%d
",a[m],m);}