美国克拉克大学地理:怎么修改这个C程序呀

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 01:46:27
要用turboc做。
输入成绩,返回学号,折半查找算法。修改一下老师PPT文件的程序,输入60,如果有5个学生都为60,把所有成绩为60分的学生学号全部输出。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 49
main()
{
long score[N][2];
time_t t;
int i,num;
long n=2313000l,temp;
srand((unsigned int)time(&t));
for(i=0;i<N;i++)
{
score[i][0]=n++;
score[i][1]=rand()%100;
}
for(num=N;num>1;num--)
for(i=0;i<num-1;i++)
if(score[i][1]>score[i+1][1])
{
temp=score[i][1];
score[i][1]=score[i+1][1];
score[i+1][1]=temp;
temp=score[i][0];
score[i][0]=score[i+1][0];
score[i+1][0]=temp;
}
printf(" studentID grade\n");
for(i=0;i<N;i++)
{ printf(" %d" , 0);
printf("%2ld\t%2ld", score[i][0], score[i][1]);
if(!((i+1)%4))
printf("\n");
} }

各位大侠,怎么修改啊……小女子先谢谢啦~~

mm是要帮的,VC下调试通过。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 49
void main()
{
long score[N][2];
time_t t;
int i,num;
long n=2313000l,temp;
srand((unsigned int)time(&t));
for(i=0;i<N;i++)
{
score[i][0]=n++;
score[i][1]=rand()%100;
}
for(num=N;num>1;num--)
{
for(i=0;i<num-1;i++)
{
if(score[i][1]>score[i+1][1])
{
temp=score[i][1];
score[i][1]=score[i+1][1];
score[i+1][1]=temp;
temp=score[i][0];
score[i][0]=score[i+1][0];
score[i+1][0]=temp;
}
}
}
printf(" studentID grade\n");
for(i=0;i<N;i++)
{
printf(" %d" , 0);
printf("%2ld\t%2ld ", score[i][0], score[i][1]);
if(!((i+1)%4))
printf("\n");
}
///////////////////////////以下是折半查找////////////////////////////////
printf("\nInput a Score you want(0~100):");
scanf("%d",&n);
if(n<0) n=0;
if(n>100) n=100;
int mid,high=N-1,low=0;
while(low<=high)
{
mid=(high+low)/2;
if(n==score[mid][1])
{
while(score[mid][1]==n) mid--;//向前遍历找到第一个出现位置;
mid++;
printf("studentID grade\n");
while(score[mid][1]==n)
{
printf("%2ld\t%2ld\n",score[mid][0],score[mid][1]);
mid++;
}
high=low-1;
}
else
{
if(n<score[mid][1]) high=mid-1;
else low=mid+1;
}
}
}