蓝桥试题测试---查找整数(scanf流问题)
来源:互联网 发布:python能做网站开发吗 编辑:程序博客网 时间:2024/06/06 17:40
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
1 9 4 8 3 9
9
样例输出
2
数据规模与约定
1 <= n <= 1000。
这个题目的实现是非常简单的,但是这道题涉及到了我一个薄弱的知识点:scanf流。根据题目中的样例输入可知,第一次我们需要输入数字的个数,第二次我们需要输入每个数字,第三次输入目标值。由于数字的个数是不确定的,所以在第二次输入的时候不可能采用scnaf("%d%d%d...",&a,&b,&c...)这种格式。所以我就想用这种方法实现:
while(count--){scanf("%d",&array[num++]);}当我把这行代码写完之后,我突然意识到了一个问题,这样结合while()循环的方式来输入,岂不是每输入一次数字都要按一下回车?这样数字输入完成之后,数字的格式不是一横行,而是一竖列,这样是不符合题目的要求的。我想死马当活马医吧,在第二次输入当中,我大胆采用每次输入一个数字后不按回车,而按空格。如下:
第一行的5代表数字的个数,第二行的五个数字表示我输入的格式采用空格隔开,输入目标数字5。我惊讶的发现,输出结果竟然正确!
我C语言基础并不是很好,绞尽脑汁想不明白这是为什么。在百度上查阅了关于scanf资料,了解了其中的原因。当我采用空格隔开的方式输入数字时候,这五个数字会先缓存到scanf流当中,scanf在进行第一次扫描后,首先扫描到了数字1,接下来遇到了空格,这个时候会停止扫描,停止扫描之后由于while()循环的作用,scanf马上会循环进入第二次扫描,扫描到数字2之后又遇到了空格,停止扫描,这时候循环后进入第三次扫描,以此类推,由于while(count--)的限制,scanf会扫描五次后结束。这就是原因所在。接下来贴出完整代码:
#include<stdio.h>#define MAXN 10000+10int array[MAXN];int main(){int count,i,m;int num=0;int temp=-1;int target;scanf("%d",&count);while(count--)scanf("%d",&array[num++]);scanf("%d",&target);for(i=0;i<num;i++){if(array[i]==target){printf("%d",i+1);break;}}if(i==num)printf("%d",temp);return 0;}
1 0
- 蓝桥试题测试---查找整数(scanf流问题)
- 蓝桥 查找整数
- 蓝桥 查找整数
- 蓝桥basic5查找整数
- 蓝桥试题测试---序列求和
- 蓝桥试题测试---Fibonacci数列
- 蓝桥基础练习 查找整数
- 蓝桥--芯片测试
- java蓝桥杯试题查找整数
- 问题 H 查找整数
- 【蓝桥】 历届试题 带分数
- 2011国信蓝点(桥)杯C语言试题
- 蓝桥Basic23芯片测试
- 蓝桥杯试题集 基础练习 查找整数
- 面试题-整数连接问题
- 2012国信蓝桥初赛试题
- 【蓝桥训练】 历届试题 分糖果
- 【蓝桥训练】历届试题 剪格子
- mybatis针对oracle和mysql高效率批量插入的解决方案
- cygwin+Hadoop+win8+eclipse下的一些问题解决
- 软件工程总结
- Combination Lock<uscao>1.3 -<枚举>(环形用%的坑)
- java中泛型的本质
- 蓝桥试题测试---查找整数(scanf流问题)
- Maven搭建SpringMVC+Hibernate项目详解
- 弗洛伊德(Floyd)算法求图的最短路径
- cs231n课程作业assignment1(Softmax)
- 简单cas 配置
- 为什么要使用泛型
- 欢迎使用CSDN-markdown编辑器
- s5pv210+v4l2+h264硬件编码+RTP协议传输+SDP文件的嵌入式视频监控系统
- MySQL数据库中库、表名、字段的大小写问题