程序代码:
#include <stdio.h> #define max(x, y) ((x) > (y) ? (x) : (y)) int main(void) { int a, b, c; scanf("%d%d%d", &a, &b, &c); printf("最大值:%d\n", max(max(a, b), c)); return 0; }这样做思路更清晰吧!!!
My life is brilliant
// test.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" // 错误返回代码 #define INVALID_ARRAY 0 #define INVALID_START -1 #define INVALID_END -2 // 函数原型声明 // 目标: 求一堆整数的最大值 // 参数: iData -- 储存整数的一维数组 // iStart -- 开始的序号(从1计起) // iEnd -- 结束的序号(从1计起) // 返回: 最大值的序號(<1表示出错) int max(int *iData, int iStart, int iEnd); // 程序入口 int _tmain(void) { int iData[] = {16, -9, 2, 21, 0, -4, -1}; int index; index = max(iData, 2, 5); if (index > 0) { printf_s("具有最大值的是数组中第%d个元素, 其值为%d\n", index+1, iData[index]); } else { printf_s("参数传递错误: %d\n", index); } getchar(); return index; } int max(int *iData, int iStart, int iEnd) { int max_value; int i; int ret_value; ret_value = 0; if (iStart < 0) { ret_value += INVALID_START; } if (iEnd < 0) { ret_value += INVALID_END; } if (ret_value != 0) { return ret_value; } if (iEnd - iStart < 1) { return INVALID_ARRAY; } iStart--; iEnd--; max_value = iData[iStart]; ret_value = iStart; for(i = iStart + 1; i <= iEnd; i++) { if (iData[i] > max_value) { ret_value = i; max_value = iData[i]; } } return ret_value; }