zbdn 2021-04-07 20:45 采纳率: 64.3%
浏览 82
已结题

不知道该怎么解决这个问题?

题目描述: 

上机实习 1. 对于最多由 100 名学生的姓名和成绩信息(王洪, 90 )构成的线性表建立顺序表,并完成下面的而操作: ( 1 )统计成绩大于等于 95 分的人数,并输出这些学生的姓名。 ( 2 )删除成绩小于 20 分的信息。 ( 3 )以 60 分为分界线,将表中所有小于 60 的信息放在表的前半部分,大于 60 的元素放在表的后半部分。

 

 

运行代码主要出错在:在Sturealize.h中的字符串数组a不属于Student类的变量

应该如何修改?

不要把类改成数组进行运行。

#include"stdafx.h"
#include"Student.h"
#include<iostream>
using namespace std;



Student StudentList:: Excellent(Student &s)
{
	int j=0;
	cout<<"以下是95分的人数和学生姓名:"<<endl;
	for(int i=0;i<3;i++)
	{
		if(s.Grade[i]>=95)
		{	j++;
		cout<<s.a[i]<<endl;
		}
	}
	cout<<"成绩大于等于95分的总人数是:"<<j<<endl;
	return s;
}

Student StudentList::DeleteBad(Student &s)
{
	int j=0;
	
	for(int i=0;i<s.length;i++)
	{
		if(s.Grade[i]<20)
		{
			j=i;
			for(int i=j-1;i<s.length-1;i++)
			{
				s.a[i]=s.a[i+1];
s.Grade[i]=s.Grade[i+1];
				s.length--;
			}
		}
	}
	cout<<"以下是删除了成绩小于20的成绩信息表:"<<endl;
	for(int i=0;i<s.length;i++)
	{
		cout<<s.a[i]<<s.Grade[i];
	}
	return s;
}

Student StudentList::Change(Student &s)
{
	int m=60,i=0,j=s.length-1,temp;
	while(i<j)
	{
		while(s.Grade[i]<m)
			i++;
		while(s.Grade[j]>m)
			j--;
		if(i<j&&s.Grade[i]>m&&s.Grade[j]<m)
		{
			temp=s.Grade[j];
			s.Grade[j]=s.Grade[i];
			s.Grade[i]=temp;
		}
		i++;
		j--;
	}
	
	cout<<"以下是经过调整后的成绩信息表:"<<endl;
	for(int i=0;i<s.length;i++)
	{
		cout<<s.a[i]<<s.Grade[i];
	}
	return s;
}

#include<string>
#ifndef STUDENT
#define STUDENT

class Student
{
public:
	int Grade[1000];
	string a[1000];    //数组a存储学生的姓名
	int length;

};


class StudentList
{
public:
friend class Student;
	Student Excellent(Student &s);
	Student DeleteBad(Student &s);
	Student Change(Student &s);
};


#endif

#include "stdafx.h"
#include"Student.h"
#include"Sturealize.h"
#include<string>
#include<iostream>
using namespace std;

int main()
{
	
	Student s;
	StudentList S;
	cout<<"请输入学生的人数:"<<endl;
    cin>>s.length;
    cout<<"请输入学生的姓名:"<<endl;
    for(int i=0;i<s.length;i++)
	{
        cin>>s.a[i];
    }
    cout<<"请依次输入学生的成绩:"<<endl;
    for(int i=0;i<s.length;i++)
	{
        cin>>s.Grade[i];
    }
	S.Excellent(s);
	S.DeleteBad(s);
	S.Change(s);
	return 0;
}
  • 写回答

3条回答 默认 最新

  • 小亮点科技 2021-04-07 20:50
    关注

    string a[1000]; //数组a存储学生的姓名

    这个string是不是应该改为是String a[1000]; 

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?