计算机二级C语言 编程题

2025-01-02 22:47:38
推荐回答(5个)
回答1:

排序算法变量写错了,把if语句中的j改成i就行了
void fun(SCORE a[ ])
{
SCORE tmp;
int i,j;
for (i=0;i for (j=0; j if (a [i]. s { tmp =a [i];
a [i]=a [j];
a[j] =tmp;
}

回答2:

struct
{
char num[10];
int s;
}SCORE;
void fun(SCORE a[ ])
{
SCORE tmp;
int i,j,k;
for (i=0;i {
k=i;
for (j=i+1; j if (a [i]. s k=j;
tmp =a [k];
a [k]=a [i];
a[i] =tmp;

}
}

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

}

回答3:

#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);
}
嘿嘿,不知道是不是你想要的答案

回答4:

for (j=0; j改为for (j=i+1; j这个用的是冒泡排序吧。

回答5:

不会有影响的,他评分时会重新运行程序,根据结果来进行评分