C++初学者程序设计,请指教 20

设计一个C++程序,统计各个班总人数,班级数,各个班级人数均设计成由用户输入。然后输出结果。... 设计一个C++程序,统计各个班总人数,班级数,各个班级人数均设计成由用户输入。然后输出结果。 展开
 我来答
Z鬼迷心窍
2012-02-21 · 超过22用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:54.7万
展开全部

给你个参考 复制到粘贴到编译器调试几遍  看看思路   在写你那个就容易多了  建议尽量别用goto语句

#include<iostream> 

#include<string.h> 

#include<iomanip> 

#include<conio.h> 

#include <stdlib.h> 

using namespace std;

#define NULL 0 

struct student 

char name[30];          //姓名 

char sex[30];            //性别 

int num;              //学号 

int age;            //年龄 

double test_chinese;     //语文成绩 

double test_math;            //数学成绩 

double date;         //总成绩 

struct student *next;              

}; 

student *put_information(student *);     //创建学生信息库 

student *del_information(student *);   //删除学生信息 

student *insert_information(student *);   //添加学生信息 

student *search_name(student *);   // 按姓名查找学生信息 

student *search_num(student *)  ;      //按学号查找 

student *test_totol(student *);   ////总体成绩

student *order(student *);     // 排名 

student *print_information(student *);     //查看信息 

int n; 

int main() 

 int enternum;   

     student *head;

 head=NULL; 

 cout<<"********************************************************************************"<<endl; 

 cout<<"                              欢迎使用学生理系统                             "<<endl; 

 cout<<"********************************************************************************"<<endl; 

 cout<<"                              按任意键执行主菜单!                               "<<endl; 

     getch(); 

     while(1) 

 { 

 cout<<"***********************************主菜单*************************************"<<endl; 

 cout<<"                               0键退出                                        "<<endl; 

 cout<<"                               1键输入学生信息                                "<<endl; 

 cout<<"                               2键输出学习信息                                "<<endl; 

 cout<<"                               3键删除学生信息                                "<<endl;    

 cout<<"                               4键添加学生信息                                "<<endl; 

 cout<<"                               5键按姓名查找学生信息                          "<<endl; 

 cout<<"                               6键按学号查找学生信息                          "<<endl; 

 cout<<"                               7键查看学生总体成绩                            "<<endl; 

 cout<<"                               8键查看排名                                    "<<endl;  

 cin>>enternum; 

 switch(enternum) 

 { 

 case(0):cout<<"************************************************************************"<<endl; 

     cout<<endl; 

 cout<<"                    谢谢使用高校学籍管理系统                            "<<endl; 

 cout<<endl; 

 cout<<"************************************************************************"<<endl; 

             exit(0); 

 case(1):head=put_information(head);                

 break;                 

 case(2):print_information(head);           

     break; 

 case(3):head=del_information(head);             

 break; 

 case(4):head=insert_information(head); 

     break; 

 case(5):head=search_name(head);            

 break; 

 case(6):head=search_num(head);                

     break; 

 case(7):head=test_totol(head);                   

     break; 

 case(8):head=order(head); 

     break; 

 default:cout<<"             对不起,你只能输入0~7键,请重新输入          "<<endl; 

     break; 

 } 

 }

 return 0; 

student *put_information(student *head)                ////////信息输入函数 

student *p1,*p2; 

int N, choose; 

if(head!=NULL) 

cout<<"你已经输入信息,如果还想输入,请进入添加信息项添加信息"<<endl; 

return (head); 

cout<<"输入你想输入学生信息的个数:"; 

cin>>N; 

n=0; 

head=NULL; 

p1=p2=new student; 

while(n<N) 

n=n+1; 

p1=new student;             ///////开辟一个空间 

cout<<"请输入第"<<n<<"个学生的信息:"<<endl; 

        cout<<"    姓名:"; 

cin>>p1->name; 

     loop:  cout<<"    性别(1 男,2 女):"; 

cin>>choose; 

            switch(choose) 

case(1): 

strcpy(p1->sex,"男");break; 

case(2): 

strcpy(p1->sex,"女");break; 

default: 

cout<<"你的只能输入1或2,请重新输入!!!!"; 

goto loop; 

cout<<"    学号:"; 

cin>>p1->num; 

cout<<"    年龄:"; 

cin>>p1->age; 

cout<<"语文成绩:"; 

cin>>p1->test_chinese; 

cout<<"数学成绩:"; 

cin>>p1->test_math; 

if(n==1) 

        head=p1; 

else  

p2->next=p1; 

p2=p1; 

p2->next=NULL; 

cout<<"*******************************************************************************"<<endl; 

cout<<endl; 

cout<<"                         你已经成功的输入了"<<N<<"个人的信息                   "<<endl; 

cout<<endl; 

cout<<"*******************************************************************************"<<endl; 

cout<<endl; 

return (head); 

student *del_information(student *head)             //删除信息函数 

char del_name[30];                                //你想要删除学生的姓名 

int input; 

student *p1,*p2; 

    if (head==NULL)                               //没输入数据 

cout<<"对不起,你还没输入学生的信息!"<<endl;  

return(head); 

    else  

p1=head;                                            //使p1指向第一个结点

    loop:  cout<<"请输入你要删除该学生的姓名:"; 

cin>>del_name; 

while(strcmp(p1->name,del_name)!=0&&p1->next!=NULL)                   //输入的姓名没找到且还有结点 

p2=p1; 

p1=p1->next;                                       //p1后移一个结点 

if(strcmp(del_name,p1->name)==0)                        //找到要删除的学生的信息 

if(p1==head) head=p1->next;                           //若p1指向的是首结点,把第二个结点地址赋予head 

else p2->next=p1->next;                            //否则将下一结点地址赋给前一结点地址 

         cout<<"***************************************************"<<endl; 

            cout<<"          删除成功,你删除的学生信息为:            "<<endl; 

        cout<<"                     姓名:"               <<p1->name<<endl; 

        cout<<"                     学号:"               <<p1->num<<endl; 

        cout<<"                     性别:"               <<p1->sex<<endl; 

        cout<<"                     年龄:"               <<p1->age<<endl; 

        cout<<"                 语文成绩:"               <<p1->test_chinese<<endl; 

        cout<<"                 数学成绩:"               <<p1->test_math<<endl; 

        cout<<"***************************************************"<<endl; 

        n=n-1; 

        LOOP:cout<<"你是否想继续删除学生的信息(1继续,2返回主菜单)"<<endl; 

cin>>input; 

switch(input) 

case(1):goto loop; 

case(2):break; 

default:cout<<"你只能输入1或2,请重新输入!"<<endl; 

    goto LOOP;  

else  

cout<<"                找不到 "<<del_name<<"的信息,请重新输入              "<<endl;     //找不到信息 

    goto loop; 

return(head); 

student *insert_information(student *head)         //添加信息函数 

student *p1,*p2,*p; 

int N=0; 

head=NULL; 

p=new student; 

p1=p2=head; 

    cout<<"请输入添加到的位置(学号)"<<endl; 

cin>>p->num; 

cout<<"请输入添加学生的信息"<<endl; 

cout<<"    姓名:"; 

cin>>p->name; 

cout<<"    性别:"; 

cin>>p->sex; 

cout<<"    年龄:"; 

cin>>p->age; 

cout<<"语文成绩:"; 

cin>>p->test_chinese; 

cout<<"数学成绩:"; 

cin>>p->test_math; 

while(p1!=0) 

p2=p1; 

p1=p1->next; 

if(head=NULL) 

head=p; 

p->next=NULL; 

N++; 

else 

if(p->num==head->num) 

p=head; 

while(head!=NULL) 

head=head->next; 

head->num++; 

N++; 

else if(p->num==p1->num&&p->num!=head->num) 

p2->next=p; 

p->next=p1; 

while(p1!=NULL) 

p1->num++; 

N++; 

else if(p->num==(p1->num+1)&&p->next==NULL) 

p=p1->next; 

return (head); 

student *search_name(student *head)                 //按姓名查找学生信息函数 

student *p1,*p2; 

int enternum1;                            

char find_name[30];                       //按姓名查找所要输入的姓名 

if(head==NULL)                                 //为空表 

cout<<"你还没输入该学生的信息,请返回输入!"<<endl; 

return (head); 

else  

p1=head; 

     begin: cout<<"请输入你要查找学生的姓名:"; 

cin>>find_name; 

while(strcmp(find_name,p1->name)!=0&&p1->next!=NULL)               ///////输入的的姓名与已有的数据不同且后面还有学生信息 

p2=p1; 

p1=p1->next;         // P1向后移一个节点 

    if(strcmp(find_name,p1->name)==0)           ///找到了 

  cout<<"***************************************************"<<endl; 

  cout<<"          删除成功,你查找的学生信息为:            "<<endl; 

  cout<<"                     姓名:"               <<p1->name<<endl; 

  cout<<"                     学号:"               <<p1->num<<endl; 

  cout<<"                     性别:"               <<p1->sex<<endl; 

  cout<<"                     年龄:"               <<p1->age<<endl; 

     cout<<"                 语文成绩:"               <<p1->test_chinese<<endl; 

  cout<<"                 数学成绩:"               <<p1->test_math<<endl; 

  cout<<"***************************************************"<<endl; 

           hand:  cout<<"          是否继续删除(1继续2返回主菜单)"; 

  cin>>enternum1; 

  switch(enternum1) 

  { 

  case(1): 

 goto begin; 

  case(2): 

 break; 

  default: 

 cout<<"你只能输入1或2,请重新输入!"<<endl; 

 goto hand; 

  } 

    else cout<<"**************学生信息库没该学生的信息!***********"<<endl; 

return(head); 

student *search_num(student *head) 

    student *p1,*p2; 

    int enternum2,find_num;   

if(head==NULL)                                 //为空表 

    cout<<"你还没输入该学生的信息,请返回输入!"<<endl; 

return(head); 

else 

p1=head; 

    begin:  cout<<"请输入你要查找学生的学号:"; 

    cin>>find_num; 

while(find_num!=p1->num&&p1->next!=NULL)        ///////输入的的数与已有的数不同且后面还有学生信息 

p2=p1; 

p1=p1->next;                        //P1向后移一个节点 

if(find_num==p1->num)            /////如果找到了 

cout<<"***************************************************"<<endl; 

cout<<"               你查找的学生信息为:                 "<<endl; 

cout<<"                     姓名:"               <<p1->name<<endl; 

cout<<"                     学号:"               <<p1->num<<endl; 

cout<<"                     性别:"               <<p1->sex<<endl; 

cout<<"                     年龄:"               <<p1->age<<endl; 

cout<<"                 语文成绩:"               <<p1->test_chinese<<endl; 

cout<<"                 数学成绩:"               <<p1->test_math<<endl; 

cout<<"***************************************************"<<endl; 

          hand: cout<<"按1键继续输入2键返回主菜单!"<<endl; 

cin>>enternum2; 

switch(enternum2) 

case(1): 

goto begin;break; 

case(2): 

break; 

default: 

cout<<"你只能输入1或2,请重新输入!"<<endl; 

goto hand;break; 

else cout<<"************学生信息库没该学生的信息!*********"<<endl; 

return (head); 

student *test_totol(student *head)              //求学生总成绩,平均成绩和及格率 

student *p1 ; 

int pass1=0,pass2=0;                //及格人数 

double sum1=0,sum2=0,mean1,mean2,pass_rate1,pass_rate2;                    

if(head==NULL) 

cout<<"对不起,你还没输入学生信息,请返回输入!"<<endl;    //空表 

return (head); 

else 

p1=head; 

while(p1!=NULL) 

sum1+=p1->test_chinese; 

sum2+=p1->test_math; 

if(p1->test_chinese>=60)pass1++; 

    if(p1->test_math>=60)pass2++; 

p1=p1->next; 

mean1=1.0*sum1/n; 

mean2=1.0*sum2/n; 

pass_rate1=(pass1/n)*100; 

pass_rate2=(pass2/n)*100;   

cout<<"*******************************************************"<<endl; 

cout<<"                语文的平均成绩为:     "<<mean1          <<endl; 

cout<<"                语文的及格率为:       "<<pass_rate1<<"%"<<endl; 

cout<<"*******************************************************"<<endl; 

cout<<"                数学的平均成绩为:     "<<mean2          <<endl; 

cout<<"                数学的及格率为:       "<<pass_rate2<<"%"<<endl; 

cout<<"*******************************************************"<<endl; 

return (head); 

}   

student *order(student  *head) 

{  

    student *p,*q,*tail,*s;  

int i=0; 

tail=NULL;   

while(head->next!=tail)   

{    

p=head; 

p->date=p->test_chinese+p->test_math; 

p->next->date=p->next->test_chinese+p->next->test_math; 

q=p->next;    

while(q->next!=tail)    

{     

if(p->next->date>q->next->date)     

{    

s=q->next;      

p->next=q->next;      

q->next=q->next->next;      

p->next->next=q;      

q=s; 

p=p->next;     

q=q->next; 

tail=q; 

    cout<<"______________________________________"<<endl; 

cout<<setw(8)<<"姓名"<<setw(8)<<"总分"<<setw(10)<<"名次"<<endl; 

    while(p!=NULL) 

++i; 

        cout<<"______________________________________"<<endl; 

    cout<<setw(8)<<p->name<<setw(8)<<p->date<<setw(8)<<"第"<<i<<"名"<<endl; 

    p=p->next; 

    cout<<"______________________________________"<<endl; 

return (head); 

student *print_information(student *head)                            //查看信息函数 

{   

student *p1; 

if(head==NULL) 

cout<<"对不起,你还没输入学生信息,请返回输入!"<<endl; 

return (head); 

else 

p1=head; 

cout<<"____________________________________________________________________________"<<endl; 

cout<<setw(8)<<"姓名"<<"|"<<setw(8)<<"学号"<<"|"<<setw(8)<<"性别"<<"|"<<setw(8) 

    <<"年龄"<<"|"<<setw(8)<<"语文成绩"<<"|"<<setw(8)<<"数学成绩"<<"|"<<endl; 

cout<<"____________________________________________________________________________"<<endl; 

while(p1!=NULL) 

{    

cout<<setw(8)<<p1->name<<"|" 

    <<setw(8)<<p1->num<<"|" 

<<setw(8)<<p1->sex<<"|" 

          <<setw(8)<<p1->age<<"|" 

   <<setw(8)<<p1->test_chinese<<"|" 

<<setw(8)<<p1->test_math<<"|"<<endl; 

cout<<"____________________________________________________________________________"<<endl; 

p1=p1->next; 

return (head); 

}

匿名用户
2012-02-20
展开全部
C++ 当然要用C++格式来写了。。

#include <iostream.h>
#define DX 5

class obj_class
{
private :
int class_num;
int stu_sum;
public:
void set(int num,int sum)
{
stu_sum=sum;
class_num =num;
}
void show()
{
cout<<class_num<<"班有学生:"<<stu_sum<<"人"<<endl;
}
};

int main()
{
obj_class obj[DX];

int num=0,sum=0,i=0;
for(i=0;i<DX;i++)
{
cout<<"请输入班级 人数"<<endl;
cin>>num>>sum;
obj[i].set(num,sum);
}

for(i=0;i<DX;i++)
{
obj[i].show();
}
}
追问
不对哦,您再看看可以吗?
追答
#define DX 5  
这里有定义 表示是 5个班 要输入5次 你说的不对事指什么不对?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28b4182
2012-02-20 · TA获得超过7224个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:2238万
展开全部
#include <iostream>
using namespace std;//分号在英文的

int main()
{
int a[1000],n,i,sum=0;
puts("输入班级个数");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
printf("%d\n",sum);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式