1159 最大的两个数(指针专题)

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1159
Description

求n个整数中的最大的两个元素。要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下:
void LargestTow(int a[],int n,int *pfirst,int *psecond)
{
/*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */
}

Input
输入有两行,输入第一行是一个整数n,1<n<=1000;第二行是n个整数,由空格隔开。
Output
输出两个整数,表示数组中最大的两个值。输出占一行。
Sample Input
5
6 3 4 9 8
Sample Output
9 8
题意描述:
输入元素的个数n以及n个整数
调用LargestTow()函数计算并输出该数组中最大和第二大的两个数
解题思路:
调用sort函数,将指针赋值即可
程序代码:

 1 #include<stdio.h>
 2 void LargestTow(int a[],int n,int *pfirst,int *psecond);
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int n,a[1010],i;
 8     int pfirst,psecond;
 9     scanf("%d",&n);
10     for(i=0;i<n;i++)
11         scanf("%d",&a[i]);
12     LargestTow(a,n,&pfirst,&psecond);
13     printf("%d %d\n",pfirst,psecond);
14     return 0;
15 }
16 void LargestTow(int a[],int n,int *pfirst,int *psecond)
17 {
18     sort(a,a+n);
19     *pfirst=a[n-1];
20     *psecond=a[n-2];
21 }

易错分析:
指针作为函数参数的用法

时间: 2024-10-18 01:15:03

1159 最大的两个数(指针专题)的相关文章

编程题:返回指针值的函数,求两个数中较大的数。

#include<stdio.h> int *max(int *x,int *y) { int *q; if(*x>*y)  q=x; else  q=y; return q; } void main() { int a,b,*p; scanf("%d,%d",&a,&b); p=max(&a,&b); printf("%d,%d,max is %d\n",a,b,*p); } 编程题:返回指针值的函数,求两个数中较

编程题:指向函数的指针,求两个数中较大的数。

#include<stdio.h> int max(x,y) { int z; if(x>y)  z=x; else  z=y; return z; } void main() { int a,b,c; int (*p)(); p=max; scanf("%d,%d",&a,&b); c=(*p)(a,b); printf("%d,%d,max is %d\n",a,b,c); } 编程题:指向函数的指针,求两个数中较大的数.,布布

Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值

目录(?)[+] 一.什么是指针? 简单来说: 指针就是内存地址      内存地址就是指针.来看个小案例 #include<stdio.h> #include<stdlib.h> /** 指针就是内存地址 内存地址就是指针 */ main() { //定义一个int类型的变量i,并且赋值为10 int i=10; //定义一个int类型的一级指针变量p int* p; //把i对应的地址给p变量 p=&i; //指针取值*p:把p变量地址对应的值取出来 printf(&q

c指针-专题

六---指针 内存和地址怎么理解呢? 机器中有一些位置,每一个位置被称为[字节]/byte,许多现代机器上,每个字节包含8个位.更大内存单位[字],通常包含2个或4个字节组成. 一个字包含4个字节,它的地址是什么? 他仍然只有一个地址,是最左边还是最右边的那个字节的位置,取决于机器. 机器事实-关于整型的起始位置: 在要求边界对齐(boundaryalignment)的机器上,整型存储的起始位置只能是某些特定的字节,通常是2或4的倍数. 变量名和地址关系? 所有高级语言的特性之一,就是通过名字而

笔试算法题(09):查找指定和值的两个数 &amp; 构造BST镜像树

出题:输入一个已经升序排序的数组和一个数字:要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n): 分析:对于升序排序的数组{-i-j-k-m--},只有可能是i+m=j+k(j和k可能是同一个数),所以可以从两边往中间收缩而忽视其他交叉相加的情况: 解题: 1 void FindSumFactor(int *array, int length, int sum) { 2 int left=0, right=length-1; 3 whil

用swap 交换两个数

#include<stdio.h>main(){ void swap(int *p1,int *p2);//定义swap函数,用于交换.  int *p,*q; int a,b; //定义两个指针变量和两个数a和b  printf("请输入两个数:");  scanf("%d,%d",&a,&b);//输入两个数  p=&a; q=&b;//将p和q分别指向a和b的地址  swap(p,q);//调用swap函数对p和q执

void swap(int a,int b)这样一个函数原型能交换两个数么?可以!!

昨天在指导别人指针的时候,突发奇想想到这么一道题,我觉得挺有意思的,发给大家看看,虽然不是什么很高级的技术,但是是个很有趣的思路..... 题目就是: void swap(int a,int b)这个函数原型,不能用全局变量与静态变量的情况下,怎么实现交换两个数? 如果你有兴趣可以思考一下,如果没兴趣就直接看下面的答案吧. --------------------------------------------------华丽的分割线-------------------------------

和为S的连续正数序列(剑指offer) 两个个指针的应用

和为S的连续正数序列 参与人数:1005时间限制:1秒空间限制:32768K 通过比例:26.06% 最佳记录:0 ms|0K(来自  平方宁) 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22.现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

快速寻找满足条件的两个数

时间:2014.07.17 地点:基地 ------------------------------------------------------------------------------------- 一.问题描述 给定一个数组,要求快速查找出其中的两个值,他们的和为一个给定的值. 比如给定数组:1 4 5 6 8  9,和给定值9,我们能找出4+5=9为所要的数值 ------------------------------------------------------------