别的方法 谁还有?

lijianbin9 2008-11-16 11:06:29
要求输入 1-20中的 任意的10个数字,之后 输入刚才输入的 任何一个 ,,,确定 是第几次输入的数字,,
如:输入了1.6.3.4.5.16.13.19.7.15.
在输入 7的话,,,显示 是第九次输入的。。。。
我的方法,,谁还有别的方法,,,类似的,,别超出太多范围,,谢谢


#include <stdio.h>
main(){
int i, input[10], reinput;
for(i=0 ; i<10 ; i++) {
printf("输入第%d输入的数字 ", i);
scanf("%d",&input[i]);
if(input[i]>20 || input[i]<1 ) {
printf("输入1-20范围的数字 .");
i--;
}
}

printf("输入选择的数字: ");
scanf("%d",&reinput);
for(i=0; i<10 ; i++) {
if(input[i] == reinput)
break;
}
printf("输入的数字为%d , 是第%d输入的.\n",input[i],i+1);
}
...全文
104 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunzerui 2009-05-01
  • 打赏
  • 举报
回复
up
学习了!
cyj626 2008-11-18
  • 打赏
  • 举报
回复
up
deerwin1986 2008-11-18
  • 打赏
  • 举报
回复
呵呵 HASH啊 比较擅长做这种事情哈
cba_v 2008-11-18
  • 打赏
  • 举报
回复
up
太乙 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yihan7h 的回复:]
要求输入 1-20中的 任意的10个数字
整形?不能重复?
都满足的话,1楼hqin6的更佳……
若不满足的话,hqin6的就不行了......
[/Quote]

行,我再改改,和lz的一模一样!



#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
int a[20];
int i;
int findnum;
memset(a,-1,sizeof(a));
for(i=0;i<10;i++)
{
int m;
printf("输入第%d输入的数字 ", i);
scanf("%d",&m);
if(m>20 || m <1 ) {
printf("输入1-20范围的数字 .");
i--;
continue;
}
if(a[m]==-1)a[m] = i;
}
printf("输入选择的数字: ");

scanf("%d",&findnum);
printf("%d",a[findnum]);
return 0;
}


yihan7h 2008-11-17
  • 打赏
  • 举报
回复
要求输入 1-20中的 任意的10个数字
整形?不能重复?
都满足的话,1楼hqin6的更佳……
若不满足的话,hqin6的就不行了......
lijianbin9 2008-11-17
  • 打赏
  • 举报
回复
up----
lann64 2008-11-17
  • 打赏
  • 举报
回复
#include <iostream>
#include <map>

using namespace std;

int main()
{
multimap<int,int> m;
int searchnum;
typedef multimap<int,int>::size_type sz_type;

for(int i=1;i<11;i++)
{
int num;
cout<<"输入第"<<i<<"次输入的数字:";
cin>>num;
if (num>20 || num <1 )
{
cout<<"输入1-20范围的数字。" <<endl;
i--;
continue;
}
m.insert(make_pair(num,i));
}

cout<<"输入选择的数字: ";
cin>>searchnum;

sz_type entries=m.count(searchnum);
if (entries)
cout<<"数字"<<searchnum<<"是第 ";
multimap<int,int>::iterator iter=m.find(searchnum);
for(sz_type cnt=0;cnt!=entries;++cnt,++iter)
cout<<iter->second<<" ";
if (entries)
cout<<"次输入的。"<<endl;
else
cout<<"没有输入过数字 "<<searchnum<<endl;

return 0;

}
hefeng1000 2008-11-17
  • 打赏
  • 举报
回复
UP
lijianbin9 2008-11-17
  • 打赏
  • 举报
回复
还有什么 方法,,
Donald_Duck 2008-11-17
  • 打赏
  • 举报
回复
up
太乙 2008-11-16
  • 打赏
  • 举报
回复
我没加上什么越界的检查等~lz看着加上就行了,不是难事儿吧??
lonelywinter340 2008-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hqin6 的回复:]
C/C++ code#include<stdlib.h>
#include<stdio.h>
int main()
{
int a[20];
int i;
int findnum;
for(i=0;i<10;i++)
{
int m;
scanf("%d",&m);
a[m] = i;
}
scanf("%d",&findnum);
printf("%d",a[findnum]);
return 0;
}
[/Quote]

楼上正解,其实用的是Hash table的思想
太乙 2008-11-16
  • 打赏
  • 举报
回复
#include<stdlib.h>
#include<stdio.h>
int main()
{
int a[20];
int i;
int findnum;
for(i=0;i<10;i++)
{
int m;
scanf("%d",&m);
a[m] = i;
}
scanf("%d",&findnum);
printf("%d",a[findnum]);
return 0;
}

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧