哈尔滨理工大学

软件与微电子学院

实 验 报 告

(2018-2019第一学期)

课程名称:结构化程序设计(C)
班 级:软件18- 1 班
学 号:1814010130
姓 名:张立辉

哈尔滨理工大学软件与微电子学院


实验名称:结构体程序设计专 业软件工程
姓 名张立辉学 号1814010130班 级软件18-1

一、实验目的:

掌握结构体类型变量的定义和使用;
掌握结构体类型数组的定义和应用;

二、实验内容:

上机录入并调试例题:
教材P300 例9.3
教材P301 例9.4
教材P306 例9.7
教材P324 例9.12

三、实验设备及软件环境:

计算机,Windows系统,CodeBlocks;

四、实验过程及结果:

教材P300 例9.3

#include <stdio.h>
#include <stdlib.h>
struct Person
{
    char name[20];
    int count;
}
leader[3]={"Li",0,"Zhang",0,"Sun",0};

int main()
{
int i,j;
char leader_name[20];
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("\nResult:\n");
for(i=0;i<3;i++)
{
printf("%5s:%d\n",leader[i].name,leader[i].count);
}
return 0;
}

教材P301 例9.4

#include <stdio.h>
#include <stdlib.h>
struct Student
{
    int num;
    char name[20];
    float score;
};
int main()
{
    struct Student stu[5]={{10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86},{10108,"Ling",73.5},{10110,"Sun",100}};
    struct Student temp;
    const int n=5;
    int i,j,k;
    printf("The order is:\n");
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(stu[j].score>stu[k].score)
                k=j;
        temp=stu[k];stu[k]=stu[i];stu[i]=temp;
    }
    for(i=0;i<n;i++)
        printf("%6d%8s%6.2f\n",stu[i].num,stu[i].name,stu[i].score);
    printf("\n");
    return 0;
}

教材P306 例9.7

#include <stdio.h>
#define N 3
struct Student
{
    int num;
    char name[20];
    float score[3];
    float aver;
};
int main()
{
    void input(struct Student stu[]);
    struct Student max(struct Student stu[]);
    void print(struct Student stu);
    struct Student stu[N],*p=stu;
    input(p);
    print(max(p));
    return 0;
}
void input(struct Student stu[])
{
    int i;
    printf("请输入各学生的信息:学号、姓名、三门课成绩:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],stu[i].score[2]);
        stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
    }
}
struct Student max(struct Student stu[])
{
    int i,m=0;
    for(i=0;i<N;i++)
        if(stu[i].aver>stu[m].aver)m=i;
    return stu[m];
}
void print(struct Student stud)
{
    printf("\n成绩最高的学生是:\n");
    printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
}

教材P324 例9.12

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

int main()
{
    enum Color{red,yellow,blue,white,black};
    enum Color i,j,k,pri;
    int n,loop;
    n=0;
    for (i=red;i<=black;i++)
        for(j=red;j<=black;j++)
            if(i!=j)
    {
        for (k=red;k<=black;k++)
            if((k!=i)&&(k!=j))
        {
            n=n+1;
            printf("%-4d",n);
            for(loop=1;loop<=3;loop++)
            {
                switch(loop)
                {
                    case 1:pri=i;break;
                    case 2:pri=j;break;
                    case3:pri=k;break;
                    default:break;
                }
                switch(pri)
                {
                    case red:printf("%-10s","red");break;
                    case yellow:printf("%-10s","yellow");break;
                    case blue:printf("%-10s","blue");break;
                    case white:printf("%-10s","white");break;
                    case black:printf("%-10s","black");break;
                    default:break;
                }
            }
            printf("\n");
        }
    }
    printf("\ntotal:%5d\n",n);
    return 0;
}

代码均构建并运行成功并测试多次;

五、总结:

通过本次练习,对程序体结构设计有了初步认识,并掌握其使用方法和了解了其使用情况与条件

实验成绩: 指导教师:

最后修改:2021 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏