求大佬解答,在求最大最小数中,为什么min和max不能设置为指针
#include <stdio.h>void qiudaxiao(int *x,int n );
int *min,*max;
void main()
{
int a={1,51,31,87,221,5,51,12,5,7},i;
qiudaxiao(a,10);
printf("最大%d,x最小%d\n",*max,*min);
}
void qiudaxiao(int *x,int n )
{
int *i,temp;
*max=*x;
*min=*x;
i=x;
for(;i<(x+9);i++)
{
if(*i>*max)
{
*max=*i;
}
if(*i<*min)
{
*min=*i;
}
}
}
你求个最小最大值,你还要用指针把原来的数组给破坏掉?,用指针也不是不可以,你看看你代码,是在操作指针呢还是在操作数组里的内容? 本帖最后由 bin554385863 于 2019-7-17 20:56 编辑
#include <stdio.h>
/*用结构体存储结果*/
typedef struct
{
int min;
int max;
} comp;
/*冒泡排序*/
void sort(int *arr, int size)
{
int temp;
for (size_t i = 0; i < size; i++)
{
for (size_t j = 0; j < i; j++)
{
if (arr > arr)
{
temp = arr;
arr = arr;
arr = temp;
}
}
}
}
/*定义一个结构体函数同时返回两个结果*/
comp *compare(int *arr, int key, int size, comp *value)
/*key是要比较的那个数,size是数组的长度,value是存储结果的结构体指针*/
{
int *t = arr;
for (size_t i = 0; i < size; i++)
{
/*三元运算符计算结果*/
value->min = (t < key) ? t : key;
break;
}
for (size_t j = size -1; j >= 0; j--)
{
value->max = (t > key) ? t : key;
break;
}
return value;
}
int main(int argc, char const *argv[])
{
int a[] = {
12,
66,
88,
989,
878,
66,
99,
88,
99,
100,
};
int s = sizeof(a)/sizeof(a);
int i;
comp *result;
scanf("%d", &i);
sort(a, s);
compare(a, i, s, result);
printf("最小值是: %d\n最大值是: %d", result->min, result->max);
return 0;
}
-----------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.24.0\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-in3wtcx3.uwa --stdout=Microsoft-MIEngine-Out-y5xjaknd.ycg --stderr=Microsoft-MIEngine-Error-3g0wkqaw.i5p --pid=Microsoft-MIEngine-Pid-eic55jkb.rj1 --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
42
最小值是: 12
最大值是: 989
E:\Administrator\Documents\My C>
---------------------------------------------------------------
想要函数返回多个值,要么用结构体,要么用指针作为参数 还有, 兄弟你这明显是指针基础都没过关啊,多学多想多敲代码啊 min和max可以设置为指针,但你操作的时候出现了问题,如果对数据直接操作了,那还需要指针干嘛?,指针变量,变量指针,指针数组,数组指针,引用。这些概念要高清楚。毕竟C语言的精髓就是指针,不会使用指针就等于没有学C语言
记得采纳哦 #include <stdio.h>
//为了方便返回,使用结构体存储最大值和最小值
typedef struct {
int Max;
int Min;
}MaxMin;
//函数参数array:数组,length:数组长度。
//这里其实可以把最大值最小值作为指针传进去的。
MaxMin GetMaxMin(int *array, int length)
{
int i;
MaxMin maxMin;
if (length <= 0)
return maxMin;
//初始化最大值和最小值为数组第一个数
maxMin.Max = array;
maxMin.Min = array;
for (i = 0; i < length; i++) {
if (array >= maxMin.Max)
maxMin.Max = array; //比当前最大值大,修改最大值
if (array <= maxMin.Min)
maxMin.Min = array; //比当前最小值小,修改最小值
}
return maxMin;
}
//主函数测试
int main() {
int length;
int i;
int *array;
printf("input length of array:");
scanf("%d", &length);
array = (int *)malloc(sizeof(int)*length);
for (i = 0; i < length; i++) {
printf("input data of array(index %d):", i + 1);
scanf("%d", array + i);
}
MaxMin maxMin = GetMaxMin(array, length);
printf("Max:%d,Min:%d", maxMin.Max, maxMin.Min);
return 0;
} 数组名就是首地址,操控指针++来让取得数组向后移动{:10_279:}
页:
[1]