wang2679958237 2017-05-05 10:35 采纳率: 15.8%
浏览 820

为什么找不到学生成绩记录?

代码如下:
#include
#define MAX 100
typedef struct {
int n;
char name[20];
int s;
} datatype;
typedef struct {
datatype data[MAX];
int len;
}Rec, *Table;

void CreateTable(Table r);
void InsertSort(Table r);
void BubbleSort(Table r);
void SelectSort(Table r);
void Output(Table r);
int Binary(Table r, int k);

void CreateTable(Table r)
{
int i;
printf("\ninput number of nodes\n\t");
scanf("%d", &r->len);
printf("\ninput num,name,s\n");
for (i = 1; i <= r->len; i++)
{
printf("\t");
scanf("%d %s %d", &r->data[i].n, r->data[i].name, &r->data[i].s);
}
}
void InsertSort(Table r)
{
int i, j;
for (i = 2; i <= r->len; i++)
{
j = i - 1;
r->data[0] = r->data[i];
while (r->data[0].ndata[j].n)
{
r->data[j + 1] = r->data[j];
j--;
}
r->data[j + 1] = r->data[0];
}
}
void BubbleSort(Table r)
{
int i, j; datatype t;
int flag = 1;
for (i = 1; ilen&&flag; i++)
{
flag = 0;
for (j = r->len; j>i; j--)
if (r->data[j].n>r->data[j - 1].n)
{
t = r->data[j];
r->data[j] = r->data[j - 1];
r->data[j - 1] = t;
flag = 1;
}
}
}
void SelectSort(Table r)
{
int i, j, p;
datatype t;
for (i = 1; i <= r->len; i++)
{
p = i;
for (j = i + 1; j <= r->len; j++)
if (r->data[j].s>r->data[p].s)
p = j;
if (p != i)
{
t = r->data[p];
r->data[p] = r->data[i];
r->data[i] = t;
}
}
}
void Output(Table r)
{
int i;
for (i = 1; i <= r->len; i++)
printf("\n\t%d %s %d", r->data[i].n, r->data[i].name, r->data[i].s);
}
int Binary(Table r, int k)
{
int low, mid, high;
low = 1;
high = r->len;
while (low<=high)
{
mid = (low + high) / 2;
if (k == r->data[mid].n) {
return mid;
}
else if (kdata[mid].n)
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
return 0;
}
void main()
{
int num;
int p;
Rec R;
CreateTable(&R);
printf("\n");
printf("\n直接插入法按学号排成升序的结果为:");
InsertSort(&R);
Output(&R);
printf("\n冒泡法按学号排成降序的结果为:");
BubbleSort(&R);
Output(&R);
printf("\n简单选择法按成绩排降序的结果为:");
SelectSort(&R);
Output(&R);
printf("\n");
printf("需要查找排名的学生学号:");
scanf("%d", &num);
p = Binary(&R, num);
if (p == 0) {
printf("没有此同学的成绩记录!");
}
else {
printf("该同学成绩排名第%d", p);
}
printf("\n");
}

  • 写回答

2条回答 默认 最新

  • wang2679958237 2017-05-05 10:31
    关注

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行