|
发表于 2019-7-17 20:41:41
|
显示全部楼层
本帖最后由 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[j] > arr[i])
- {
- temp = arr[j];
- arr[j] = arr[i];
- arr[i] = 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[i] < key) ? t[i] : key;
- break;
- }
- for (size_t j = size -1; j >= 0; j--)
- {
- value->max = (t[j] > key) ? t[j] : 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[0]);
- 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>
---------------------------------------------------------------
想要函数返回多个值,要么用结构体,要么用指针作为参数 |
|