实验 6

Part 1

ex 1_2补足程序:

#include <stdio.h>

const int N=5;
typedef struct student {
    long no;
    char name[20];
    int score;     
}STU;

void input(STU s[], int n);
int findMinlist(STU s[], STU t[], int n);
void output(STU s[], int n);

int main() {
    STU stu[N], minlist[N];
    int count;
    
    printf("录入%d个学生信息\n", N);
    input(stu, N);
    
    printf("\n统计最低分人数和学生信息...\n");
    count = findMinlist(stu, minlist, N);
    
    printf("\n一共有%d个最低分,信息如下:\n", count);
    output(minlist, count);
     
    return 0;
} 
void input(STU s[], int n) {
    int i;
    for(i=0; i<n; i++) 
        scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score);
} 
void output(STU s[], int n) {
    int i;
    for(i=0; i<n; i++)
        printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score); 
} 

int findMinlist(STU s[], STU t[], int n) {
    int i=0,j=0;
    int min=s[0].score;      
    for(i=0;i<n;i++)
    {
        if(s[i].score<min)
        {
            min=s[i].score;     
        }
    }
    for(i=0;i<n;i++)
    {
        if(min==s[i].score)
        {
            t[j++]=s[i];       
        }
    }
    return j;                  
}

ex1_3编程练习:

#include <stdio.h>
#include <string.h>
const int N = 10;

// ¶¨Òå½á¹¹ÌåÀàÐÍstruct student£¬²¢¶¨ÒåÆä±ðÃûΪSTU 
typedef struct student {
    long int id;
    char name[20];
    float objective;    /*¿Í¹ÛÌâµÃ·Ö*/
    float subjective;    /*²Ù×÷ÌâµÃ·Ö*/
    float sum;
    char level[10];    
}STU; 

// º¯ÊýÉùÃ÷
void input(STU s[], int n);
void output(STU s[], int n);
void process(STU s[], int n);

int main() {
    STU stu[N];
    
    printf("¼Èë%d¸ö¿¼ÉúÐÅÏ¢: ×¼¿¼Ö¤ºÅ£¬ÐÕÃû£¬¿Í¹ÛÌâµÃ·Ö(<=40)£¬²Ù×÷ÌâµÃ·Ö(<=60)\n", N); 
    input(stu, N);
    
    printf("\n¶Ô¿¼ÉúÐÅÏ¢½øÐд¦Àí: ¼ÆËã×Ü·Ö£¬È·¶¨µÈ¼¶\n");
    process(stu, N);
    
    printf("\n´òÓ¡¿¼ÉúÍêÕûÐÅÏ¢: ×¼¿¼Ö¤ºÅ£¬ÐÕÃû£¬¿Í¹ÛÌâµÃ·Ö£¬²Ù×÷ÌâµÃ·Ö£¬×Ü·Ö£¬µÈ¼¶\n");
    output(stu, N); 
    
    return 0;
} 

// ¼È뿼ÉúÐÅÏ¢:×¼¿¼Ö¤ºÅ£¬ÐÕÃû£¬¿Í¹ÛÌâµÃ·Ö£¬²Ù×÷ÌâµÃ·Ö
void input(STU s[], int n) {
 int i;
    for(i=0;i<n;i++)
    {
        scanf("%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective);
    }
}

//Êä³ö¿¼ÉúÍêÕûÐÅÏ¢: ×¼¿¼Ö¤ºÅ£¬ÐÕÃû£¬¿Í¹ÛÌâµÃ·Ö£¬²Ù×÷ÌâµÃ·Ö£¬×Ü·Ö£¬µÈ¼¶
void output(STU s[], int n) {
    int i;
    for(i=0;i<n;i++)
    {
        printf("%ld %s %f %f %f %s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
    }
}

// ¶Ô¿¼ÉúÐÅÏ¢½øÐд¦Àí£º¼ÆËã×Ü·Ö£¬ÅÅÐò£¬È·¶¨µÈ¼¶
void process(STU s[], int n) {
int i,j,k;
STU temp;
for(i=0;i<n;i++)
s[i].sum=s[i].objective+s[i].subjective;
for(j=0;j<n-1;j++)
{
 for(k=0;k<n-j-1;k++)
  {
   if(s[k].sum<s[k+1].sum)
   {
    temp=s[k];
    s[k]=s[k+1];
    s[k+1]=temp;
   }
  }
} 
 i=0;
 for(i=0;i<n;i++)
 {
  if(i==0)
  strcpy(s[i].level,"ÓÅÐã");
  else if(i>=1&&i<=4)
  strcpy(s[i].level,"ºÏ¸ñ");
  else if(i>=5&&i<=9)
  strcpy(s[i].level,"²»ºÏ¸ñ");
 }
}

 

 

Part 2

结构体中每个数据有独立的内存地址,而共用体共享一个内存地址;并且在同一时刻,结构体所有元素同时存在,而共用体只能有一个元素存在

 

Part 3

枚举类型可以用于描述char,int,float,double类型数据

枚举类型不可以直接输入输出

枚举类型可以隐含转换为整型,但整型转换为枚举类型,必须显式转换

实验总结:

由于不同编译器对语法的要求严格程度不同,输入输出碰到问题

posted on 2019-06-10 19:40  weirdo12138  阅读(155)  评论(1编辑  收藏  举报

导航