给n个学生成绩排序
① 学生成绩排序
冒泡法,FOR循环
② 输入n个学生的基本信息,然后对学生信息按成绩高低进行排序,将结果输出
GetStuInfo函数里的STUDENT *p是临时变量,函数返回后,p就无效了,你应该把pstu[i]传到函数内部去
③ 编写一个函数,要求对n个学生的成绩进行排序,要求用数组名作函数参数。
public int[] to_sort(int[] score)
{
if (score.Length >= 1)
{
for (int i = 0; i < score.Length - 1; i++)//排序开始
{
int flag = score[0];
for (int j = i; j < score.Length-1; j++)
{
if (score[i] < score[j+1])
{
flag = score[i];
score[i] = score[j+1];
score[j+1] = flag;
}
}
}
}
return score;
}
④ 请大师编写一c语言程序: 输入n个学生成绩,然后用插入法排序。
#include <stdio.h>
#include <stdlib.h>
//直接插入排序
void InsertSort(int arr[], int n)
{
int iter = 0;
int pointer = 0;
int temp = 0;
for(iter = 1; iter < n; iter++)
{
pointer = iter - 1;
temp = arr[iter];
while(pointer >= 0 && temp < arr[pointer])
{
arr[pointer + 1] = arr[pointer];
pointer--;
}
arr[pointer + 1] = temp;
}
}
int main(void)
{
int *Arr;
int cnt = 0;
printf("Input n :");
scanf("%d", &cnt);
Arr = (int *)malloc(sizeof(int) * cnt);
printf("Students' score: ");
int i = 0;
for(i = 0; i < cnt; i++)
{
scanf("%d", &Arr[i]);
}
InsertSort(Arr, cnt);
//ShellSort(Arr, cnt); //希尔排序
//int i;
printf("After sorting :");
for(i = 0; i < cnt; i++)
{
printf("%-4d", Arr[i]);
}
printf(" ");
return 0;
}
⑤ 学生成绩排序 老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。 帮忙看一下程序
你想问什么?是程序版出问题了吗?
#include "stdio.h"
#include "string.h"
struct student
{ char name[20];
int score;
}stu[100];
main()
{ struct student *pt,*p[100];
int n,i,j;
scanf("%d",&n);
for (i=0;i<n;i++)
{ scanf("%[^,],%d", stu[i].name,&stu[i].score);
p[i]=&stu[i];}
for (i=0;i<n-1;i++)
{
权for (j=i;j<n;j++)
if (p[i]->score<p[j]->score)
{ pt=p[i];
p[i]=p[j];
p[j]=pt; }
}
for (i=0;i<n;i++)
printf("%s,%d\n",p[i]->name,p[i]->score);
getch();
}
⑥ 帮忙编程序,急用。“给出n个学生的考试成绩表,每条信息由学号、姓名与分数组成。按学号排序。”可用文件
#include<stdio.h>
#define N 30
#define S 3
int main()
{float ave[N];
int n,i,j,k,m;
int sum[N]={0};
int num[N],s[N][S];
printf("请输入参加考试的学生总数:n=");
scanf("%d",&n);
printf("请输入学生学号及MA、EN、PH成绩:\n");
for(i=0;i<n;i++)
{scanf("%d",&num[i]);
for(j=0;j<S;j++)
{scanf("%d",&s[i][j]);
sum[i]+=s[i][j];}
ave[i]=(float)sum[i]/(float)S;
}
printf("Before Sort!\nNO.\tMA\tEN\tPH\tSUM\tAVE\n");
printf("=====================================================\n");
for(i=0;i<n;i++)
{printf("%d\t",num[i]);
for(j=0;j<S;j++)
{printf("%d\t",s[i][j]);}
printf("%d\t%5.2f",sum[i],ave[i]);
printf("\n");}
printf("=====================================================\n");
return 0;}
⑦ 老师要对 n 个学生进行成绩汇总和排序。C语言程序求改错。
scanf("%s,%d",&stu[i].name,&stu[i].score);
这句话出问题了,来输入stu[i].name时,按字符串输自入,所以当输入“a,1”时,"a,1"被整体当做stu[i].name了,因而stu[i].score并未被初始化,所以输出时stu[i].score的值为无效值。
可将scanf("%s,%d",&stu[i].name,&stu[i].score); 改成
scanf("%s %d",&stu[i].name,&stu[i].score);
即将逗号改成空格,因为空格输入空白符,可用作分隔符,而逗号无此效果
⑧ 用数组方式输入 N 个学生的成绩,求总分和平均分进行从高到低的排序
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cout << "输入学生来个数:自";
cin >> n;
int a[10000];
cout << "输入每个学生成绩:";
for (int i = 0; i < n; i++) cin >> a[i];
sort(a, a+n);
double sum = 0;
for (int i = 0; i < n; i++) sum += a[i];
cout << "平均成绩为:" << sum / n << endl;
cout << "成绩从高到低为:" << endl;
for (int i = n-1; i >= 0; i--) cout << a[i] << " ";
cout << endl;
}
⑨ 给若干学生成绩排序
#include <stdio.h>
typedef struct stu
{
int num;
int score;
int order;
}stu;
void main()
{
int n;
int i, j;
stu s[1000];
stu temp;
printf("输入人数n:\n");
scanf("%d",&n);
for (i = 0; i < n; i++)
scanf("%d%d",&s[i].num,&s[i].score);
for (i = 0; i < n-1; i++)
{
for (j = i+1; j < n; j++)
{
if (s[i].score < s[j].score)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
s[0].order = 1;
for (i = 1; i < n; i ++)
{
if (s[i].score == s[i-1].score )
s[i].order = s[i-1].order ;
else
s[i].order = s[i-1].order + 1;
}
printf("输入序号和成绩\n");
for (i = 0; i < n; i ++)
printf("%d\t%d\t%d\n",s[i].num ,s[i].score ,s[i].order );
}
⑩ 用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之
//这里抄sco前要&
if(sco!=s[i])printf("no this score!\n");//这里应该循环袭查找sco!=s[i]
else chang(s,50);//这里的50超过n了
for(i=0;i<50;i++)//这里的循环50超过n了
{
if(s[i]>sco)n++;//这里为什么n++
printf("%d",n);
}
还有,按照题目的要求,排序用快速排序好一些,查找用二分
另外,团IDC网上有许多产品团购,便宜有口碑