精华内容
下载资源
问答
  • 遇到“有序”数组中查找元素类的题,优先考虑折半查找(二分查找)做法核心是利用所定义的下标left和right与mid(由计算得来)下标的比较来逐渐缩短查找范围,达到一个阈值后即为找到。源代码如下:#include#includeint ...

    遇到“有序”数组中查找元素类的题,优先考虑折半查找(二分查找)

    做法核心是利用所定义的下标left和right与mid(由计算得来)下标的比较来逐渐缩短查找范围,达到一个阈值后即为找到。

    源代码如下:

    #include

    #include

    int search(int a[], int x, int left, int right)//定义二分查找函数

    {

    while (left <= right)

    {

    int mid = (left + right) / 2;//计算当前查找范围中间元素的下标

    if (x < a[mid])

    {

    right = mid - 1;//若在中间元素的左边则移动right下标

    }

    if (x>a[mid])

    {

    left = mid + 1;//若在中间元素的右边则移动left下标

    }

    else

    {

    return mid;//说明找到元素

    }

    }

    return 0;

    }

    int main()

    {

    int i, m, n;

    int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//可事先定义也可让用户输入

    int left = 0, right = sizeof(a) / sizeof(a[0]);

    printf("请输入你要查找的数字:\n");

    scanf("%d", &n);

    m = search(a, n, left, right);

    if (m)

    {

    printf("找到了,下标为%d\n",m);

    }

    else

    printf("找不到\n");

    system("pause");

    return 0;

    }

    运行结果:

    04ebc3568c9630cc9aa10f8bae82f49b.png

    93a2e2cc53084a706f8a0f586ad45b26.png

    展开全文
  • 查找整数 C语言 问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。 输入格式 第一行包含一个整数n。 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。 第三...

    查找整数 C语言

    问题描述

    给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
    输入格式

    第一行包含一个整数n。

    第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

    第三行包含一个整数a,为待查找的数。

    输出格式
    如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

    样例输入
    6
    1 9 4 8 3 9
    9

    样例输出
    2

    数据规模与约定
    1 <= n <= 1000。

    这道题与上一道差不多,甚至可以对我上一篇博客中的部分代码稍加修改直接拿来用,代码如下:

    #include <stdio.h>
    
    int main() {
    	int n,i=0,num,p=-1;
    	int flag=1;  //标志位
    	int a[1000];
    	
    	scanf("%d",&n);
    	if(n>0&&n<=1000)
    	{
    		while(flag)  //当标志位为1时,执行
    		{
    			scanf("%d",&a[i]);
    			if(a[i]>0&&a[i]<=10000)
    			{
    				i++;
    				if(i==n)
    				{
    					flag=0;  //当数的数量足够时,将标志位置0,跳出循环
    				}
    			}
    		}
    	}
    	
    	scanf("%d",&num);  //输入待查整数
    	for(i=0;i<n;i++)
    	{
    		if(num==a[i])
    		{
    			p=i+1;  //数组的0位有被使用,所以依据题意,应该在数组的真实位置上加1
    			break;
    		}
    	}
    	printf("%d",p);
    	
    	return 0;
    }
    

    以上是正确代码,为了读者不混淆,之前版本的代码就不贴了。
    这道题有一个个需要注意的地方(其他一些点在注释中有写们这里不赘述):

    之前数列特征一题中数组a[n]于 if 中创建,但是这道题不行!

    笔者一开始依然是在if中申请,但是编译无法通过,于是我只好退而求其次,直接在主函数开始时,就申请了一个长度为1000的数组,这才解决了问题。

    事实上:
    在 if 中申请数组或其他变量并不是全局变量,而是局部变量,即在 if 运行结束后,系统会自动清除在 if 中申请的这些局部变量

    所以在后面的函数中就无法调用这些变量。

    这里的 if 只是针对笔者的这段代码,那什么是全局变量,什么是局部变量呢?

    全局变量是指在所有函数(包括main()函数!)之前申请的变量(具体例子可以上网百度找找) 而例如if、while、for等,甚至是main中申请的所有变量都是局部变量。

    另外就是强调了很多遍的数据规模啦,这里就不说了。

    最后,附上上一题–数列特征的地址:
    蓝桥杯 基础练习(四)数列特征 C语言
    有兴趣的小伙伴可以比较一下~~

    ----------------------------这是一条委屈的分割线------------------------

    笔者回来了,笔者脸好痛…

    以上的代码被评测系统残忍的驳回了(运行超时),于是乎,笔者对代码进行了一些删减,代码如下:

    #include <stdio.h>
    
    int main() {
    	int n,i=0,num,p=-1;
    	int a[1000];
    	
    	scanf("%d",&n);
    	if(n>0&&n<=1000)
    	{
    		for(i=0;i<n;i++)
    		{
    			scanf("%d",&a[i]);
    		}
    	}
    	
    	scanf("%d",&num);
    	for(i=0;i<n;i++)
    	{
    		if(num==a[i])
    		{
    			p=i+1;
    			break;
    		}
    	}
    	printf("%d",p);
    	
    	return 0;
    }
    

    然后终于得到了评测系统的认可…

    对比一下就会发现,笔者删掉的是对 a[i] 的取值范围判断,所以笔者得出一个结论:

    蓝桥杯的题目中,取值范围是针对数据类型设立的,就是说对代码在这方面并没有过分苛刻的要求。
    所以上面这段正确代码其实还可以进一步简略

    当然,或许有在满足笔者强迫症的前提下还能避免运行超时的问题,但是笔者暂时想不出来T—T

    如果以上内容有误或有缺失,欢迎读者指正~~

    之前本文对全局和局部变量解释不清楚,存在一些误导,现已更正~~

    展开全文
  • 基础练习 查找整数 问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。 输入格式 第一行包含一个整数n。 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。 第三行包含...

    基础练习 查找整数

    问题描述

    给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
    输入格式

    第一行包含一个整数n。

    第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

    第三行包含一个整数a,为待查找的数。
    输出格式
    如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
    样例输入
    6
    1 9 4 8 3 9
    9
    样例输出
    2
    数据规模与约定
    1 <= n <= 1000。

    #include<stdio.h>
    #define N 1000
    
    int main()
    {
    	int n,i,m,temp;
    	int a[N];
    	scanf("%d",&n);
    	for(i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    	}
    	scanf("%d",&m);
    	for(i=1;i<=n;i++)
    	{
    		if(a[i]==m)
    		{
    			temp=i;
    			break;
    		}else{
    			temp=0;
    		}
    	}
    	if(temp==0)
    	{
    		printf("%d\n",-1);
    	}else{
    		printf("%d\n",temp);
    	}
    	return 0;
    }
    
    展开全文
  • 1-1 查找整数 (10 分)本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。输入格式:输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均...

    1-1 查找整数 (10 分)

    本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

    输入格式:

    输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

    输出格式:

    在一行中输出X的位置,或者“Not Found”。

    输入样例1

    5 7

    3 5 7 1 9

    输出样例1:

    2

    输入样例2:

    5 7

    3 5 8 1 9

    输出样例2:

    Not Found

    实验代码:

    #include

    int main(void)

    {

    int N, X, K;

    int a [20];

    scanf("%d", &N);

    scanf("%d", &X);

    int i;

    for (i = 0; i < N; i++)

    {

    scanf("%d", &a[i]);

    }

    for (i = 0; i < N; i++)

    {

    if (a[i] == X)

    {

    K = i;

    printf("%d", K);

    break;

    }

    }

    if (i == N)

    {

    printf("Not Found\n");

    }

    return 0;

    }

    解题思路:

    0265318d0b71a197eed079b5db5392d8.png

    本题遇到的问题及解决方法

    问题:因为是先在DEVc++上先写过一遍怕,没有出现大错误,但是忘记i的值是从0开始数起的

    解决办法:刚开始没发现,还问了一下志敏,都没发现,后来重新看了一次题目才看到题目要求是从0开始

    错误截图:

    1fd4f90380c7db9a0f9f6bd3749399cd.png

    代码截图:

    a0dcc975bd7a977ac843909b9e3388ed.png

    展开全文
  • 查找整数(C语言)

    2020-02-17 18:37:09
    查找整数(C语言) 题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。 第一行包含一个整数n。 第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。 第三行包含一个整数a...
  • C语言编程测试题C语言编程测试题(一)1.从键盘上输入三个整数a、b、c,要求按大小...设计一个函数完成对10个整数进行排序(要求使用指针实现)C语言编程测试题(二)1.从键盘接收一个字符,如果它是一个大写字母,则把...
  • C语言编程题精选C语言编程题精选1、 编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。2、 编程实现将任意的十进制整数转换成...
  • C语言 查找整数

    千次阅读 2020-09-02 18:39:14
    查找整数 题目描述: 本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。 输入格式: 输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数...
  • 查找整数C语言

    千次阅读 2019-09-08 21:55:51
    如果 a 在数列中出现了,输出它第一次出现的位置(位置从 1 开始编号),否则输出-1。 样例输入 6 194839 9 样例输出 2 数据规模与约定 1<=n<...#include"stdio.h" ...//利用 flag 标记功能,在...
  • C语言编程. 本章的重点是C的特性. C的历史. C的结构. 在计算机上运行C的方法. 2.1 C的历史. 2.2 C的特征. 2.3 C的组成C结构示例2查找两个数字的和#include main()/ *查找两个数字的和* / {int a,b,总和; / *将...
  • 高中信息技术招聘C语言编程题精选C语言编程题精选1、编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。2、编程实现将任意的十...
  • 对n个整数升序排序。编写选择排序函数,函数原型:void selectsort(int a[],int n);对n个整数降序排序。编写main函数,输入10个整数,利用函数将其按升序和降序分别输出排序结果。(输入输出数据间用一个空格分隔)...
  • Problem Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those ...
  • C语言编程题精选编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。...
  • C语言编程——查找书籍

    千次阅读 2019-04-29 18:17:07
    输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。 输出格式: 在一行中按照“价格, 书名”的...
  • C语言编程:求两个整数之和。

    千次阅读 2020-06-09 09:56:26
    标题C语言编程:求两个整数之和。 #include<stdio.h> int main() { int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n"\n); return 0; } 欢迎使用Markdown编辑器 标题 你好! 这是你第一次使用 ...
  • Linux下C语言编程

    万次阅读 多人点赞 2018-12-26 16:18:17
    第1章 Linux下C语言编程简介 本章将简要介绍一下什么是Linux,C语言的特点,程序开发的预备知识,Linux下C语言开发的环境,程序设计的特点和原则以及编码风格等。通过本章的学习,可以对在Linux下使用C语言编程有...
  • 内容简介:C语言编程题精选(共30道,有答案)1、编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。2、编程实现将任意的十进制...
  • 查找整数编程总结

    2019-03-03 14:19:00
    7-1 查找整数 (10 分) 本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。 输入格式: 输入在第一行中给出两个正整数N(≤20)和X,第二行...
  • C语言查找整数

    千次阅读 2018-11-21 18:56:58
    第三行包含一个整数a,为待查找的数。 输出格式 如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。 样例输入 6 1 9 4 8 3 9 9 样例输出 2 数据规模与约定 1 ...
  • C语言的语法有点忘了,以下仅供参考。if a>b thenif b>c thenreturn belseif a>c thenreturn celsereturn aend ifelseif a>c thenreturn aelseif b>c thenreturn celsereturn bend ifend if最坏情况...
  • 编写折半查找函数,函数原型:int Binserach(int *a,int n,int key); 功能:在n个元素的数组a中寻找key,若找到则返回key在...在main函数中,使用折半查找函数,输入一个整数查找是否在数组中,如在给出下标,...
  • C语言编程实例

    2020-02-10 00:11:28
    C语言三个数从小到大排序/输出 C语言猴子吃桃问题 C语言百钱买百鸡(百钱百鸡,百鸡问题) C语言渔夫打鱼晒网问题 ... C语言希尔排序算法 ... C语言二分查找算法,折半查找算法 C语...
  • 查找介于n1与n2(0)之间所有满足下列条件的整数: (1)该数的十进制表示中有且仅有两个相同的数字位; (2)该数是素数。 今天我们要写的程序如题 下面附上我的代码 #include int prime(int n) { int temp; int ...
  • 百鸡问题)C语言渔夫打鱼晒网问题C语言希尔排序算法C语言冒泡排序算法C语言直接插入排序算法C语言快速排序算法C语言选择排序算法C语言归并排序算法C语言二分查找算法,折半查找算法C语言分块查找算法,索引顺序查找...
  • 二维数组中,每一行按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序完成一个函数,输入这样的二维数组和一个整数判断数组中是否含有该整数,时间复杂度0(row+col) 思路: 例如一个符合条件的数组: ...
  • C语言编程排序:输入一个正整数n,再输入n个整数,用选择法对这n个整数按从小到大的顺序排序后输出。 例如: 输入:9 8 7 6 5 4 3 输出:3 4 5 6 7 8 9 选择排序的思想:选出最小的一个数与当前序列中的第一个数交换...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,953
精华内容 9,581
关键字:

查找整数c语言编程

c语言 订阅