这种问题怎么解决
程序进行到一半出现Unhandled exception in 001.exe:0xC0000005:Access Violation.
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct student)//student结构大小
#define STU sizeof(struct teacher)//teacher结构大小
struct student *stu();//创建链表
float average_number(int *p);//求平均数
struct student
{
float score;
struct student *next;
};
struct teacher
{
float average;
struct teacher *next;
};
int n,m;// n为有多少老师打分,m为有多少学生参加考试
struct student *stu()//构建链表
{
struct student *head = NULL;
struct student *p1,*p2;
float score;
n = 1;
do
{
printf("\n第%d位老师的分数:",n);
scanf("%f",&score);
if(score != 0) //输入0时结束输入
{
p1 = (struct student *)malloc(LEN);
p1->score = score;
p1->next = NULL;
if(head == NULL)
{
head = p1;
p2 = p1;
}
else
{
p2->next = p1;
p2 = p1;
}
n++;
}
else
{
break;
}
}while(1);
return head;
}
float average_number(struct student *head)
{
struct student *p1,*p2,*number;
int i;
float t,sum,average;
p1 = number = head;
p2 = head->next;
for(i = 1;i < (n-1);i++)
{
while(p1->next != NULL)
{
if(p1->score < p2->score)
{
t = p1->score;
p1->score = p2->score;
p2->score = t;
p1 = p2;
p2 = p2->next;
}
else
{
p2 = p1;
p2 = p2->next;
}
}
}
sum = 0;
for(i = 1;i <= (n-3);i++)
{
number = number->next;
sum = sum + number->score;
number = number->next;
}
average = sum/(n-3);
return average;
}
void main()
{
struct teacher *p1,*p2,*head = NULL;
int i;
float t,number;
do
{
m = 1;
printf("第%d位同学的得分:",m);
stu();
p1 = (struct teacher *)malloc(STU);
number = average_number(head);
p1->average = number;
p1->next = NULL;
if(head == NULL)
{
head = p1;
p2 = p1;
}
else
{
p2->next = p1;
p2 = p1;
}
m++;
}while(getchar() != '!');
p1 = head;
p2 = head->next;
for(i = 1;i < (m-1);i++)
{
while(p1->next != NULL)
{
if(p1->average < p2->average)
{
t = p1->average;
p1->average = p2->average;
p2->average = t;
p2 = p1;
p2 = p2->next;
}
else
{
p2 = p1;
p2 = p2->next;
}
}
}
p1 = head;
for(i = 1;i < (m-1);i++)
{
printf("%s",p1->average);
p1 = p1->next;
}
}
说清楚什么问题.还有超过40行代码最好加注释 老铁,debug一下,如果不知道怎么debug 找个入门视频看看。 题目是:
编写一个对n个数据从大到小的排序C函数,再编写一个计算最后得分的C函数,计算方法是:去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。并在主函数中调用它们对有n个评委评分,m个选手参赛的最后得分,从大到小排序输出。
dehug了就是调试时出现的那一串字符 新人 最重要的 不是代码 问题
是解决 问题的 思路、方法
要解决 问题,首先要的是 解决问题的逻辑和方法
很多新人都误以为是 编程 语法 问题
其实 不管 哪种 编程语言,最终解决 问题的 还是在于人的思维
在 真正 开始编程 前 就要在脑海中有一个完整的 解决问题的逻辑,解决这个问题需要几个步骤,这几个步骤可以细分为几个部分,可以分为几个函数,函数参数是啥,最好是形成 伪代码
真正的大神不是编程 高手,是解决问题的高手
就算面对一种 全新的,没见过的 语言,看过基本语法,即可编程实现功能
编程语言,只是一个工具罢了
页:
[1]