关于#c语言#的问题:随机产生30个学生的C语言成绩(成绩范围在[0,100]之间),统计并输出不及格(<60分)的人数,并按照从大到小的顺序将数组所有元素进行排序,分别显示排序前和排序后的结果

随机产生30个学生的C语言成绩(成绩范围在[0,100]之间),统计并输出不及格(<60分)的人数,并按照从大到小的顺序将数组所有元素进行排序,分别显示排序前和排序后的结果,每行输出10个。

回答如下,记得采纳!

img

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 30

int main() {
    int scores[N];
    int i, j, temp;
    int fail_count = 0;

    // 随机生成成绩
    srand((unsigned)time(NULL));
    for (i = 0; i < N; i++) {
        scores[i] = rand() % 101;
    }

    // 统计不及格的人数
    for (i = 0; i < N; i++) {
        if (scores[i] < 60) {
            fail_count++;
        }
    }
    printf("不及格的人数:%d\n", fail_count);

    // 排序并输出结果
    printf("排序前的结果:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", scores[i]);
        if ((i+1) % 10 == 0) printf("\n");
    }
    printf("\n");

    for (i = 0; i < N-1; i++) {
        for (j = 0; j < N-i-1; j++) {
            if (scores[j] < scores[j+1]) {
                temp = scores[j];
                scores[j] = scores[j+1];
                scores[j+1] = temp;
            }
        }
    }

    printf("排序后的结果:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", scores[i]);
        if ((i+1) % 10 == 0) printf("\n");
    }
    printf("\n");

    return 0;
}

#include "stdio.h"

#include stdlib.h

#include "time.h"

struct A{

int S_N,score;

};

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

A stu[10],t;

char i,j,k;

printf("随机输入情况...\n");

srand((unsigned)time(NULL));

for(i=0;i6;i++){

stu[i].S_N=rand();

for(j=0;ji;j++)

if(stu[i].S_N==stu[j].S_N){

i--;

break;

}

stu[i].score=rand()%51+50;

printf("%05d %4d  ",stu[i].S_N,stu[i].score);

}

printf("\n\n按学号由小到大排序...\n");

for(i=0;i6;i++){

for(k=i,j=k+1;j6;j++)

if(stu[k].S_Nstu[j].S_N)

k=j;

if(i!=k)

t=stu[k],stu[k]=stu[i],stu[i]=t;

printf("%05d %4d  ",stu[i].S_N,stu[i].score);

}

printf("\n\n按成绩由大到小排序...\n");

for(i=0;i6;i++){

for(k=i,j=k+1;j6;j++)

if(stu[k].scorestu[j].score)

k=j;

if(i!=k)

t=stu[k],stu[k]=stu[i],stu[i]=t;

printf("%05d %4d  ",stu[i].S_N,stu[i].score);

}

puts("\n");

return 0;

}

已测试可运行

#include <stdio.h>
#include <time.h>
#include <random>

int main() {
    int scores[30];
    int count = 0;

    srand(time(0));
    for (int i = 0; i < 30; i++) {
        scores[i] = rand() % (100+1);
        if (scores[i] < 60) {
            count++;
        }
    }

    printf("不及格人数为:%d\n", count);
    for (int i = 0; i < 30 - 1; i++) {
        for (int j = i + 1; j < 30; j++) {
            if (scores[i] < scores[j]) {
                int temp = scores[i];
                scores[i] = scores[j];
                scores[j] = temp;
            }
        }
    }

    printf("排序前:\n");
    for (int i = 0; i < 30; i++) {
        printf("%d ", scores[i]);
        if ((i + 1) % 10 == 0) {
            printf("\n");
        }
    }
    printf("\n");

    printf("排序后:\n");
    for (int i = 0; i < 30; i++) {
        printf("%d ", scores[i]);
        if ((i + 1) % 10 == 0) {
            printf("\n");
        }
    }
    printf("\n");

    return 0;
}