每日一练算法题(数组中按值找元素、找最大值和次大值)

在数组A[1..N]中查找值为k的元素,若找到输出其位置i(1<=i<=n),否则输出0作为标志。

函数接口定义:

 

Search(int a[],int n,int k);

其中 ank 都是用户传入的参数。a 为数组名,期中存了n个整数,下标为1到nk 为待查数据元素;若找到了,返回其下标;否则,返回0。

裁判测试程序样例:

 

#include <stdio.h> Search(int a[],int n,int k); main() { int a[50],n,i,k; scanf("%d",&n); //接收数组元素个数 for(i=1;i<=n;i++) //依次接收各个元素的值 scanf("%d",&a[i]); scanf("%d",&k); // 接收待查元素值k int x=Search(a,n,k); if(x==0) printf("NONE\n"); else printf("%d\n",x); } /* 请在这里填写答案 */

输入样例1:

5
67 48 90 34 25
34

输出样例1:

4

输入样例2:

6
45 67 89 9 7 5 56
34

输出样例2:

NONE
int Search(int a[], int n, int k) {
    for (int i = 1; i <= n; i++) {
        if (a[i] == k) {
            return i;
        }
    }
    return 0;
}

找出数组A[1..N]中最大值和次大值。(数组中元素个数大于两个且值各不相同)

函数接口定义:

 

void FindMax(int a[],int n,int *pmax1,int *pmax2);

其中 an 是用户传入的参数。 a为数组名, n为数组中元素的个数,在下标从1到n处存放。利用指针变量 pmax1pmax2带出运算结果。 pmax1为指向最大值的指针;pmax2为指向次大值的指针。

裁判测试程序样例:

 

#include <stdio.h> void FindMax(int a[],int n,int *pmax1,int *pmax2); main() { int a[50],n,i; int max1,max2; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); FindMax(a,n,&max1,&max2); printf("%d %d\n",max1,max2); } /* 请在这里填写答案 */

输入样例:

5
32 45 57 8754 33

输出样例:

8754 57
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值