计算机二级C语言 编程题

程序设计学生的记录由学号和学生成家组成,M名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是;按分数的高低排列学生的记录,高分在前。charnum[... 程序设计
学生的记录由学号和学生成家组成,M名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是;按分数的高低排列学生的记录,高分在前。
char num[10];
int s;
} SCORE;
void fun(SCORE a[ ])
{
SCORE tmp;
int i,j;
for (i=0;i<M; i++)
for (j=0; j<M;j++)
if (a [i]. s<a[j]. s )
{ tmp =a [i];
a [i]=a [j];
a[j] =tmp;
}
是void。哪错了
展开
 我来答
meiguizhinian
2011-03-25 · TA获得超过214个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:128万
展开全部
排序算法变量写错了,把if语句中的j改成i就行了
void fun(SCORE a[ ])
{
SCORE tmp;
int i,j;
for (i=0;i<M; i++)
for (j=0; j<M;j++)
if (a [i]. s<a[i]. s )
{ tmp =a [i];
a [i]=a [j];
a[j] =tmp;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朵朵一路成长
2011-03-25 · TA获得超过594个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:247万
展开全部
struct
{
char num[10];
int s;
}SCORE;
void fun(SCORE a[ ])
{
SCORE tmp;
int i,j,k;
for (i=0;i<M-1; i++)
{
k=i;
for (j=i+1; j<M;j++)
if (a [i]. s<a[j]. s )
k=j;
tmp =a [k];
a [k]=a [i];
a[i] =tmp;

}
}

这个才是选择排序法。
要是用冒泡法(主要算法)的话应该是:
for (j=0;j<M; j++)
for (i=0;i<M-j;i++)
if (a [i]. s<a[j]. s )
tmp =a [i];
a [i]=a [j];
a[j] =tmp;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轻巧又素净的小乖乖p
2011-03-26
知道答主
回答量:11
采纳率:0%
帮助的人:4.5万
展开全部
#include "iostream"
#define M 5 //存放学生记录数
using namespace std;
struct student
{
char num[10]; //存放学生的学号
float maths; //存放学生的数学成绩
};
void fun(struct student stuA[]) //交换函数
{
int i,j;
struct student temp;
for(i = 0 ; i < M-1 ; i++)
{
for(j = i + 1 ; j < M ; j++)
{
if(stuA[i].maths < stuA[j].maths)
{
temp = *(stuA+i);
*(stuA+i) = *(stuA+j);
*(stuA+j) = temp;
}
}
}
}

void print(struct student stuA[]) //打印函数
{
int i;
cout << "学号 成绩" << endl;
for(i = 0 ; i < M ; i++)
{
cout << stuA[i].num << " " << stuA[i].maths << endl;
}
}

void main() //主函数
{
struct student stuArray[M];
for(int i = 0 ; i < M ; i++)
{
if(i == M)break;
cout << "请输入第" << i+1 << "记录:" << endl;
cout << "请输学号:";
cin >> stuArray[i].num;
cout << "请输成绩:";
cin >> stuArray[i].maths;
}
fun(stuArray);
print(stuArray);
}
嘿嘿,不知道是不是你想要的答案
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
洗净了的尘埃
2011-03-25 · TA获得超过209个赞
知道答主
回答量:176
采纳率:0%
帮助的人:133万
展开全部
for (j=0; j<M;j++)
改为for (j=i+1; j<M;j++)
这个用的是冒泡排序吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓟廷谦海雁
2019-01-22 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:1150万
展开全部
不会有影响的,他评分时会重新运行程序,根据结果来进行评分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式