C语言(结构体变量)随机产生姓名(中文)和随机产生数字


析全班同学多门功课成绩1.用随机函数生成同学的名字和多门功课的成绩,
比如学生数n=30,课程数m=5,即数学、物理、C语言、地质学、导论,要求成绩在50至100分之间(闭区间);
2.统计优秀同学数,不及格同学数,平均成绩最好、最差的同学;3.按照平均成绩由高到低排序并输出。

/*分析全班同学多门功课成绩1.用随机函数生成同学的名字和多门功课的成绩,
比如学生数n=30,课程数m=5,即数学、物理、C语言、地质学、导论,要求成绩在50至100分之间(闭区间);
2.统计优秀同学数,不及格同学数,平均成绩最好、最差的同学;3.按照平均成绩由高到低排序并输出。 */
#include<stdio.h>//随机数:rand() % (b-a+1)+ a,指a到b之间的 
#include<stdlib.h>
#include<time.h>
#define n 30
struct student
{
    char name[n][6];//姓名,三个字组成,一个汉字2个字节 
    float score1;//数学 
    float score2;//物理 
    float score3;//C语言 
    float score4;//地质学 
    float score5;//导论 
    float aver;//平均分 
}stu[n];
int main ()
{
    int i,j,jq1,jq2,k,p,q,min;
    char xm1[]="啊",xm2[]="住";
    char arr[20];
    float temp;
    int yx=0,bj=0;//代表优秀和不及格的学生个数 
    jq1=(unsigned char)xm1[0];
    jq2=(unsigned char)xm2[0];
    srand((unsigned)time(NULL));
        for(i=0;i<n;i++)
    {
        for(j=0;j<6;j++)
        {
            stu[i].name[i][j]=(float)(jq2-jq1)/RAND_MAX*rand()+jq1;
        }
    } 
    for(i=0;i<n;i++)
    {
        stu[i].score1=rand() % (100-50+1)+50; //取50到100的随机数 
        stu[i].score2=rand() % (100-50+1)+50;
        stu[i].score3=rand() % (100-50+1)+50;
        stu[i].score4=rand() % (100-50+1)+50;
        stu[i].score5=rand() % (100-50+1)+50;
        stu[i].aver=(stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4+stu[i].score5)/5.0; 
    }
    printf("所有学生的信息为:\n");
    printf("姓名:  数学成绩:  物理成绩:  C语言成绩:地质学: 导论成绩:  平均成绩:\n");
    for(i=0;i<n;i++)
    {
        printf("%s  %f  %f  %f  %f  %f  %f  \n",stu[i].name[i],stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,stu[i].aver);
    }
    printf("\n");
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if((stu[j].aver)>(stu[k].aver))
            k=j;
        }
    }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if((stu[j].aver)<(stu[min].aver))
            min=j;
        }
    }
    for(i=0;i<n;i++)
    {
        if(stu[i].aver>60)//设大于60分为优秀 
        yx++; //优秀学生数目 
        else
        bj++;//不及格学生数目 
    }
    printf("优秀的的学生人数(平均分60分以上)为:%d  不及格的学生人数为:%d\n",yx,bj);
    printf("------------------------------------------------\n");
    printf("平均成绩最高的学生信息为:\n");
    printf("姓名:  数学成绩:  物理成绩:  C语言成绩:地质学: 导论成绩:  平均成绩:\n");
    printf("%s       %f  %f  %f  %f  %f  %f\n",stu[k].name[k],stu[k].score1,stu[k].score2,stu[k].score3,stu[k].score4,stu[k].score5,stu[k].aver); 
    printf("------------------------------------------------\n"); 
    printf("平均成绩最差的成绩信息为:\n");
    printf("姓名:  数学成绩:  物理成绩:  C语言成绩:地质学: 导论成绩:  平均成绩:\n");
    printf("%s        %f  %f  %f  %f  %f  %f\n",stu[min].name[min],stu[min].score1,stu[min].score2,stu[min].score3,stu[min].score4,stu[min].score5,stu[min].aver);
    printf("\n");
    printf("对所有学生的平均成绩排序(由大到小排列)为:\n");
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if((stu[j].aver)<(stu[j+1].aver))//从大到小排列
            {
                temp=stu[j].aver;
                stu[j].aver=stu[j+1].aver;
                stu[j+1].aver=temp;
             } 
        }
     } 
     for(i=0;i<n;i++)
     {
         printf("%f\n",stu[i].aver);
     }
}

猜你喜欢

转载自blog.csdn.net/m0_56168966/article/details/121390139