
计算机二级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。哪错了 展开
学生的记录由学号和学生成家组成,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。哪错了 展开
7个回答
展开全部
排序算法变量写错了,把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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
{
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
嘿嘿,不知道是不是你想要的答案
#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);
}
嘿嘿,不知道是不是你想要的答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for (j=0; j<M;j++)
改为for (j=i+1; j<M;j++)
这个用的是冒泡排序吧。
改为for (j=i+1; j<M;j++)
这个用的是冒泡排序吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会有影响的,他评分时会重新运行程序,根据结果来进行评分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询