| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:大家看看我写的程序错哪了?
只看楼主 加入收藏
hebebstever
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-26
收藏
 问题点数:0 回复次数:2 
大家看看我写的程序错哪了?

最近老师布置个作业,编好了可是错误太多的,这里我给出我的代码,高手帮帮我啊。。。。。。
毕竟是新手,这样太打击信心了,


#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<string.h>
#define N 5

struct student
{
char name[9];
int id,jxj,shs;
float math,eng,c,ave,jd;
};


void message(int a)
{
switch(a)
{
case 0:cout<<"不合法的操作数(1--8之间)!重新输入:";break;
case 1:cout<<"数据已录入,无须重新录入!重新输入:";break;
case 2:cout<<"不合法的姓名(最多8个字符)!重新输入:";break;
case 3:cout<<"无效的成绩(0--100之间)!重新输入:";break;
case 4:cout<<cout<<setw(10)<<"特等奖";break;
case 5:cout<<setw(10)<<"一等奖";break;
case 6:cout<<setw(10)<<"二等奖";break;
case 7:cout<<setw(10)<<"三等奖";break;
}
}


float test(float a)
{
while(a<0||a>100) {message(3);cin>>a;}
return a;
}


void input(student a[N])
{
char test[100];
for(int i=0;i<N;i++)
{
system("cls");
cout<<"已录入"<<i<<"条记录,剩余"<<N-i<<"条记录!\n";
cout<<"请输入第'<<i+1<<"位学生的姓名:";cin>>test;
while(sizeof(test)>8) {message(2);cin>>test;}
strcpy(a[i].name,test);
cout<<"请输入"<<a[i].name<<"同学的学号:" ;cin>>a[i].id;
cout<<"请输入"<<a[i].name<<"同学的高数成绩:" ;cin>>a[i].math;
a[i].math=test(a[i].math);
cout<<"请输入"<<a[i].name<<"同学的英语成绩:" ;cin>>a[i].eng;
a[i].eng=test(a[i].eng);
cout<<"请输入"<<a[i].name<<"同学的C++成绩:" ;cin>>a[i].c;
a[i].c=test(a[i].c);
}
}


void output(student a[N],float &a)
{
cout<<setw(10)<<"姓名"<<setw(10)<<"学号"<<setw(10)<<"高等数学"<<setw(10)<<"英语"<<setw(10)<<"C++"<<setw(10)<<"平均分"<<setw(10)<<"学分积点"<<'\n';
for(int i=0;i<N;i++)
cout<<setw(10)<<a[i].name<<setw(10)<<a[i].id<<setw(10)<<a[i].math<<setw(10)<<a[i].eng<<setw(10)<<a[i].c<<setw(10)<<a[i].ave<<setw(10)<<a[i].jd<<'\n';
cout<<"班级平均分为:<<a<<'\n';
}


void average(student a[N],float &a)
{
for(int i=0;i<N;i++)
{
a[i].ave=(a[i].math+a[i].eng+a[i].c)/3;
a=a+a[i].ave;
}
a=a/N;
}


void xfjd(student a[N])
{
float a,b,c;
for(int i=0;i<N;i++)
{
if(a[i].math<60) a=0;
else a=1+(a[i].math-60)/10;
if(a[i].eng<60) b=0;
else b=1+(a[i].eng-60)/10;
if(a[i].c<60) c=0;
else c=1+(a[i].c-60)/10;
a[i].jd=(5.5*a+6*b+4*c)/15.5;
}
}

void award(student a[N])
{
for(int i=0;i<N;i++)
{
if(a[i].math>=60&&a[i].eng>=60&&a[i].c>=60)
{
if(a[i].jd>=4.0) a[i].jxj=3;
else if(a[i].jd>=3.6) a[i].jxj=2;
else if(a[i].jd>=3.2) a[i].jxj=1;
else if(a[i].jd>=2.8) a[i].jxj=0;
}
else a[i].jd=4;
if(a[i].math>=80&&a[i].eng>=80&&a[i].c>=80)
a[i].shs=1;
else a[i].shs=0;
}




void sortprint(student a[N],int b,int &a,float &c)
{
char c[15];student t;int i,j,k=0;
switch(b)
{
case 1:strcpy(c,"高等数学成绩");break;
case 2:strcpy(c,"英语成绩");break;
case 3:strcpy(c,"C++成绩");break;
case 4:strcpy(c,"平均成绩");break;
case 5:strcpy(c,"学分积点");break;
}
if(a!=b)
{
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
switch(b)
{
case 1:if(a[i].math<a[j].math) {t=a[i];a[i]=a[j];a[j]=t;};break;
case 2:if(a[i].eng<a[j].eng) {t=a[i];a[i]=a[j];a[j]=t;};break;
case 3:if(a[i].c<a[j].c) {t=a[i];a[i]=a[j];a[j]=t;};break;
case 4:if(a[i].ave<a[j].ave) {t=a[i];a[i]=a[j];a[j]=t;};break;
case 5:if(a[i].jd<a[j].jd) {t=a[i];a[i]=a[j];a[j]=t;};break;
}
k++;
if(k==N-1) a=b;
}
}
cout<<"按"<<c<<"降序输出为:\n";
output(a[n],c);
}


void awardprint(student a[N],int a)
{
int i,j,k;
if(a==1)
{
cout<<setw(10)<<"奖项"<<setw(10)<<"姓名"<<setw(10)<<"学号"<<setw(10)<<"高等数学"<<setw(10)<<"英语"<<setw(10)<<"C++"<<setw(10)<<"平均分"<<setw(10)<<"学分积点"<<'\n';
for(i=0;i<4;i++)
for(j=0,k=0;j<N;j++)
if(a[j].jxj==i)
{
message(i+4);
cout<<setw(10)<<a[i].name<<setw(10)<<a[i].id<<setw(10)<<a[i].math<<setw(10)<<a[i].eng<<setw(10)<<a[i].c<<setw(10)<<a[i].ave<<setw(10)<<a[i].jd<<'\n';
}
else {k++;if(k==N-1) cout<<"\t无学生获得该奖励!\n";}
}
else
{
cout<<"三好学生名单:\n";
for(i=0,j=0,k=0;i<N;i++,j++)
if(a[i].shs==1)
{
cout<<setw(20)<<a[i].name;
if(j&&j%3==0) cout<<'\n';
}
else {k++;if(k==N-1) cout<<"很遗憾,本班没有学生符合三好生的要求.\n";}

}
}

void main()
{
int option=0,data=0,sort=0;
float ave=0;
student s[N];
while(option!=9)
{
cout<<"欢迎使用学生成绩管理系统\n";
cout<<"1.录入并处理数据\n2.按高等数学成绩排序输出\n3.按英语成绩排序输出\n4.按C++成绩排序输出\n5.按平均成绩排序输出\n6.按学分排序输出\n7.查看获奖学金情况\n8.查看获三好生情况\n9.退出管理系统\n请选择相应的操作:";
cin>>option;
while(option<1||option>9) {message(0);cin>>option;}
switch(option)
{
case 1:if(data==0) {input(s);system("cls");cout<<数据成功录入!\n";average(s,ave);xfjd(s);award(s);cout<<"数据处理完毕!";}
else {system("cls");message(1)}
break;
case 2:system("cls");sortprint(s,1,ave,sort);break;
case 3:system("cls");sortprint(s,2,ave,sort);break;
case 4:system("cls");sortprint(s,3,ave,sort);break;
case 5:system("cls");sortprint(s,4,ave,sort);break;
case 6:system("cls");sortprint(s,5,ave,sort);break;
case 7:system("cls");awardprint(s,1);break;
case 8:system("cls");awardprint(s,2);break;
case 9:system("cls");cout<<"欢迎下次使用!\n";
}
}
}

[此贴子已经被作者于2007-6-26 10:07:34编辑过]

搜索更多相关主题的帖子: message include 
2007-06-26 10:05
hebebstever
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-26
收藏
得分:0 
怎么没有人回啊?

2007-06-26 10:28
zz_tot
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-4
收藏
得分:0 

cout<<"请输入第'<<i+1<<"位学生的姓名:";cin>>test;

是双引号
你的代码 好乱

2007-07-05 14:30
快速回复:大家看看我写的程序错哪了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025467 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved