c语言,设有一个整型数组,另输入一个整数,编程查找这个整数是不是在数组中出现过,若出现,则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言,设有一个整型数组,另输入一个整数,编程查找这个整数是不是在数组中出现过,若出现,则相关的知识,希望对你有一定的参考价值。

设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。
自己写的 但是觉得有问题 求解 并指出错误 最好是按照我这个思维方式改正下去 谢谢
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()

int a[10],i,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&t);
for(i=0;i<10;i++)
if(a[i]==t)
printf("%d",a[i]);
if(i<=t)
printf("nofound");

用机器跑 输入了十个数 然后输出个没有出现过的可以出现nofound 但是输入出现的数 会出现当时出现的数并且加nofound的 而不是题目要求的第几个数
然后自己画蛇添足的想将printf那里面a[i]变成i+1 不值这样可否 但是一样会出现nofound

你这个程序显然有问题,首先题目要求输出第一次出现的位置,所以当你找到那个数字的时候应该终止寻找,要用到break函数就可以了。而当循环一遍都未找到时,i=10,所以你应该判断i与10的关系,当大于等于10输出nofound。 不明白i为什么要跟t比,这个没关系的追问

谢谢 真是一语惊醒梦中人

追答

还有 看了上面的,你要习惯用return 语句,推荐每次写完主函数加上return 0 当你要引用函数的时候除了定义void型或使用指针变量时要带回某个值的时候就要用到return语句了,如果你不常用可能会在你写完函数后忘记加而导致结果出错。

追问

我有提问私信给你了 不知道你看到了没有 太多了写不下

追答

看到了 回答了
if(i>=10)
printf("nofound"); 这个放在了for里面是不对的
要放在外面,因为当你的i大于10的时候是跳出循环
无法在执行循环里面的内容

参考技术A #include "stdio.h"
void main()

int a[10],i,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&t);
for(i=0;i<10;i++)

if(a[i]==t)

printf("%d",i+1);//既然是输出这个数第一次出现的位置,这里应该是i+1的值。
return 0;//找到这个数了,就结束。



//循环结束都还没有找到这个数就输出“nofound"。

printf("nofound");
追问

return我不习惯 能不能换个其他的 直接换成break我试了不行 retuan0是什么意思 返还一个0么?

追答

return 表示这函数要返回的东西。这里表示主函数运行结束时返回一个0,在我们编程序时我们通常设置返回值来表示程序是否运行正常。
如果里面不用return 0,你可以用 break 或者exit()
当你用了break时,下面就不能直接用printf("nofound"); 要改成这样
if(i>=10)//i大于10时,表示遍历了整个数组,都没有找到这个数。

printf("nofound");

参考技术B int a[10],i,t,x;
for(i=0;i<10;i++)

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

scanf("%d",&t);
for(i=0;i<10;i++)

if(a[i]==t)

printf("%d",a[i]);
break;//已经找到来,就跳出循环



printf("出现位置的下标是:%d",i);
你错在:没有break~追问

能不能完整的帮我写一遍 谢谢 还有就是要输出的位置是多少位 不是输出的那个数

追答

#include
int main()

int a[10],i,t,x;
for(i=0;i<10;i++)

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

scanf("%d",&t);
for(i=0;i<10;i++)

if(a[i]==t)

printf("%d",a[i]);
break;//已经找到来,就跳出循环


printf("出现位置的下标是:%d",i);

i就是数字位置,不是输出那个数。比如:
1 2 3 4 5 6 7 8 9 10 十个数字
搜索3
最后输出了i=2,这是因为下标从0开始

追问

这样写我知道 我之所以i+1就是怕如果写了 考试老师这样会不会算错?

追答

不会的 只是求结果 有的时候怎么方便怎么写最好

追问

还有个问题 我在if后面加了另外一个if就是打印出nofound 但是结果不是现实nofound而是10 问题是不是出在最后的那个printf?

追答

是的,得加上一个判断,如果循环完成之后没有找到,就printf("没有找到");

本回答被提问者和网友采纳

以上是关于c语言,设有一个整型数组,另输入一个整数,编程查找这个整数是不是在数组中出现过,若出现,则的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程 在整型有序数组中查找想要的数字并且返回下标

C语言,查找数组里重复出现的数字;

C语言编程中数组的定义

C语言将数组转换成一个整型数

【C语言】查找:给定有10个元素的整数数组,输入一个数,在数组中查找是该数

ZZNUOJ_用C语言编写程序实现1149:查找子数组(附完整源码)