當前位置:首頁 » 編程語言 » 利用數組排序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));
}