题目
解题思路
首先录入数据,然后编写查找函数,并用函数找到目标数赋值给目标变量再输出。
- 录入数据时由于不确定元素个数故用EOF判断输入是否结束
- 定义函数时我们需要改变num成为目标数,故用指针指向num以此改变num在主函数中的值。
- 查找函数中用for循环从0~n依次查找,其中具体使用find函数,该函数未找到目标数时则回返回数组 中最后一个数,故以此判定是否找到目标数并赋值给目标变量num。
- 最后直接输出num就是我们所要找到的目标数。
代码
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=10050;
int nums[N];
int find_nums(int nums[],int i,int* num)
{
//从小到大排序
sort(nums,nums+i);
for(int x=0;x<=i;x++)
{
//find找到函数就返回该函数,找不到返回最后一个数字
//若返回最后一个数字代表找不到该数字,则使num目标数等于该查找不到的数
if(find(nums, nums+i, x) == nums+i)
*num=x;
}
return *num;
}
int main()
{
int i,n,num=0;
//设置数组全为0
memset(nums,0,sizeof(nums));
while(scanf("%d",&nums[i])!=EOF)
{
//读入数据
i++;
}
find_nums(nums,i,&num);
printf("%d\n",num);
return 0;
}