C语言 结构体专题

作业要求

定义(序号、学号、姓名、获得学分、高数、大体、近代史、软导、C程均分)数据类型,并输入相应数据,计算平均分并按照下列格式输出(注意间和对齐)。

学号 姓名 性别 数学 英语 c语言体育 近代史 计算机总分 平均分

... ...... ... ...... ... ... ...... ...


要求:

第一条.必须为自己的个人信息,第二条是你的学号后续同学的信息,如果你为序号最后的一名同学,则你的后续是1号同学。

作业内容

定义一个存储学生信息的结构体,定义一个结构体数组,对各成员及元素赋值,进行运算,排序。最后输出。

        1.各功能分别用函数实现.

<span style="font-size:18px;">	#include <stdio.h>
	#include <string.h>
	#define ST_NUM 5 //学生数
	typedef struct
	{
	    char num[10];    //学号
	    char name[9];   //姓名
	    char sex[3];        //性别
	    float match;     //数学
	    float english;
        float c_language;
	    float physical;
	    float modern_history;
	    float introduction_to_computer_science;
	    float sum;
	    float average;
	}student;
	 student ST[ST_NUM];
	void input()
	{

	    int i,j;
	    printf ("请输入%d个学生的信息:\n",ST_NUM);
	    for (i=0;i<ST_NUM;i++)
	    {
	        printf ("学号:");
	        scanf ("%s",ST[i].num);
	        printf("姓名:");
	        scanf ("%s",ST[i].name);
	        printf("性别:");
	        scanf("%s",ST[i].sex);
	        printf("科目数学的成绩:");
	         scanf("%f",&ST[i].match);
	        printf("科目英语的成绩:");
	         scanf("%f",&ST[i].english);
	        printf("科目c语言的成绩:");
	         scanf("%f",&ST[i].c_language);
	        printf("科目体育的成绩:");
	         scanf("%f",&ST[i].physical);
	        printf("科目近代史的成绩:");
	         scanf("%f",&ST[i].modern_history);
	        printf("科目计算机的成绩:");
	         scanf("%f",&ST[i].introduction_to_computer_science);

	    }
	}
	void output()
	{
	    int i,j;
	    printf("学号\t姓名\t性别\t");
	    printf("数学\t英语\tc语言\t体育\t近代史\t计算机\t总分\t平均分\n");



	for (i=0;i<ST_NUM;i++)
	{
	    printf("%s\t%s\t%s\t",ST[i].num,ST[i].name,ST[i].sex);
	    printf("%3.2f\t",ST[i].match);
	    printf("%3.2f\t",ST[i].english);
	    printf("%3.2f\t",ST[i].c_language);
	    printf("%3.2f\t",ST[i].physical);
	    printf("%3.2f\t",ST[i].modern_history);
	    printf("%3.2f\t",ST[i].introduction_to_computer_science);
	    printf("%3.2f\t%3.2f\n",ST[i].sum,ST[i].average);
	}
	}
	void  process()
	{
	    int i,j;
	    for(i=0;i<ST_NUM;i++)
	        {
	             ST[i].sum=ST[i].match+ST[i].english+ST[i].c_language+ST[i].physical+ST[i].modern_history+ST[i].introduction_to_computer_science;

	    ST[i].average=ST[i].sum/6;
	    }
	}
	void sort()
	 {
	     student tstu; int i,j;
	      for(i=0;i<ST_NUM;i++)
	        {
	             for(j=ST_NUM-1;j>i;j--)
	             {
	                  if(ST[j].sum>ST[j-1].sum)
	                   {
	                        tstu=ST[j]; 
ST[j]=ST[i]; 
ST[i]=tstu;
	                   }
	             }
	        }
	}
	int main()
	{
	    input();
	    process();
	    sort();
	    output();
	    return 0;
}</span>


2.只用一个主函数


#include <stdio.h>
#include <string.h>
#define ST_NUM 1//学生数
typedef struct
{
    char num[10];    //学号
    char name[9];   //姓名
    char sex[3];        //性别
    float match;     //数学
    float english;
    float c_language;
    float physical;
    float modern_history;
    float introduction_to_computer_science;
    float sum;
    float average;
}student;
 student ST[ST_NUM];

void main()
{


    int i,j;
    printf ("请输入%d个学生的信息:\n",ST_NUM);
    for (i=0;i<ST_NUM;i++)
    {
        printf ("学号:");
        scanf ("%s",ST[i].num);
        printf("姓名:");
        scanf ("%s",ST[i].name);
        printf("性别:");
        scanf("%s",ST[i].sex);
        printf("科目数学的成绩:");
         scanf("%f",&ST[i].match);
        printf("科目英语的成绩:");
         scanf("%f",&ST[i].english);
        printf("科目c语言的成绩:");
         scanf("%f",&ST[i].c_language);
        printf("科目体育的成绩:");
         scanf("%f",&ST[i].physical);
        printf("科目近代史的成绩:");
         scanf("%f",&ST[i].modern_history);
        printf("科目计算机的成绩:");
         scanf("%f",&ST[i].introduction_to_computer_science);

    }
        for(i=0;i<ST_NUM;i++)
    {
            ST[i].sum=ST[i].match+ST[i].english+ST[i].c_language+ST[i].physical+ST[i].modern_history+ST[i].introduction_to_computer_science;

    ST[i].average=ST[i].sum/6;
    }

       student tstu; 
      for(i=0;i<ST_NUM;i++)
        {
             for(j=ST_NUM-1;j>i;j--)
             {
                  if(ST[j].sum>ST[j-1].sum)
                  {
                        tstu=ST[j]; ST[j]=ST[i]; ST[i]=tstu;
                  }
             }
        }

    printf("学号\t姓名\t性别\t");
    printf("数学\t英语\tc语言\t体育\t近代史\t计算机\t总分\t平均分\n");
    for (i=0;i<ST_NUM;i++)
    {
        printf("%s\t%s\t%s\t",ST[i].num,ST[i].name,ST[i].sex);
        printf("%3.2f\t",ST[i].match);
        printf("%3.2f\t",ST[i].english);
        printf("%3.2f\t",ST[i].c_language);
        printf("%3.2f\t",ST[i].physical);
        printf("%3.2f\t",ST[i].modern_history);
        printf("%3.2f\t",ST[i].introduction_to_computer_science);
        printf("%3.2f\t%3.2f\n",ST[i].sum,ST[i].average);
    }




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值