问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构实验 查找 求程序

发布网友 发布时间:2022-05-12 20:32

我来回答

1个回答

热心网友 时间:2023-10-21 15:42

下面是程序:

#include <stdio.h>

#include <string.h>

struct StudentInfo

{

char ID[11];

char name[6];

double score;

}StuInfo[12]=

{

{"0800301105", "JACK", 95},

{"0800201505", "LUN", 85},

{"0400820115", "MARY", 75.5},

{"0400850122", "KATE", 78.9},

{"0500201011", "LILI", 88},

{"0800401105", "JACK", 96},

{"0600830105", "JAN", 98.4},

{"0952520012", "SAM", 75},

{"9721000045", "OSCAR", 64},

{"0700301105", "JACK", 97},

{"0458003312", "ZOE", 68.9},

{"0400830211", "BOBI", 87.6} 

}; 

void main()

{

int i,j,k,flag;

char id[11],name[6];

double score;

for(i=0;i<11;i++)

{

k=i;

for(j=i+1;j<12;j++)

{

if(strcmp(StuInfo[k].ID,StuInfo[j].ID)>0)

k=j;

}

if(k!=i)

{

strcpy(id,StuInfo[i].ID);

strcpy(name,StuInfo[i].name);

score=StuInfo[i].score;

strcpy(StuInfo[i].ID,StuInfo[k].ID);

strcpy(StuInfo[i].name,StuInfo[k].name);

StuInfo[i].score=StuInfo[k].score;

strcpy(StuInfo[k].ID,id);

strcpy(StuInfo[k].name,name);

StuInfo[k].score=score;

}

}

printf("请输入要查找的学号:\n");

scanf("%s",id);

i=0;j=11;

flag=0;//若找到则赋值为1

while(i<=j)

{

k=(i+j)/2;

if(strcmp(StuInfo[k].ID,id)==0)

{

printf("%s %s %g\n",StuInfo[k].ID,StuInfo[k].name,StuInfo[k].score);

flag=1;

break;

}

if(strcmp(StuInfo[(i+j)/2].ID,id)<0)

i=k+1;

else

j=k-1;

}

if(flag==0)

printf("Cannot find it!\n");

for(i=0;i<11;i++)

{

k=i;

for(j=i+1;j<12;j++)

{

if(StuInfo[j].score>StuInfo[k].score)

k=j;

}

if(k!=i)

{

strcpy(id,StuInfo[i].ID);

strcpy(name,StuInfo[i].name);

score=StuInfo[i].score;

strcpy(StuInfo[i].ID,StuInfo[k].ID);

strcpy(StuInfo[i].name,StuInfo[k].name);

StuInfo[i].score=StuInfo[k].score;

strcpy(StuInfo[k].ID,id);

strcpy(StuInfo[k].name,name);

StuInfo[k].score=score;

}

}

printf("请输入要查找的分数:\n");

scanf("%lf",&score);

i=0;j=11;

flag=0;//若找到则赋值为1

while(i<=j)

{

k=(i+j)/2;

if(score==StuInfo[k].score)

{

printf("%s %s %g\n",StuInfo[k].ID,StuInfo[k].name,StuInfo[k].score);

flag=1;

break;

}

if(score<StuInfo[k].score)

i=k+1;

else

j=k-1;

}

if(flag==0)

printf("Cannot find it!\n");

}

下面是一个测试用例截图:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机壁纸花卉红色手机壁纸花卉 辽宁智能五芯防水连接器 军工产品浅谈——航空插头 xp电脑系统修复XP系统怎么恢复出厂设置 ...表编辑器后打不开任何文件,无需重装系统,电脑盲都能用 粼基本信息 粼五笔怎样打? 【微科普】想变成光?先搞清楚光是什么吧! 手机被拉黑后打电话是什么提示? 物流管理专业对数学的要求高么 数据结构&#47;C语言: [实验内容] 有一个整形数组a,其中含有n个元素,设计尽可能好的算法求 奔驰gl550仪表显示Airbag frontaⅠ passager 数组实验报告数据结构及算法描述怎么写 4399游戏盒子下载游戏出现完成100.00%是怎么个情况 怎么识别奔驰车价位, 4399游戏盒子下载的时候哦一直等待中 怎么办 奔驰s350AIRBAG是什么开关 板栗树该怎么种植方法视频 板栗种子怎么种才能发芽? 4399游戏盒子下载游戏要钱吗? 怎样在电脑上用4399游戏盒子 关于4399游戏盒子的 捷信申请分期买手机要什么条件?捷信公司官网上有吗? 捷信分期贷款可以买手机嘛? 捷信有现金贷还能办理手机分期吗 招商银行信用卡可以凭身份证贷款吗 在VMware 上window7要用户名和密码才能够登陆,怎么解决 我有招商银行信用卡能申请信用卡贷款吗 my vmware账号密码共享 我要绅士动漫 airbag是宝马的哪款 数据结构实验程序的目录 奔驰s350四驱pass air bag是什么按键 奔驰车显示passenger air bag灯亮,什么意思 奔驰E级运动版轿车驾驶员前置气囊的位置在哪? 数据结构实验,求大神提供完整代码(c或c++),不胜感激啊…… 利用哈夫曼编码进行通信可以大大提 数据结构中经常对数组进行的两种基本操作是什么? 数据结构实验报告: 查找 排序 图的存储与遍历 二叉树的存储与遍历 数据结构数组建立 为什么手机的文件管理软件里总是自动下载压缩包,删除了还自动下载? 怎么讲好三比,比理想? 关于开展“三比一降”劳动竞赛和“五小”创新活动的通知活动方案 建党作文(650字? 这个有英文字母组成的时钟是什么? 结合三比三提升活动,谈谈如何做好自身及职工担当作为能力 “三比三不比”主题班会活动设计 英语6pm什么意思画时钟怎么画 请你谈一谈围绕落实集团公司“三比三提升”活动,党员先锋模范作用发挥怎么样_百度问一问 建党作文(650字 民政局职能