这里需要用到指针,可以用到地址法(a[i]+j这样的)或者指针(ptr++这种)来输入输出二维数组的各个元素,然后求和最小值 假设二维数组下标为0的元素最小和用指针指向该元素,后续的元素和其比较,若还有更小的则替换 然后输出其值和对应的指针 指针所指地址为其下标所指地址
#include<stdioh>
//num 传入数组,size是数组大小,同时也会返回最小的下标值,注意是指针,指向放有数组大小的变量地址。
int min(int num, int size)
{
int i;
int min_num = 0;
for(i = 1; i < size; i++)
{
if(num[min_num] > num[i])
{
min_num = i;
}
}
size = min_num;
return num[min_num];
}
int main()
{
int nums[5] ={42,31,85,12,23};
int size = 5;
int min_num;
min_num = min(nums, &size);
printf("数组中最小数是%d, 下标是%d", min_num, size);
return 0;
}
当用array或其他命令创建了一个数组后,这个数组就有一个下标,VBS中其为0
比如
a=array(1,2,3)
下标是0,a(0)就等于1,a(1)等于2
下标如果是1的话那a(1)就等于1,a(2)就等于2,不过这在VBS中是不存在的
max=a[0];
min=a[1];
for(i=0;i<10;i++)
{ if(a[i]>max) max=i; //逻辑错误
}
for(i=0;i<10;i++)
{ if(a[i]<min) min=i;}
你的代码功能混乱了,max一开始是a[0]是元素的值,后来就变为元素的下标,for循环里面肯定会出现max是下标时和元素的值相比,根本没有任何意义
//如果数组中存在两个最值相等的元素,取下标最小的
#include<stdioh>
int 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",n);
for(i=0;i<n;i++){
printf("请输入第%d个整数:",i+1);
scanf("%d",&a[i]);
}
max=min=0;
Max=Min=a[0];
for(i=1;i<n;i++){
if(a[i]>Max){
Max=a[i];
max=i;
}
if(a[i]<Min){
Min=a[i];
min=i;
}
}
printf("\n最大值下标=%d 最小值下标=%d",max,min);
return 0;
}
Dim s(100) As Long DebugPrint UBound(s) '最大下标 在这里是100 DebugPrint LBound(s) '最小下标 在这是0 ubound(s)-lbound(s)+1 即size
以上就是关于怎样求一个二维数组元素之和以及二维数组元素的最小值及下标全部的内容,包括:怎样求一个二维数组元素之和以及二维数组元素的最小值及下标、C 找数组中最小的元数,找出最小数下标并返回,在主函数中打印最小数和下标、什么是VBS中的下标值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)