当前位置:首页 » 编程语言 » 利用数组排序c语言成绩代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

利用数组排序c语言成绩代码

发布时间: 2022-05-18 06:50:47

㈠ 成绩排序c语言数组

#include <stdio.h>
int main()
{ int n,i,j,t,a[1000];
scanf("%d",&n); //有n个学生
for(i=0; i<n; i++)
scanf("%d",&a[i]);
for(i=0; i<n-1; i++) //共进行n-1轮
{ for(j=0; j<n-1-i; j++) //j的范围:0~n-1-i
if(a[j]<a[j+1]) //比较相邻两数:a[j]、a[j+1],如不对就交换
{ t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0; i<n; i++)printf("%4d",a[i]);
printf("\n");
return 0;
}

㈡ C语言,输入学生成绩并按升序排列(用数组和循环)

#include<stdio.h>
#defineN5
voidmain(){inti,j,a[N],k;
for(i=0;i<N;i++)scanf("%d",&a[i]);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j]){k=a[i];a[i]=a[j];a[j]=k;}
printf("学员成绩按升序排列:");
for(i=0;i<N;i++)printf("%d",a[i]);printf(" ");
}

㈢ c语言成绩排序,做完微信红包

#include"stdio.h"
#include<stdlib.h>
#include<string.h>
#include"time.h"
structabcd{
charID[11],name[17];
ints1,s2,s3,s4,s5;
doubleave;
structabcd*next;
};
voidinp(structabcd(*p)[45]){
inti,j,k,t;
charid[11]="0000000000";
for(i=0;i<4;i++){
for(j=0;j<45;j++){
if(++id[9]>'9')
for(k=9;k>0;k--)
id[k]-=10,id[k-1]++;
strcpy(p[i][j].ID,id);
for(t=0,k=rand()%16;k;k--)
p[i][j].name[t++]=rand()%26+'A';
p[i][j].name[t]='';
p[i][j].s1=rand()%101;
p[i][j].s2=rand()%101;
p[i][j].s3=rand()%101;
p[i][j].s4=rand()%101;
p[i][j].s5=rand()%101;
}
}
}
voidaverage(structabcd(*p)[45]){
inti,j;
for(i=0;i<4;i++)
for(j=0;j<45;p[i][j].ave=(p[i][j++].s1+p[i][j].s2+p[i][j].s3+p[i][j].s4+p[i][j].s5)/5.0);
}
voidselsort(structabcd(*p)[45]){//4个班统一选择排序
inti,j,k,t;
structabcdq;
for(t=0;t<4;t++)
for(i=0;i<45;i++){
for(k=i,j=k+1;j<45;j++)
if(p[t][k].ave<p[t][j].ave)
k=j;
if(k!=i)
q=p[t][k],p[t][k]=p[t][i],p[t][i]=q;
}
}
voidbubsort(structabcd(*p)[45]){//4个班统一冒泡排序
inti,j,t;
structabcdq;
for(t=0;t<4;t++)
for(i=0;i<45;i++)
for(j=0;j<44;j++)
if(p[t][j].ave<p[t][j+1].ave)
q=p[t][j],p[t][j]=p[t][j+1],p[t][j+1]=q;
}
voidgetlink(structabcd(*p)[45],structabcd*x){//弄成链表
inti,j,k,t;
structabcdq;
for(t=i=0;i<4;i++)//把4个班的成绩拷贝到临时数组x中
for(j=0;j<45;x[t++]=p[i][j++]);
for(i=0;i<t;i++){//对数组x降序排序
for(k=i,j=k+1;j<t;j++)
if(x[k].ave<x[j].ave)
k=j;
if(k!=i)
q=x[k],x[k]=x[i],x[i]=q;
}
for(i=1;i<t;x[i-1].next=x+i++);//把数组p搞成单链表
x[i-1].next=NULL;
}
intmain(intargc,char*argv[]){
structabcdc[4][45],t[4*45],*p;
intk;
srand((unsigned)time(NULL));
inp(c);
average(c);
bubsort(c);
selsort(c);//这是脱了裤子FP,无论用什么方法排序结果是一样的,不懂为何这么出题
getlink(c,t);
printf("----------Lookat...---------- ");
for(k=0,p=t;p;p=p->next)//将链表中的值输出
printf(++k%15?"%5.1f":"%5.1f ",p->ave);
if(k%10)
printf(" ");
return0;
}

运行样例:

这种题打字太多……

㈣ 用C语言编程:从键盘输入10个学生的成绩,由高到低排序输出成绩

你好,我们这里需要用到数组镶套使用for函数以及冒泡算法,具体的代码如下。

#include <iostream>

using namespace std;

int main()

{

int s [10], i, j, t;

cout << "输入10个数:";

for (i = 0; i < 10; i++)

{

cout << "请输入第" << i+1 << "名学生的成绩;" << endl;

cin >> s[i];

}

for (i = 0; i<10; i++)

{

for (j = 0; j<9 - i; j++)

if (s[j]<s[j + 1])

{

t = s[j + 1];

s[j + 1] = s[j];

s[j] = t;

}

}

cout << "成绩由高到低为;";

for (i = 0; i<10; i++)

cout << s[i]<<" " ;

}

以下为效果图

㈤ 共3门学科,要求用C语言编程,输入全班成绩,并把它们的平均分进行排序,如何做到

#include<stdio.h>
#include<string.h>
#include<malloc.h>
#definestuNum3//假设全班学生3人太多我懒得输,反正测试,你想改多少自己改
#definenameLen11//学科名称的最大字符数我预设最多5个中文字不满意自己改

typedefstructxueke
{
charxkName[nameLen];//学科名称
floatxkp;//学科平均分
}XK;
intmain()
{
inty[stuNum],s[stuNum],w[stuNum],i,j;//定义语文数学外语三学科
intnumsave,sum[]={0,0,0};//记录三科成绩和
char*nameSave=(char*)malloc(sizeof(char)*nameLen);
XKxk[3];//记录三科名称及平均分
//录入成绩
printf("录入%d名学生的语文成绩: ",stuNum);
for(i=0;i<stuNum;i++)
{
scanf("%d",&y[i]);
sum[0]=sum[0]+y[i];
}
printf("录入%d名学生的数学成绩: ",stuNum);
for(i=0;i<stuNum;i++)
{
scanf("%d",&s[i]);
sum[1]=sum[1]+s[i];
}
printf("录入%d名学生的外语成绩: ",stuNum);
for(i=0;i<stuNum;i++)
{
scanf("%d",&w[i]);
sum[2]=sum[2]+w[i];
}

strcpy(xk[0].xkName,"语文");
xk[0].xkp=(float)sum[0]/stuNum;
strcpy(xk[1].xkName,"数学");
xk[1].xkp=(float)sum[1]/stuNum;
strcpy(xk[2].xkName,"外语");
xk[2].xkp=(float)sum[2]/stuNum;

for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
if(xk[i].xkp<xk[j].xkp)//降序排列
{
numsave=xk[i].xkp;
memset(nameSave,0,nameLen);
strcpy(nameSave,xk[i].xkName);

xk[i].xkp=xk[j].xkp;
memset(xk[i].xkName,0,nameLen);
strcpy(xk[i].xkName,xk[j].xkName);

xk[j].xkp=numsave;
memset(xk[j].xkName,0,nameLen);
strcpy(xk[j].xkName,nameSave);
}
}

}


//打印
printf("降序排列 ");
for(i=0;i<3;i++)
{
printf("学科:%s平均分:%.1f ",xk[i].xkName,xk[i].xkp);
}
}

㈥ C语言利用数组实现输入N名学生成绩,有小到大进行排序,并计算平均分

这应该能满足要求了:
#include <stdio.h>
void Sort(float* arr, int len) {
double temp;
int i , j;
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
float AvgGrade(float* arr,int len) {
int i = 0;
double result = 0;
for (; i < len; i++) {
result += arr[i];
}
return result;
}
int main() {
float arr[100], temp = 0;
int n, i;
n = 0;
printf("输入学生的成绩,可以连续输入,直到输入一个小于0的数:\n");
scanf("%f", &temp);
while (temp >= 0) {
arr[n++] = temp;
scanf("%f", &temp);
}
printf("平均分为%f\n", AvgGrade(arr, n));
printf("排序后的分数为:\n");
Sort(arr, n);
for (i = 0; i < n; i++) {
printf("%f\t",arr[i]);
if ((i + 1) % 5 == 0)
printf("\n");
}
return 0;
}

㈦ C语言运用数组 有5名同学的成绩,要求对它们按由大到小的顺序排列。

#include<stdio.h>
intmain(){
intscore[5];
inti,j;
printf("输入5名同学的成绩");
for(i=0;i<5;i++)
scanf("%d",score+i);
for(i=1;i<5;i++)
{
intt=score[i];
for(j=i-1;j>=0;j--)
{
if(t<score[j])
{
score[j+1]=score[j];
}
else
break;
}
score[j+1]=t;
}
printf("5名同学的成绩排列后是:");
for(i=0;i<5;i++)
printf("%d",score[i]);
printf(" ");
}

㈧ c语言用指针一维数组输入10个成绩,在10个成绩中选出不及格的成绩。 要求10个成绩排列成5个一行

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

int a[10],i,k;

printf("Enter the 10 grades... ");

for(k=i=0;i<10;i++){

scanf("%d",a+i);

printf(++k%5 ? "%4d" : "%4d ",a[i]);

}

printf(" Don't pass the exam is as follows: ");

for(k=i=0;i<10;i++)

if(a[i]<60)

printf(++k%5 ? "%4d" : "%4d ",a[i]);

if(k%5)

putchar(' ');

return 0;

}

㈨ C语言:利用数组实现学生成绩的管理

/* 学生成绩统计 */
# include <stdio.h>
# define M 5
# define N 10

float score[N][M];
float a_stu[N], a_cor[M];

/* 声明子函数 */
void input_stu();
void avr_stu();
void avr_cor();
float highest(int *r, int *c);
float s_diff();

void main() /* 主函数 */
{
int i, j, r, c;
float h;

r = 0;
c = 1;

input_stu(); /* 调用函数input_stu,输入学生各门功课的成绩 */
avr_stu(); /* 调用函数avr_stu,求出每个学生的平均分 */
avr_cor(); /* 调用函数avr_cor,找出学生成绩中的最高分*/

printf("\n 序号 课程1 课程2 课程3 课程4 课程5 平均分");
for(i=0; i<N; i++)
{
printf("\n NO%2d", i+1);
for(j=0; j<M; j++)
printf("%8.2f", score[i][j]);
printf("%8.2f", a_stu[i]);
}

printf("\n课平均");
for(j=0; j<M; j++)
printf("%8.2f", a_cor[j]);

h = highest(&r, &c);
printf("\n\n最高分%8.2f是 %d号学生的第%d门课\n", h, r, c);
printf(" 方差 %8.2f\n", s_diff());
}

void input_stu() /* 输入学生的成绩 */
{
int i, j;

for(i=0; i<N; i++)
{
printf("请输入学生%2d的5个成绩:\n", i+1);
for(j=0; j<M; j++)
scanf("%f", &score[i][j]);
}
}

void avr_stu() /* 计算学生的平均分 */
{
int i, j;
float s;

for(i=0; i<N; i++)
{
s = 0;
for(j=0; j<M; j++)
s = s + score[i][j];
a_stu[i] = s/M;
}
}

void avr_cor() /* 计算课程的平均分 */
{
int i, j;
float s;

for(j=0; j<M ;j++)
{
s = 0;
for(i=0; i<N; i++)
s = s + score[i][j];
a_cor[j] = s/(float)N;
}
}

float highest(int *r, int *c) /* 找最高分 */
{
float high;
int i, j;

high = score[0][0];
for(i=0; i<N; i++)
for(j=0; j<M; j++)
if(score[i][j]>high)
{
high = score[i][j];
*r = i + 1;
*c = j + 1;
}
return high;
}

float s_diff() /* 求方差 */
{
int i;
float sumx, sumxn;

sumx = 0.0;
sumxn = 0.0;

for(i=0; i<N; i++)
{
sumx = sumx + a_stu[i]*a_stu[i];
sumxn = sumxn + a_stu[i];
}
return (sumx/N-(sumxn/N)*(sumxn/N));
}