寻c语言高手
本人有一个学生管理系统的程序,在win-tc上能运行但还是有两个警告警告 noname.c 170: 不能到达的代码在 paixu 函数中
警告 noname.c 97: 两者都返回和返回的值使用在 count 函数中
想了n天都想不出为什么,还望哪位大侠帮帮忙。。。本人急用啊....
在此先行谢过了
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
int cunt;
typedef struct node
{
int num; /*学号*/
char name[10]; /*姓名*/
int chinese; /*语文成绩*/
int math;
int english;
int total;
float ave; /*平均分*/
int mingci; /*名次*/
struct node*next;
}node;
menu()
{
system("cls");
textcolor(10);
gotoxy(10,2);
cprintf(" 学生管理系统 \n");
gotoxy(10,3);
cprintf("#####################################################\n");
gotoxy(10,4);
cprintf("# 1输入学生信息 2统计学生人数 #\n");
gotoxy(10,5);
cprintf("# 3列出学生信息 4查找学生信息 #\n");
gotoxy(10,6);
cprintf("# 5学生成绩排名 6按条件输出 #\n");
gotoxy(10,7);
cprintf("# 7删除学生 0结束退出 #\n");
gotoxy(10,8);
cprintf("#####################################################\n");
}
void plus(node* p)
{
node *r,*s;
r=p;
while(r->next!=NULL)r=r->next;
while(1)
{s=(node*)malloc(sizeof(node));
printf("输入学生学号(输入0返回菜单):");
scanf("%d",&s->num);
if(s->num==0) break;
printf("输入学生姓名:");
scanf("%s",s->name);
printf("输入学生语文成绩:");
scanf("%d",&s->chinese);
printf("输入学生数学成绩:");
scanf("%d",&s->math);
printf("输入学生英语成绩:");
scanf("%d",&s->english);
s->total=s->chinese+s->math+s->english;
s->ave=s->total/3;
s->next=NULL;
r->next=s;
r=r->next;
}
}
int count(node* p)
{
node *r;
float i=0,j=0,k=0,m;
cunt=0;
r=p;
if(r->next==NULL)
{ system("cls");
printf("\n=====>没有学生计入!\n");
return;
}
while(r->next!=NULL)
{
cunt=cunt+1;
r=r->next;
}
for(m=0;m<cunt;m++,p=p->next)
{
i=i+p->next->chinese;
j=j+p->next->math;
k=k+p->next->english;
}
printf("班级语文平均成绩:%.2f\n",i/cunt);
printf("班级数学平均成绩:%.2f\n",j/cunt);
printf("班级英语平均成绩:%.2f\n",k/cunt);
printf("学生有%d人\n",cunt);
return(cunt);}
void dip(node* p)
{
node *z;
z=p;
if(p->next!=NULL)
{
printf("-------------------------------学生成绩--------------------------\n");
printf("| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 | 平均分 |\n");
while(z->next)
{
printf("|---------------------------------------------------------------|\n");
printf("|%8s|%8d|%8d|%8d|%8d|%8d| %.2f |\n",z->next->name,z->next->num,z->next->chinese,z->next->math,z->next->english,z->next->total,z->next->ave);
z=z->next;
}
printf("|---------------------------------------------------------------|\n");
}
else
printf("无学生记录");
}
void search(node* p)
{
node*s;
int a;
s=p;
printf("输入你想要查找的学生的学号\n");
scanf("%d",&a);
do {
s=s->next;
if(a!=s->num)printf("无此学号\n");
else{
printf("-------------------------------学生成绩-------------------------\n");
printf("| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 | 平均分 |\n");
printf("|---------------------------------------------------------------|\n");
printf("|%8s|%8d|%8d|%8d|%8d|%8d| %.2f |\n",s->name,s->num,s->chinese,s->math,s->english,s->total,s->ave);
printf("|---------------------------------------------------------------|\n");
break;
}
}while(s->next!=NULL);
}
node * paixu(node*p)
{
node*k,*z,*q,*h,*m;
int min,i;
count(p);
clrscr();
h=(node*)malloc(sizeof(node));
k=h;
for(i=0;i<cunt;i++)
{
int min=p->next->total;
z=p;
m=p;
q=z->next;
while(z->next!=NULL)
{
z=z->next;
if(min>z->total)
{
min=z->total;
q=z;
}
}
h->next=q;
h=h->next;
while(m->next!=q)
m=m->next;
m->next=m->next->next;
}dip(k);return(k);printf("%d",cunt);
}
node* output(node*p)
{
int i,j,k,l,flag=0;
node*s,*z,*h,*t;
count(p);
clrscr();
s=p->next;
printf("您想查找1语文 2数学 3英语 4总分 的学生成绩");
scanf("%d",&i);
printf("您想查找几分到几分的学生成绩");
scanf("%d%d",&j,&k);
switch(i)
{
case 1: if(p->next==NULL)printf("无学生记录\n");
else {l=0;while(l<cunt)
{
l++;
if(j<=s->math&&s->math<=k)
{
if(flag==0)
{
printf("-------------------------------学生成绩--------------------------\n");
printf("| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 | 平均分 |\n");
}
printf("----------------------------------------------------------------\n");
printf("|%8s|%8d|%8d|%8d|%8d|%8d| %.2f |\n",s->name,s->num,s->chinese,s->math,s->english,s->total,s->ave);
s=s->next;flag=1;}
}
if(flag==1)printf("----------------------------------------------------------------\n");else printf("无此范围成绩的学生");
return(s); }
break;
case 2:
if(p->next==NULL)printf("无学生记录\n");
else {l=0;while(l<cunt)
{
l++;
if(j<=s->math&&s->math<=k)
{
if(flag==0)
{
printf("-------------------------------学生成绩--------------------------\n");
printf("| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 | 平均分 |\n");
}
printf("----------------------------------------------------------------\n");
printf("|%8s|%8d|%8d|%8d|%8d|%8d| %.2f |\n",s->name,s->num,s->chinese,s->math,s->english,s->total,s->ave);
s=s->next;flag=1;}
}
if(flag==1)printf("----------------------------------------------------------------\n");else printf("无此范围成绩的学生");
return(s); }
break;
case 3:
if(p->next==NULL)printf("无学生记录\n");
else {l=0;while(l<cunt)
{
l++;
if(j<=s->math&&s->math<=k)
{
if(flag==0)
{
printf("-------------------------------学生成绩--------------------------\n");
printf("| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 | 平均分 |\n");
}
printf("----------------------------------------------------------------\n");
printf("|%8s|%8d|%8d|%8d|%8d|%8d| %.2f |\n",s->name,s->num,s->chinese,s->math,s->english,s->total,s->ave);
s=s->next;flag=1;}
}
if(flag==1)printf("----------------------------------------------------------------\n");else printf("无此范围成绩的学生");
return(s); }
break;
case 4:
if(p->next==NULL)printf("无学生记录\n");
else {l=0;while(l<cunt)
{
l++;
if(j<=s->math&&s->math<=k)
{
if(flag==0)
{
printf("-------------------------------学生成绩--------------------------\n");
printf("| 姓名 | 学号 | 语文 | 数学 | 英语 | 总分 | 平均分 |\n");
}
printf("----------------------------------------------------------------\n");
printf("|%8s|%8d|%8d|%8d|%8d|%8d| %.2f |\n",s->name,s->num,s->chinese,s->math,s->english,s->total,s->ave);
s=s->next;flag=1;}
}
if(flag==1)printf("----------------------------------------------------------------\n");else printf("无此范围成绩的学生");
return(s); }
break;
}
}
node*jian(node*p)
{
int i,j;
node*a;
a=p;
printf("输入你想删除的学生学号:");
scanf("%d",&j);
if(p->next==NULL)
{
printf("链表为空");;
exit(0);
}
while(a->next->num==j)
a=a->next;
if(a->next==NULL)
printf("没有找到此学号的学生。\n");
else
{
a->next=a->next->next;
}
printf("删除成功");return(p);
}
void main()
{
int z;
node*p;
system("graftabl 936>!");
clrscr();
p=(node*)malloc(sizeof(node));
p->next=NULL;
while(1)
{
clrscr();
menu();
printf("\n输入你想选的选项号:");
scanf("%d",&z);
if(z==0)
{ printf("谢谢使用");getch();break;
}
else
switch(z)
{case 1:plus(p);break;
case 2:count(p);getch();break;
case 3:dip(p);getch();break;
case 4:search(p);getch();break;
case 5:paixu(p);getch();break;
case 6:output(p);getch();break;
case 7:jian(p);getch();break;
default:printf("输入错误,请重新输入");getch();break;
}
}
}