| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 594 人关注过本帖
标题:谭浩强例题,关于数组的运用和函数调用
取消只看楼主 加入收藏
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
结帖率:95.65%
收藏
已结贴  问题点数:5 回复次数:1 
谭浩强例题,关于数组的运用和函数调用
采用折半查找法,输入一个员工的number找到他的名字,但输入要输两次,还有就是GETCHAR()是干什么用(下面已注)
#include <stdio.h>
#include<string.h>
void main()
{
 void input(char x[][10],int y[]);
 void array(char x[][10],int y[]);
 void search(int k,int y[],char x[][10]);

 int n;
 char name[10][10];
 int arr[10];
 input(name,arr);
 array(name,arr);
 printf("input the number:");
 scanf("%d",&n);
 search(n, arr,name);


}



void input(char x[][10],int y[])
{
 int i;
 for(i=0;i<10;i++)
 {
  printf("input the name:");
  getchar();(这句的作用是什么???不解,如果没有这句运行就不正常。)
  gets(x[i]);
  printf("input the number :");
  scanf("%d",&y[i]);
  
  
 }


}

void array(char x[][10],int y[])(重新排序是否有问题?运行感觉还是没有排序???)
{
 int i,j;
 int min;
 char t2[8];
 int t1;
 for(i=0;i<10;i++)
 {
  min=i;
  for(j=i;j<10;j++)
  {
    if(y[min]>y[j])
        min=j;
  }
  t1=y[i];
  strcpy(t2,x[i]);
  y[i]=y[min];
  strcpy(x[i],x[min]);
  y[min]=t1;
  strcpy(x[min],t2);
 }
 printf("\n result \n");
 for(i=0;i<10;i++)
     printf("\n%5d%10s",y[i],x[i]);

}
void search(int k,int y[],char x[][10])
{
 int mid,top,bottom,flag=0;
 
 scanf("%d",&k);
 top=10;
 bottom=0;
 if(k>y[top]&&k<y[bottom])
   printf("there is nothing");
 while(flag==0&&bottom<=top)
 {
  mid=(top+bottom)/2;
  if(k<y[mid])
   top=mid-1;
  else if(k>y[mid])
   bottom=mid+1;   
  else
  {
     printf("%d is %s",k,x[mid]);
     flag=1;
  }
 }



}
搜索更多相关主题的帖子: void 干什么 include search number 
2012-03-06 23:15
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 楼主 教皇
运行有问题!仔细看,发现一个数字后面的名字是空的,然后输入数字找人名,需要输两次!
2012-03-07 14:20
快速回复:谭浩强例题,关于数组的运用和函数调用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017012 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved