#知识点1

对于一个类来说,如果在主函数中声明了多个对象,写函数的时候可以用指针来写参数,如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
#include <vector>
#include <new>
#include<algorithm>
#include <cmath> 
#include <cstdlib>
#define PI 3.14
using namespace std;
class person{
	public:
		friend void result(person *p);
		person(int a,char b[],int c):age(a),number(c){
				strcpy(name,b);
		}
	private:
		int age;
		char name[20];
		int number;
};
void result(person *p){//如果用到了类的指针,他就只能用->来指向每一个成员,如果在类之外声明的,就无法直接调用private类,除非时友元函数
	cout<<p->age+p->number<<endl;
}
int main()
{
	person student(1,"jill",1),teacher(2,"erin",2);
	result(&student);//因为是指针,所以用&
	return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
#include <vector>
#include <new>
#include<algorithm>
#include <cmath> 
#include <cstdlib>
#define PI 3.14
using namespace std;
struct student{
	int age;
	int a;
	int b;
};
void hi(student *a){
	cout<<a->a;
}
int main()
{
	int n;
	cin>>n;
	student stu[n];
	for(int i=0;i<n;i++){
		cin>>stu[i].a>>stu[i].age>>stu[i].b;
	}
	hi(&stu[0]);
	return 0;
}

对于struct来说,他和class的区别就是其中所有的成员都是public的,不需要声明友元函数来访问私有元素。

#知识点二

如何找到一个数有多少个因数(不是质数,质数的因数只有一和他本身)

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int num;
    int count = 0;
    cout << "请输入一个数: ";
    cin >> num;
    for (int i = 1; i * i <= num; ++i) {  // 只遍历到平方根
        if (num % i == 0) {  // 如果该数能被 i 整除
            if (i * i == num) {  // 如果 i 是 num 的平方根,有两个一样的因数,就只算一个
                count++;  // 只加 1
            } else {
                count += 2;  // 否则加 2,因为 i 和 num/i 都是因数
            }
        }
    }
    cout << num << " 的因数个数为: " << count << endl;
    return 0;
}

如果是质数,则如下:

#include <iostream>
#include <cmath>
using namespace std;

bool isPrime(int num) {
    if (num <= 1) {  // 小于等于 1 的数不是质数
        return false;
    }
    if (num == 2) {  // 2 是质数
        return true;
    }
    if (num % 2 == 0) {  // 偶数(除 2 外)不是质数
        return false;
    }
    int sqrtNum = sqrt(num);  // 计算 num 的平方根
    for (int i = 3; i <= sqrtNum; i += 2) {  // 从 3 开始,只检查奇数,直到 sqrtNum
        if (num % i == 0) {  // 如果能被整除,不是质数
            return false;
        }
    }
    return true;  // 否则是质数
}

int main() {
    int num;
    cout << "请输入一个数: ";
    cin >> num;
    if (isPrime(num)) {  // 调用 isPrime 函数判断是否为质数
        cout << num << " 是一个质数。" << endl;
    } else {
        cout << num << " 不是一个质数。" << endl;
    }
    return 0;
}

#结构体链表(用于删除数据)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
using namespace std;
struct student{
	int id;
	char name[101];
	int result;
	struct student *next;//结构体指针,用于作为中间变量
}; 
typedef struct student stu;//用stu代替struct student的作用
int main(){
	stu *head,*tail,*p;
	p=(stu*)malloc(sizeof(stu));//声明一个struct student 类型的动态指针,大小是struct student 
	head=p;
	tail=p;
	head->next=NULL;
	cin>>p->id;
	while(p->id!=0){
		cin>>p->name;
		cin>>p->result;
		p=(stu*)malloc(sizeof(stu));
		tail->next=p;
		tail=p;
		tail->next=NULL;
		cin>>p->id;
	}
	p=head;
	while(p!=NULL){
		if(p->id!=0)cout<<p->id<<" "<<p->name<<" "<<p->result<<endl;
		p=p->next;
	}
	return 0;
}