c1-第三周
文章目录
1月份
2.定义一个整形数组arr
(1)把arr中的偶数去掉后保存到一个新数组中
(2)输出arr数组元素,输出新数组元素,并输出新旧数组长度之差
void test_week3_1(){
int arr1[9]={1,2,3,4,5,6,7,8,9};
int arr2[9];
int k = 0;
for(int i = 0;i<9;i++){
if(arr1[i]%2 != 0){
arr2[k] = arr1[i];
cout << arr2[k] << endl; //打印新数组
k++;
}
}
cout << 9-k<< endl;
}
2.定义整形栈s
(1)栈s中添加多个元素
(2)遍历并输出元素
#include <stack> //导栈
void test_week_3(){
stack<int> s; //定义int类型的栈(容器)
s.push(1);//放进去 底
s.push(2);//放进去
s.push(3);//放进去 顶
for(int i = 0;i<3;i++){
cout << s.top()<< endl; //3 2 1
s.pop();//弹走
}
}
3.输入一个字符串包括大小写和数字,将其中的大写英文字母改为小写,并且输出数字个数
(1)按要求提示并输入要转换的字符串
(2)循环判断每个字符并转换并判断数字的个数
(3)正确输出转换后的结果和数字的个数
int main(){
string str1 = "abc111AAA";
int num = 0;
for(int i = 0 ;i<str1.length();i++){ //i下标
if(isdigit(str1[i])){
num++;
} else if(isupper(str1[i])){
str1[i]=tolower(str1[i]);
}
}
cout << num<< endl;
cout << str1;
}
4.根据下面数据,编程实现要求功能:
姓名 年龄 性别
name age gender
A 22 女
B 21 女
C 20 男
D 23 男
E 19 男
(1)定义学生结构体或者类Stu,包括姓名(name),年龄(age),性别(gender)等变量
(2)定义结构体MyR,要求结构体中用上()运算符重载
(3)定义函数show,要求对传入的学生数据进行显示
(4)在主程序中,根据题目中数据创建学生数组
(5)调用show方法遍历学生数据并输出
(6)对学生数据根据年龄进行排序并输出排序后结果
(7)判断是否存在名字为E的学生并输出结果
(8)要求主程序中使用STL,用上sort方法
(9)要求主程序中排序时用上MyR与运算符重载()
struct student{
string name;
int age;
string sex;
};
//制定排序规则
struct MyR {
//重载()运算符
bool operator()(student s1, student s2){
return s1.age > s2.age; //用年龄 >降序
}
};
//用来打印结构体数据
void show(student stu){
cout << "name:" << stu.name <<"age:" << stu.age <<"sex:" <<stu.sex << endl;
}
//以前的写法
//bool compare(student stu1,student stu2){
// return stu1.age > stu2.age; //>年龄降序 <升序
//}
int main(){
student stu1={"谢天宇",20,"男"}; //结构体创建对象
student stu2={"张文京",19,"男"}; //结构体创建对象
student stu3={"班长",21,"男"}; //结构体创建对象
student arr[3] ={stu1,stu2,stu3};
sort(arr,arr+3, MyR()); //排序
//打印看看是否排序了
for(int i = 0;i<3;i++){
show(arr[i]); //在循环中调用打印函数,打印学生信息
}
}
9月
1.编写程序实现以下功能或问题
(1)定义一个成绩类Grade
(2)数据成员:gMath、gChn、gEng。分别储存数学、语文、英语的成绩
①说明:学生A三门成绩为77、80、75
②说明:学生B三门成绩为65、75、70
(3)函数成员:构造函数(有参数)、相应的计算、输出信息等函数。计算、输出的实际方式不限
(4)对2个学生(stuA、stuB)的各项成绩,运用合理方法,计算2名学生各自的总分并输出
(5)输出2个学生各项的成绩总和(即mathSum、chnSum、engSum),并相应输出
class Grade{
public:
int gMath;
int gChn; //语文
int gEng; //英文
//带参构造 用来给属性赋值
Grade(int math,int chinese,int english){
gMath = math;
this->gChn = chinese;
this->gEng = english;
}
void get_sum(){
cout << "成绩总和是:" << gMath+gChn+gEng <<endl;
}
//第5问
void operator+(Grade a){ //重载(重写)运算符+ (+ - * / % ++ --)
cout << "语文成绩和是:" << a.gChn+ gChn;
cout << "英语成绩和是:" << a.gEng+ gEng;
cout << "数学成绩和是:" << a.gMath+ gMath;
}
};
3.完成以下功能
问题描述:老师和学生有共同的属性m_name。各自的衡量标准是老师的论文数量m_paper和学生的考试分数m_score。由键盘输入对应的数值,输出复合条件的对应的姓名。老师要求m_paper > 3。学生要求m_score > 80。
提示:本题要#include
(1)定义基类Base
①公有域成员:构造函数(输入m_name行为放在构造函数内)、功能函数(输出数据)、纯虚函数isGood,用于判断是否满足条件、接口函数输出信息
②保护域成员:string型数据m_name、int型数据m_score、int型数据m_paper
(2)派生student和teacher两个类
①公有域成员:构造函数(学生类由键盘输入m_score、教师类由键盘输入m_paper)
②isGood()函数,学生类m_score>80返回1、教师类m_paper>3返回1。不符合条件返回0
(3)对于符合条件(即上条要求)的,接口函数,输出对应的m_name
using namespace std;
class Base{ //父类
protected:
string m_name;
int m_score;
int m_paper;
public:
Base(string m_name){
this->m_name = m_name;
}
void print(){
cout <<"名字:" << m_name << endl;
}
virtual int isGood()=0; //纯虚函数
};
class student: public Base{ //子类 : 父类 (继承)
public:
student(string m_name):Base(m_name){ //调用父类的构造函数,给名字赋值
cout << "输入学生成绩" << endl;
cin >> m_score;
}
int isGood(){ //重写(覆盖)父类的虚函数
//补齐
if(m_score > 80){
cout << "成绩合格" << endl;
return 1;
} else{
cout << "成绩不合格" << endl;
return 0;
}
}
};
class teacher:public Base{ //子类2
public:
teacher(string m_name):Base(m_name){ //子调用父的构造函数,为了给name赋值
cout << "输入论文数量" << endl;
cin >> m_paper;
}
int isGood(){
if(m_paper > 3){
cout << "论文数量合格" << endl;
return 1;
} else
{
cout << "论文数量不合格" << endl;
return 0;
}
}
};
int main(){
student stu1("张世博");
stu1.print();
stu1.isGood();
teacher tea("小李");
tea.print();
tea.isGood();
}
4.对运算符“%”重载,实现数组各对应元素求模运算,如:a[3]={ 11,22,37 } ,b[3]={ 3,6,8 } ,则 a%b={ 2,4 ,5 } 。具体要求:
(1)类的公有函数成员:构造函数,接受参数为数组名
(2)利用运算符%的重载,完成相关运算
(3)在主函数中定义相关对象,并进行测试
class Test{
public:
int arr[3]; //属性
Test(int a[3]){ //{1,2,3}
for(int i = 0;i<3;i++){
arr[i]=a[i];
}
}
void operator%(Test b){ //b---arr{3,6,8}
for(int i = 0;i<3;i++){
cout << arr[i]%b.arr[i] << endl;
}
}
};
int main(){
int arr1[3] = {11,22,37};
Test a(arr1);
int arr2[3] = {3,6,8};
Test b(arr2);
a%b;
}
原文地址:https://blog.csdn.net/amynn/article/details/136558026
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!