C++简单问题

写几个函数1、输入10个职工的姓名和工号2、按工号由小到大排序,姓名也随之调整3、要求输入一个工号,用折半发找出该职工,从主函数输入要查找的工号,输出该职工的姓名。问题补... 写几个函数
1、输入10个职工的姓名和工号
2、按工号由小到大排序,姓名也随之调整
3、要求输入一个工号,用折半发找出该职工,从主函数输入要查找的工号,输出该职工的姓名。
问题补充:就是一个程序,全部要用函数解决。通过main函数调用其它的
C++
看看下面哪里错了
编译没有错误

#include "iostream.h"
#include<stdio.h>
#include <string.h>
#define N 10
void put (int num[],char name[N][10])
{int i;
for (i=0;i<N;i++)
{cout<<"input No:"<<endl;
cin>>num[i];
cout<<"input the name:"<<endl;
gets(name[i]);

}
}
void sort(int num[], char name[N][10])
{int j,t,time;
for(time=1;time<N;time++)
for(j=0;j<N-time;time++)
if(num[j]>num[j+1])
{t=num[j];num[j]=num[j+1];num[j+1]=t;}
cout<<"从小到大"<<endl;
for(j=0;j<N;j++)
{
cout<<num[j]<<name[j]<<endl;
}

}

void search(int n,int num[],char name[N][10])
{
int top, bot, mid,t;
bot=0,t=0;
top=N-1;
int sign=1;
if((n<num[0])||(n>num[N-1]))
t=-1;
while((sign==1)&&(bot<=top))
{mid=(bot+top)/2;
if(n==num[mid])
{
t=mid;
cout<<n<<"the name is:"<<name[t]<<endl;
sign=0;
}
else if (n<num[mid])
top=mid-1;
else
bot =mid+1;
}
if(sign==1||t==0)
cout<<"not find"<<n<<endl;
}

void main()
{int num[N],number,a=1,c;
char name[N][10];
put(num,name);
while (a==1)
{
cout<<"input number to look for:"<<endl;
cin >>number;
search(number,num,name);
cout<<"continue or not(Y/N)?";
getchar();
c=getchar();
if(c=='n'||c=='N')
a=0;
}
}
题目是帮别人问的,我自己对C++一点不懂,所以现在不知道该给谁分,下午找他来看下,他说那个好就给哪个分
展开
 我来答
IT安全资讯和黑客技术
2007-12-20 · 超过30用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:0
展开全部
-语法错误:getchar();c=getchar();--- c把回车读的.导致一些混乱.把这两句改为cin>>c;同时前面声明改为char c;
-算法问题:函数put.应该先对输入的num进行判断是否为一个数字,否则若为其他字符,系统强制转为int,查找时当然找不到.解决办法:
1.可以进行一个数字判断.
2.可以将num[N]声明为char*型.这样也可以接收字母或其他的.同时也可以以字符判断.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友30bba1497
2007-12-20 · TA获得超过634个赞
知道小有建树答主
回答量:682
采纳率:0%
帮助的人:530万
展开全部
这是什么程序啊????? 连个注释也没有,还有问题出在哪也不说清楚,还有就是既然是c++为什么不把人的信息做成一个类啊?
输入之后没有调用排序函数
应该在put(num,name);之后调用sort(num,name);
没有排序的东西用折半不知道会是什么效果?找不到是正常的
找到了是运气。
getchar();
c=getchar(); 这两个啥意思?要过滤掉回车吗?
不知道输入一个字符后不回车程序会跳转吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DestroyofLight
2007-12-20 · TA获得超过1667个赞
知道小有建树答主
回答量:1542
采纳率:0%
帮助的人:1640万
展开全部
你的问题出在读入上 读不进去姓名

其实问题很简单 把gets(name[i]);换成cin>>name[i];就解决了

因为在你输入编号以后 你按了回车 gets刚好把那个回车读了 就不会读入名字了

所以建议你改成cin...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haibinj
2008-01-09 · TA获得超过6772个赞
知道大有可为答主
回答量:999
采纳率:0%
帮助的人:0
展开全部
1.int a[10]
char c=’a’,d’g;
则a[g-c],a[‘d’-c],代表什么
2. #include<iostream.h>
void main()
{
Char s1[]=”01234567”,s2[10]=”01234567”;
Cout<<sizeof(s1)<<” “<<sizeof(s2)<<endl;
} 怎么结果是9 10 而不是9 9呢
3.i++<4 的意思是 i<4,再算i++么
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
户桖艳RR
2007-12-20 · TA获得超过513个赞
知道答主
回答量:201
采纳率:0%
帮助的人:0
展开全部
你的程序一点注释都没有,都不知道是干什么,估计要看明白都得花不少时间,谁还有这闲功夫帮你看啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式