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;
    }
};

int main(){
    Grade zsb(77,80,75); //创建对象
    zsb.get_sum();
    Grade zj(65,75,70);
    zj.get_sum();
    zsb+zj; //对象1+对象2
}

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(){
        cout << "输入学生名字" << endl;
        cin >> m_name;
    }
    void print(){
        cout <<"名字:" << m_name << endl;
    }
    virtual int isGood()=0; //纯虚函数
};

class student: public Base{ //子类 : 父类   (继承)
public:
    student():Base(){ //调用父类的构造函数,给名字赋值
        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():Base(){ //子调用父的构造函数,为了给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;
}

2月

1.定义二维整形数组arr

(1)定义指针p指向arr
(2)并通过指针p遍历数组并输出数组元素
(3)把arr中元素保存到一个一维的新数组中
(4)遍历一维数组并输出数组元素

void arr_test(){
    int arr[2][3]  = {1,3,2,5,7,9};
    int *p = arr[0]; //[0][0]
    int new_arr[6]; //定义一维数组

    int k = 0; //一维数组的下标从0--5

    for(int i = 0;i<2;i++){ //外行
        for(int j = 0;j<3;j++){ //内列
            cout << *p << endl; //地址对应的值
            new_arr[k] = *p;
            k++; //变一维数组的下标
            p++; //移动指针 二维的下标
        }
    }
    for (int i =0;i<6;i++){
        cout << new_arr[i] << " ";
    }
}

2.已知n<=1时,f(n)=1,否则f(n)=n*f(n-1)

(1)求f(n)的值
(2)使用递归方法
(3)输出f(10)的值

int f2(int n){
    if(n<=1){
        return 1;
    } else{
        return n*f2(n-1); //3*2*1
    }
} //相当于求10的阶乘

3.定义一个长度为6的整形数组a

(1)输入6个整数并存入数组
(2)由小到大对数组进行排序
(3)输出数组中的第二小值和第二大值

void test3(){
    int arr[6];
    for(int i = 0;i<6;i++){
        cin >> arr[i];
    }
    sort(arr,arr+6); //升
    cout << "第二大的" << arr[4] <<endl;
    cout << "第二小的" << arr[1] <<endl;
}

4.编程实现要求功能:

(1)定义一个Box类
(2)定义私有数据成员lengh(长),width(宽),height(高)
(3)在类内声明公有函数get_value()
(4)在类内声明公有函数volume(),求长方体体积
(5)get_value()在类外定义,get_value()作用是接收从键盘输入长、宽、高的值
(6)volume()函数在类外定义,volume()的作用是计算并显示长方体的体积
(7)在main()函数定义Box类的对象b1
(8)通过对象b1调用get_value()函数给长、宽、高赋值
(9)通过对象b1调用volume()函数输出长方体体积(长高)

class Box{
private:
    int lengh;
    int width;
    int height;
public:
    void get_value(); //没有函数体,只有函数定义
    void volume();
};

void Box::get_value(){
    cout << "输入长宽高"  << endl;
    cin >> lengh >> width >> height;
}

void Box::volume(){
    cout << lengh*width*height << endl;
}

int main(){
    Box box; //创建对象,因为没有带参构造所以不用加()
    box.get_value(); //调用函数给属性赋值
    box.volume(); //调用函数计算体积
}

10月

1.编程实现以下功能:

歌手参加比赛,7位裁判打分,去掉一个最高分和一个最低分后平均分是歌手的	最后得分
使用函数模板,实现求歌手的最后得分
主函数中输入7位裁判的得分,调用函数实现求的歌手的最后得分
使用double , int 2种不同类型的数据进行测试
template<typename T> //定义模板
T avgs(T arr[7])
{
    T avg1 = 0; //求5个评分和
    sort(arr, arr + 7);

    for (int i = 1; i < 6; i++)
    {
        avg1 += arr[i];
    }
    return avg1/5; //返回平均值
};
int main()
{
    double arr[7];
    cout << "请输入选手的分数:";
    for (size_t i = 0; i < 7; i++)
    {
        cin >> arr[i];
    }
    cout << "最终平均分是:" << avgs(arr);}

2.定义一个学生类Student

数据成员: 学号m_id,姓名m_name,年龄m_age
静态数据成员:学生数total,初始化为0
有参构造函数,给成员赋值
显示学生信息的成员函数display

定义一个课代表类Lesson_rep,继承自学生类
数据成员:课程编号m_lessonNum,课程评分m_score
有参构造函数,给成员赋值
显示课代表信息的成员函数display

主函数:
创建四个学生,三个普通学生和课代表
展示所有学生信息
参考运行效果:
class Student{
public:
    int m_id;
    string m_name;
    int m_age;

    static int total; //静态属性

    //有参构造函数,给成员赋值
    Student(int id,string name,int age){
        this->m_id = id;
        this->m_name = name;
        this->m_age = age;
        total++; //计数
    }

    //显示学生信息的成员函数display
    void display(){
        cout << m_id << m_name << m_age << endl;
    }
};
int Student::total=0; //给student类中的total赋值

class Lesson_rep:public Student{ //子类有5个属性,(3父2子)
public:
    int m_lessonNum;
    int m_score;

    //有参构造函数,给成员赋值
    Lesson_rep(int id,string name,int age,int m_lessonNum,int m_score): Student(id,name,age){
        this->m_lessonNum = m_lessonNum;
        this->m_score = m_score;
    }

    //显示课代表信息的成员函数display
    void display(){
        Student::display();
        cout << m_lessonNum << m_score << endl;
    }
};
int main(){
    cout << "普通学生信息:" << endl;
    Student stu1(1,"史会辉",20); //1
    stu1.display();
    Student stu2(2,"高祉祺",19);
    stu2.display();
    Student stu3(3,"刘宏博",120);
    stu3.display();
    cout << "课代表信息:" << endl;
    Lesson_rep zl(4,"赵亮",23,1,100);
    zl.display();

    cout << "总人数:"<< stu1.total << endl;
}

3.三角形的面积为 面积=sqrt(s*(s-a)(s-b)(s-c)),其中 s=1/2*(a+b+c)。a,b,c 为三角形的边。

要求:定义两个带参数的宏,一个用来求 s,另一个宏用来求 area。
写程序,在程序中用带实参的宏名来求面积 area.

输入描述
输入三角形的三条边,以逗号隔开
输出描述
输出面积
输入样例
3,4,5
7.3,8.2,9.9
输出样例
area=6
area=29.4

#define s1(a,b,c) (0.5*(a+b+c))
//面积=sqrt(s*(s-a)*(s-b)*(s-c))
#define mj(a,b,c) (sqrt(s1(a,b,c)*(s1(a,b,c)-a)*(s1(a,b,c)-b)*(s1(a,b,c)-c)))

int main(){
    cout << "输入三条边,以,号隔开" << endl;
    string str1;
    cin >> str1;//3,4,5
    string arr[3]; //用来保存三边的
    int k = 0;//给arr用的
    for(int i = 0;i<str1.length();i++){
        if(str1[i] !=','){
            arr[k]+=str1[i];
        } else{
            k++;
        }
    }

    double a = stod(arr[0]); //把字符串转为小数 "4"--4.0
    double b = stod(arr[1]); //把字符串转为小数
    double c = stod(arr[2]); //把字符串转为小数
    cout << a << b<< c;
    cout << "面积:" << mj(a,b,c);
    //3 4 5 答案:6
}

12月

1.输入一个0~100间整数作学生分数,编程自动输出学生成绩,成绩分为ABCDE五种,90及以上A,80 - 89为B,70 - 79为C,60 - 69为D,60以下为E

void test1() {
	int score;
	cin >> score;
	if (score >= 90) {
		cout << "A";
	}
	else if (80 <= score <= 89) {
		cout << "B";
	}
	else if (70 <= score <= 79) {
		cout << "C";
	}
	else if (60 <= score <= 69) {
		cout << "D";
	}
	else
	{
		cout << "E";
	}
}

2.输入两个不等的三位数m和n(m < n),编程求出m~n之间(包含m、n)所有能被3整除且不能被5整除的数字的和

void test2() {
	int m, n;
	cin >> m >> n;
	int sum = 0;
	if (m >= 100 && m <= 999 && n >= 100 && n <= 999 && m != n) {
		for (int i = m; i <= n; i++) {
			if (i % 3 == 0 && i % 5 != 0) {
				sum += i;
			}
		}
		cout << sum;
	}
	else
	{
		cout << "请重新输入";
	}
}

3.定义一个2行3列的二维数组a和对应指针p,并用指针p实现对数组遍历,实现输出每行第2个元素的值

void test3() {
	int a[2][3] = { {1,2,3},{4,5,6} };
	int* p = a[0];
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 3; j++) {
			if (j == 1) {
				cout << *p << endl;
			}
			p++;
		}
	}
}

4.若已知 f(0) = 2, f(1) = 3,整数n >= 2, 已知 f(n) = f(n - 1) + f(n - 2),

//用递归方法编程求f(10)的值,要求递归逻辑正确,计算f(10)的结果正确

int f11(int n) {
	if (n == 0) {
		return 2;
	}
	else if (n == 1) {
		return 3;
	}
	else
	{
		return f11(n - 1) + f11(n - 2);
	}
}

5.实现一个任意输入两个整数进行加减乘除运算的计算器,主程序中要求提示输入两个整数,

//提示输入运算符(可以输入 + 、 - 、 * 、 / 、 % 等)。要求定义加法add(), 减法sub(), 乘法mul(), 除法div(),
//运算方法要求有返回值。并输出计算结果,除法时要求有除数不能为0的判断(提示“除数不能为0,请重新输入”)

int add(int a,int b) {
	return a + b;
}
int sub(int a,int b) {
	return a - b;
}
int mul(int a, int b) {
	return a * b;
}
double div(double a, double b) {
	if (b == 0) {
		cout << "除数不能为0,请重新输入" << endl;
	}
	else
	{
		return a / b;
	}
}

6.定义a[3][5] = { {11,3,56,12,30},{22,80,65,16,89},{39,10,33,9,81} };

//计算所有奇数元素的和,计算所有偶数元素的和

void test6() {
	int a[3][5]={ {11,3,56,12,30},{22,80,65,16,89},{39,10,33,9,81} };
	int sum_j = 0;
	int sum_o = 0;
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 5; j++) {
			if (a[i][j] % 2 != 0) {
				sum_j += a[i][j];
			}
			else
			{
				sum_o += a[i][j];
			}
		}
	}
	cout << sum_j << endl;
	cout << sum_o << endl;
}

11月

1.定义二维整形数组和指针,指针指向数组,并通过指针遍历数组。

void week3_11_1(){
    int arr[2][3] = {1,2,3,4,5,6};
    int *p = arr[0];
    for(int i = 0;i<2;i++){
        for(int j=0;j<3;j++){
            cout << *p << endl;
            p++;
        }
    }
}

3.定义向量,添加元素并遍历,定义映射,添加元素并遍历

int main(){
    vector<int> v1; //定义向量
    v1.push_back(1); //添加元素
    v1.push_back(2);
    for(int i = 0;i<2;i++){ //遍历和数组一样,用下标
        cout << v1[i] << endl;
    }

     map<int ,string> m1; //定义映射。键、值对
     m1.insert(pair<int ,string>(1,"张世博"));
     m1.insert(pair<int,string>(2,"史会辉"));

     for(auto i=m1.begin(); i!=m1.end();i++){
         cout << i->first << ":" << i->second << endl;
     }
}

4.定义学生类Stu,类中定义 string类型名字name,int 类型年龄age,

int 类型分数score等变量,定义结构体,要求用运算符重载方法,定义排序规则,定义显示函数,用模板库中sort方法,要求用排序规则,实现按年龄升序排序,按分数降序排序,并分别对排序结果进行输出和显示。

class Stu{ //学生
public:
    string name;
    int age;
    Stu(string name,int age){
        this->name = name;
        this->age = age;
    }
};
struct MyR{ //排序规则
    bool operator()(Stu a,Stu b){ //重写()运算符
        return a.age < b.age; //>降
    }
};
int main(){
    //3个学生类的对象
    Stu stu1("张世博",20);
    Stu stu2("张杰",21);
    Stu stu3("郑伟",18);
    
    Stu arr[]={stu1,stu2,stu3};
    sort(arr,arr+3,MyR()); //排序
    for(int i = 0;i<3;i++){
        cout << arr[i].name << arr[i].age << endl;
    }
}
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我为您注释以下SAS代码时,请注意以下几点: 1. `data combined1a;` - 创建一个名为`combined1a`的数据集。 2. `set combined1a1;` - 从名为`combined1a1`的数据集中读取数据。 3. `format sv_js today date9.;` - 设置变量`sv_js`的格式为日期格式(date9.)。 4. `x=input(COMPRESS(SCAN(Instance_Name,1,'D'),'','KD'),best.);` - 从变量`Instance_Name`中提取以字母'D'开头的第一个单词,并将其转换为数值型变量`x`。 5. `if Folder_Name='Additional Cycles' then x=input(ADCNUM,best.);` - 如果变量`Folder_Name`的值为'Additional Cycles',则将变量`ADCNUM`转换为数值型变量`x`。 6. `if Instance_Name='C1D1' then sv_js=EXSTDTCn_f+1;` - 如果变量`Instance_Name`的值为'C1D1',则将变量`sv_js`的值设置为`EXSTDTCn_f+1`。 7. `else if Instance_Name='C1D8' then sv_js=EXSTDTCn_f+7;` - 如果变量`Instance_Name`的值为'C1D8',则将变量`sv_js`的值设置为`EXSTDTCn_f+7`。 8. `else if Instance_Name='C1D15' then sv_js=EXSTDTCn_f+14;` - 如果变量`Instance_Name`的值为'C1D15',则将变量`sv_js`的值设置为`EXSTDTCn_f+14`。 9. `else if Instance_Name='C1D21' then sv_js=EXSTDTCn_f+20;` - 如果变量`Instance_Name`的值为'C1D21',则将变量`sv_js`的值设置为`EXSTDTCn_f+20`。 10. `else if Instance_Name='C1D22' then sv_js=EXSTDTCn_f+21;` - 如果变量`Instance_Name`的值为'C1D22',则将变量`sv_js`的值设置为`EXSTDTCn_f+21`。 11. `else if Instance_Name='C1D28' then sv_js=EXSTDTCn_f+27;` - 如果变量`Instance_Name`的值为'C1D28',则将变量`sv_js`的值设置为`EXSTDTCn_f+27`。 12. `if x>=2 then do;` - 如果变量`x`的值大于等于2,则执行以下操作。 13. `IF EPOCHTYP IN ('剂量探索研究' 'PK扩增入组研究' '食物影响研究') OR EPOCHTP IN ('剂量递增研究' '剂量扩展研究(PK)' '食物影响研究' '剂量扩展研究(密集药代动力学研究)') THEN sv_js = EXSTDTCn_f+(28+(x-1)*21-1)+3;` - 如果变量`EPOCHTYP`的值在指定的列表中,或者变量`EPOCHTP`的值在指定的列表中,则将变量`sv_js`的值设置为`EXSTDTCn_f+(28+(x-1)*21-1)+3`。 14. `IF EPOCHTYP IN ('第一阶段扩大入组研究' '第二阶段扩大入组研究') OR EPOCHTP IN ('剂量扩展研究(非PK)' '剂量延申研究' '剂量扩展研究(非密集药代动力学研究)') THEN sv_js = EXSTDTCn_f+(x*21-1)+3;` - 如果变量`EPOCHTYP`的值在指定的列表中,或者变量`EPOCHTP`的值在指定的列表中,则将变量`sv_js`的值设置为`EXSTDTCn_f+(x*21-1)+3`。 15. `if Instance_Name='结束治疗' then sv_js=EXENDTCn_1+3;` - 如果变量`Instance_Name`的值为'结束治疗',则将变量`sv_js`的值设置为`EXENDTCn_1+3`。 16. `if Instance_Name='结束治疗后4' then sv_js=EXENDTCn_1+30;` - 如果变量`Instance_Name`的值为'结束治疗后4',则将变量`sv_js`的值设置为`EXENDTCn_1+30`。 17. `sv_js=sv_js+21;` - 将变量`sv_js`的值增加21。 希望这些注释能帮助您理解代码的功能和逻辑。如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值