|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int search_max(int*p,int sz)
{
int i;
for (i = 0; i < sz; i++)
{
if (*(p + i) > *p)
{
*p = *(p + i);
}
}
return *p;
}
int main()
{
int arr[5] = { 7,1,3,9,5 };
int i;
int sz = sizeof(arr) / sizeof(arr[0]);
int ret=search_max(arr,sz);
for (i = 0; i < sz; i++)
{
if (ret==arr[i])
{
printf("sign=%d\n", i);
}
}
printf("max=%d\n", ret);
return 0;
}
请大神指导 题目要求打印最大值和最大值的下标 代码如上 打印下标时总要打印出sign=0 是为什么呢?
本帖最后由 jackz007 于 2022-3-1 17:06 编辑
- #include<stdio.h>
- int search_max(int*p,int sz)
- {
- int i;
- for (i = 0; i < sz; i++)
- {
- if (*(p + i) > *p) // 如果 p[i] > p[0]
- {
- * p = * (p + i) ; // p[0] = p[i]
- }
- }
- return * p ; // return p[0]
- }
- int main()
- {
- int arr[5] = { 7,1,3,9,5 };
- int i;
- int sz = sizeof(arr) / sizeof(arr[0]);
- int ret = search_max(arr , sz) ; // 函数调用过后,arr[] = {9 , 1 , 3 , 9 , 5}
- for (i = 0 ; i < sz ; i ++)
- {
- if (ret==arr[i])
- {
- printf("sign=%d\n", i) ; // 最大值在 arr[0],所以,打印出来的 sign 一定为 0
- }
- }
- printf("max=%d\n", ret);
- return 0;
- }
复制代码
search_max() 应该这样写
- int search_max(int * p , int sz)
- {
- int i , r ;
- for (i = 0 , r = * p ; i < sz ; i ++)
- {
- if (* (p + i) > r)
- {
- r = * (p + i) ;
- }
- }
- return r ;
- }
复制代码
我的代码这样写
- #include<stdio.h>
- int max(int * p , int sz)
- {
- int i , k ;
- for (k = 0 , i = 1 ; i < sz ; i ++) if(p[i] > p[k]) k = i ;
- return k ;
- }
- int main(void)
- {
- int arr[5] = {7 , 1 , 3 , 9 , 5} , k ;
- k = max(arr , 5) ;
- printf("max = %d , index = %d\n", arr[k] , k) ;
- }
复制代码
|
|