基于visual Studio2013解决C语言竞赛题之0808打印链表

来源:互联网 发布:vmware 安装原版mac 编辑:程序博客网 时间:2024/05/21 09:03



题目


解决代码及点评

/*功能:设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将大于平均成绩的各个结点打印出来。 */#include<stdio.h>#include<stdlib.h>#define N 10//10名同学struct student//创建链表{int ID;int course;struct student *pNext;};typedef struct student STU;STU *init(int id, int cur)//设置头结点{STU *p = (STU *)malloc(sizeof(STU));if (p == NULL)return NULL;p->ID = id;p->course = cur;p->pNext = NULL;return p;}void insert(STU *pHead, int id, int cur)//插入结点{STU *pNode = (STU *)malloc(sizeof(STU));if (pNode == NULL)exit;pHead->pNext = pNode;pNode->ID = id;pNode->course = cur;pNode->pNext = NULL;}int count(STU *pHead);//求和void showAll(STU *pHead);double getAverage(STU *pHead,int n);void main(){STU *pHead = init(NULL,NULL);//头结点没有内容,next指向第一个学生int i = 1;//学号STU *p = pHead;//当前结点位置while (i <= N)//总共创建10个结点,每个结点代表一个学生{insert(p, i, rand() % 40 + 60);//插入一个学生信息i++;p = p->pNext;//当前指针后移}showAll(pHead);//输出链表信息,所有学生信息double ave = getAverage(pHead,N);//获得平均分数printf("\nAverage = %f\n",ave);STU *pa = pHead->pNext;while (pa != NULL){if (pa->course > ave)  // 打印分数大于平均分的学生科目信息{printf("ID: %d,\tachi = %d\n",pa->ID,pa->course);}pa = pa->pNext;}system("pause");}double getAverage(STU *pHead, int n)  // 计算平均分{return count(pHead)/(double)n;}void showAll(STU *pHead)  // 打印所有学生信息{STU *pa = pHead->pNext;while (pa != NULL)//输出链表信息{printf("%d:\t%d\n", pa->ID, pa->course);pa = pa->pNext;}}int count(STU *pHead)  // 计算成绩之和{STU *pa = pHead->pNext;int sum = 0;while (pa != NULL){sum += pa->course;pa = pa->pNext;}return sum;}


代码编译以及运行

由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:

1)新建工程

2)选择工程

3)创建完工程如下图:

4)增加文件,右键点击项目

5)在弹出菜单里做以下选择

6)添加文件

7)拷贝代码与运行


程序运行结果