收藏 分销(赏)

2021年C程序设计基整理题库.doc

上传人:二*** 文档编号:4515413 上传时间:2024-09-26 格式:DOC 页数:23 大小:69.04KB 下载积分:5 金币
下载 相关 举报
2021年C程序设计基整理题库.doc_第1页
第1页 / 共23页
本文档共23页,全文阅读请下载到手机保存,查看更方便
资源描述
《C++程序设计基本》题库 一、选取题 1.下面不属于面向对象语言特性是___B___。 A.继承性 B.兼容性 C.多态性 D.封装性 2. C++语言是从初期C语言发展演变而来,与C语言相比,它在求解问题上进行最大改进是___B___。 A、面向过程   B、面向对象   C、安全性   D、复用性 3.C++基本数据类型中,用来判断真假数据类型为 B 。 A、int B、bool C、char D、float 4.关于字符常量写法,错误是__A____。 A、'/' B、"a" C、'\t' D、'\0' 5. 下面C++标记符命名对的是:___D___。 A、class B、@mail C、1var D、_inline 6. 下面基本数据类型初始化表达式错误是___C___。 A、int i(5); B、float f=3.56f; C、char c='ab' D、double f=3.56; 7. C++对C语言作了诸多改进,下列描述中___D___使得C语言发生了质变,从面向过程变成了面向对象。 A、增长了某些新运算符; B、容许函数重载,并容许设立缺省参数; C、规定函数阐明必要用原型; D、引进了类和对象概念; 8. 在C++中,关于下列函数参数描述中,__B ____是对的。 A、C++语言中,实参是按照自左至右顺序求值; B、若一种参数设立了默认值,则其右边所有参数都具备默认值; C、函数参数默认值不容许是表达式; D、设立参数默认值时,应当所有参数都设立; 9. 重载函数在调用时选取根据中,___D___是错误。 A、参数个数; B、参数类型; C、函数名字; D、函数类型。 10. 已知程序中已经定义了函数test,其原型是int test(int,int,double);,则下列重载形式中不对的是____A__。 A、char test(int,int,int); B、double test(int,int,double); C、int test(int,int,float); D、int test(int,double) ; 11. 关于类概念下列说法对的是___C___。 A、类和构造体是同一种概念 B、类数据成员外界都不可访问 C、类可以没有显式构造函数 D、类一定要有显式析构函数 12. 关于类和对象说法对的是______。 A、面向对象程序设计办法通过数据抽象和行为抽象,封装形成了“类” B、类具备行为由变量表达。 C、 类属性普通由函数表达,且定义为public D、类是详细,对象是抽象 13. 关于类和对象不对的说法是___C___。 A、类是一种类型,它封装了数据和操作 B、对象是类实例 C、一种类对象只有一种 D、一种对象必属于某个类 14.已知A是一种类,则执行语句 “A a;”时,将自动调用该类__A____。 A、 构造函数    B、拷贝构造函数 C、析构函数   D、数据成员 15. 在下列核心字中,用于阐明类中公有成员是__A____。 A.public; B.private; C.protected; D.friend 16. __D____是析构函数特性。  A、析构函数可以有一种或各种参数;  B、析构函数名与类名不同;  C、析构函数定义只能在类体内; D、 一种类中只能定义一种析构函数; 17. 如果类成员在定义时使用核心字public来设立访问权限,则该成员是__A____。 A.公有类型 B. 私有类型 C. 受保护类型 D. 任意类型 18. 关于成员函数特性下列描述中,___A___是错误。  A、成员函数一定是内联函数;  B、成员函数可以重载;  C、成员函数可以设立缺省参数值; D、 成员函数可以是静态; 19. 下列描述中,___D___是不对的。 A、面向对象程序设计可重用性较好; B、对象之间通过消息进行信息传递; C、多态性体现了行为共享; D、面向对象办法核心是继承; 20.派生类对象对它基类成员中 A 是可以访问。   A、公有继承公有成员;   B、公有继承私有成员;   C、公有继承保护成员; D、私有继承公有成员; 21.下列标记符定义中合法是( A/C )。 A.-abc B. for C. intl D.”how” 22.执行下列语言后,i和j值分别为( C )。 int i=5,j=8,t; int &ri=i; int &rj=j; t=ri;ri=rj;rj=t; A. 5和5 B. 5和8 C. 8和5 D.8和8 23.下列关于C++函数论述中对的是( D )。 A. 函数在调用之前必要先声明 B. 每个函数都必要返回一种值 C. 每个函数至少要有一种参数 D. 函数可以自己调用自己 24.在调用函数时,如果实参是简朴变量,它与相应形参之间数据传递方式是( B )。 A. 地址传递 B. 单向值传递 C. 双向值传递 D.不拟定 25.系统在调用重载函数时往往依照某些条件拟定哪个重载函数被调用,在下列选项中不能被作为根据是( D )。 A. 参数个数 B. 参数类型 C. 函数名称 D.函数类型 26.标志着C++从面相过程变成面相对象重要办法是( D )。 A.增长了新运算符 B.容许函数重载,设立默认参数 C.规定函数声明必要用原型 D.引用了类和对象概念 27.关于类和对象说法错误是( C )。 A.对象是类一种实例 B.任何一种对象只能属于一种详细类 C.一种类只能有一种对象 D.类与对象关系和数据类型与变量关系相似 28.对任意一种类,析构函数个数最多为( B )个。 A.0 .B.1 C.2 D.4 29.已知A是一种类,则执行语句A a;时,将自动调用该类( B )。 A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数 30.下述静态数据成员特性中,( D )是错误。 A.阐明数据成员时前边要加修饰符static B.静态数据成员要在类体外进行初始化 C.引用静态数据成员时,要在静态数据成员名前加“类名”和作用域运算符 D.静态数据成员不是所有对象所共有。 31. 下面关于C++构造函数和析构函数说法对的是 D 。 A、如果不声明任何构造函数,系统会赋给一种默认(无参)构造函数。如果自定义了构造函数,系统也会赋给默认构造函数。 B、析构函数是用来完毕对象被删除前清理工作,它可以接受参数。 C、构造函数和析构函数都可以是虚函数。 D、构造办法是与类同名办法,它可以重载。 32.已知类D继承类B,且有声明语句B b,*p;D d;下面赋值语句错误是___C___。 A、d=b; B、p=&d; C、b=d; D、p=&b; 33.下列关于继承和派生论述中,对的是______。 A、如果一种派生类私有继承其基类,则该派生类中成员不能访问基类保护成员 B、派生类成员函数可以访问基类所有成员 C、在创立派生类对象时,先调用派生类构造函数,再调用基类构造函数。 D、在销毁派生类对象时,先调用派生类析构函数,再调用基类析构函数。 34.C++语言跳转语句中,对于break和continue说法对的是_ B A、break语句只应用与循环体中 B、continue语句只应用于循环体中 C、break是无条件跳转语句,continue不是 D、break和continue都可以用于跳出if条件分支。 35.下面是关于派生类声明开始某些,其中对的是___D___。 A、class virtual B:public A B、virtual class B:public A C、class B:public A virtual D、class B:virtual public A 36. 对基类和派生类关系描述中, B 是错。 A、派生类是基类详细化; B、派生类是基类子集; C、派生类是基类定义延续; D、派生类是基类组合。 37.下列运算符中,不能被重载是 C 。 A.&& B.- C. .* D.++ 38.静态数据成员初始化必要在 B 。 A、类内 B、类外 C、在构造函数内 D、静态成员函数内 39.关于虚函数与抽象类,下列表述对的是__D____。 A、虚函数声明可以同步出当前类定义中函数原型声明中,和成员函数实现时候。 B、虚函数不能声明为静态函数。 C、抽象类可以实例化。 D、 派生类必要重新定义基类虚函数。 40. 设立虚基类目是 B 。 A. 简化程序; B. 消除二义性; C. 提高运营效率; D. 减少目的代码。 41.执行语句:int a=5,*pa;pa=&a;后,下面描述错误是( A )。 A.pa值为5 B. pa指向整形变量a C. *pa表达变量a值 D. pa值是变量a地址 42.假设 a=5,执行下列语句后,a 值为( D )。 switch(a) { case 4: a++; case 5: a- -; case 6: ++a:break; case 7: - - a; default:a++; } A. 2 B. 3 C. 4 D. 5 43.有函数原型声明语句如下: void fun(int x,int y=10,char z=’# ’);下面调用语句中不合法是(C )。 A.fun(5) B.fun(5,8) C.fun(6,’*’) D.fun(10,10,’*’) 44.调用函数时,如果实参是一种数组名,则向函数传递是( B )。 A. 数组长度 B. 数组首地址 C. 数组中每个元素地址 D. 数组中每个元素值 45.在C++中,关于下列设立参数默认值描述中,对的是( C )。 A. 不容许设立参数默认值 B.设立参数默认值只能在定义函数时设立 C. 设立参数默认值时,应当是先设立右边,再设立左边 D. 设立参数默认值时,应当所有参数都设立 46.关于类说法错误是( D )。 A.类是一种顾客自定义数据类型 B.只有类中成员函数才干存取类中私有数据 C.在类中如果不作特殊阐明,所指数据均为私有类型 D. 在类中如果不作特殊阐明,所指成员函数均为公有类型 47.下列关于构造函数描述中,错误是( D )。 A.构造函数函数名与类名相似 B.构造函数可以重载 C.构造函数可以设立默认参数 D.构造函数必要指定类型阐明 48.普通拷贝构造函数参数是( D )。 A.某个对象名 B.某个对象成员名 C.某个对象指针名 D.某个对象引用名 49.已知A是一种类,则执行语句A a;时,将自动调用该类( B )。 A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数 50.关于友元,下面说法中对的是( A )。 A.一种类成员函数可以阐明为另一种类友元 B.当一种类阐明为另一种类友元时,这个类中第一种成员可以访问另一种类 C.如果类A是类B友元,类B又是类C友元,则类A是类C友元 D.如果类A是类B友元,类B也是类A友元 二、填空题 1. 在面向对象程序设计中,将一类对象公共性质进行数据抽象和行为抽象,然后将抽象得到数据和行为进行封装,形成了_ 类 ,它实例称为_ 对象 。 2. C++基本数据类型中, 布尔 类型只有两个值false和true。 3. 函数形参和实参结合方式有值调用、传地址调用、引用调用,其中, 传地址 调用方式和 引用 调用方式形参变化能引起实参变化。 4. 默认形参值必要按照__ _ 从右向左 顺序声明。 5. 在C++程序中,同名函数如果形参 参数类型 或 个数 不同,可以重载。 6. 面向对象程序设计重要特性是_ 封装 、_ 继承 和抽象性、_ 多态 。 7. 在面向对象程序设计中,把对象一组属性和操作组装在一起,形成一种独立实体,体现了面向对象办法_ 封装 特性;而同一种消息被不同类型对象接受时产生不同行为,体现是面向对象办法_ 多态 特性。 8. C++中定义“类”核心字是_ class __。 9. 类访问权限共有三种,分别为 public _、 private _和protected。类中被阐明为_ public __访问权限成员,可以被该类对象访问到。 private __访问权限和 protected __访问权限成员,类外函数和对象不能访问。 10. 类构造函数函数名与_ 类名 相似。类析构函数函数名与_ 相似。 11. C++中动态内存分派操作符是 。 运算符用于撤销由new建立对象,释放对象指针所指向内存空间。 12. 一种类继承自各种父类,称为 多继承 。 13. 在类中,使用 static 核心字进行静态成员声明。友元函数是用核心字 friend __修饰成员函数。C++中使用核心字 const __定义符号常量。 14. 基类中被阐明为_ private __成员只能被其派生类成员函数访问,不能被外界函数访问。 带有纯虚函数类是 抽象类 。 15. 惯用C++原则输入输出流对象是cin和 cout 。 16.类构造函数函数名与 类名 相似。 17.在类中,使用 static 核心字进行静态成员声明。 18.惯用C++原则输入输出流对象是 cin 和cout。 19.一种完整程序中必要有一种名为 main 函数。 20.在C++一种程序中可以定义各种同名函数,称为 重载 。 21.友元函数是用核心字_ friend __修饰成员函数。 22.在面向对象程序设计中,将一类对象公共性质进行数据抽象和行为抽象,然后将抽象得到数据和行为进行封装,形成了_ 类 ,它实例称为_ 对象 。 23. 面向对象程序设计重要特性是封装性、继承和 多态 、 抽象性 。 24.一种完整程序中必要有一种名为 mian 函数。 25.在C++一种程序中可以定义各种同名函数,称为 重载 。 26.在一种函数定义或声明前加上核心字 inline ,该函数就声明为内联函数。 27.在C++中,类成员有3种访问权限,其中 public 成员提供应顾客接口功能。 28.被声明为const数据成员只容许声明为 成员函数访问。 29.在类派生与继承中,可以中断派生链继承方式是 私有继承 。 30.在面向对象程序设计中,将一类对象公共性质进行数据抽象和行为抽象,然后将抽象得到数据和行为进行封装,形成了_ 类 ,它实例称为_ 对象 。 三、判断题 1. 在C++中,标记符Max和MAX是同样。× 2. 被定义为bool类型变量,取值即为真或假。√ 3. 对象是属性和行为封装体。× 4. 在C++语言中,使用struct(构造体)定义类与使用class定义类是同样。 5. 如果一种类所有对象都共享某一种变量,则应当将该变量定义为该类私有成员。× 6. 构造函数和析构函数都不能重载。× 7. 派生类是从基类派生出来,它不能再生成新派生类。× 8. 派生类继承方式中有两种:公有继承和私有继承。× 9. 在私有继承中,基类中所有成员对派生类都是不可见。× 10. 参数个数和类型都相似函数也可以重载。× 11.C++中标记符内大小写字母是没有区别。× 12.C++中只能使用注释符号(//),不能使用注释符号(/*…*/)。× 13.常量87.363数据类型是float。√ 14.引用是某个变量别名,对引用操作就是对被引用变量操作。√ 15.同一程序中局部变量和全局变量不可以同名。× 16.在C++程序中,循环体中可以浮现break语句或continue语句。√ 17.switch语句中可以没有default子句。× 18.没用参数两个函数是不能重载。√ 19.使用核心字class定义类中缺省访问权限是私有(private)。√ 20.返回值类型、参数个数和类型都相似函数也可以重载。× 21.在公有继承中,基类中公有成员和私有成员在派生类中都是可见。× 22.构造函数可以声明为虚函数。× 23.析构函数是一种函数体为空成员函数。× 24.构造函数和析构函数都不能重载。× 25.可以在类构造函数中对静态数据成员进行初始化。× 26.一种函数功能不太复杂,但被频繁调用,可以声明为内联函数。√ 27.类访问权限重要有public、protected和private。√ 28.类构造函数名与类名相似。√ 29.类析构函数名与类名相似。× 30.保护继承方式下基类保护成员在派生类中仍是保护成员。√ 四、程序题 1. 填空完毕下面对Point类定义。 Class___①__ Point //声明Point类 { public: Point(int xx=0,int yy=0){X=xx;Y=yy;} Point (Point &p); //复制构造函数 int GetX() {return X;} int GetY() {return Y;} Private ___②__: int X,Y; //X,Y为私有成员 }; 2. 填空完毕下面对Time类定义。 _class__①__ Time //声明Time类 { _public__②__: void setTime(int h,int m,int s) //setTime()为公有成员函数 {hour=h; minute=m; second=s} void showTime() { cout<<hour<<”:”<<minute<<”:”<<second<<endl; } private: int hour,minute,second; //hour,minute,second为私有成员 }; 3. 填空完毕下面对Time类定义。 class Time //声明Time类 { _public__①__: void setTime(int h,int m,int s) //setTime()为公有成员函数 {hour=h; minute=m; second=s} void showTime() { cout<<hour<<”:”<<minute<<”:”<<second<<endl; } _private__②__: int hour,minute,second; //hour,minute,second为私有成员 }; 4.定义一种时钟类Clock,有私有数据成员:时(hour)、分(minute)、秒(second),有公有成员函数setTime()实现对时钟设立,以及公有成员函数showTime()实现时间输出。 class__ Clock //声明clock类 { _public__: void setTime(int h,int m,int s) //setTime()为公有成员函数 {hour=h; minute=m; second=s} void showTime() { cout<<hour<<”:”<<minute<<”:”<<second<<endl; } private: int hour,minute,second; //hour,minute,second为私有成员 }; 5.有如下程序 class Base{ protected: Base(){cout<<'A';} Base(char c){cout<<c;} }; class Derived:public Base{ public: Derived(char c){cout<<c;} }; void main(){ Derived d1('B'); } 执行这个程序屏幕上将显示输出___c_ __。 6. 有如下代码 class Base{ private: void fun1() const { cout<<"fun1";} protected: void fun2() const { cout<<"fun2";} public: void fun3() const { cout<<"fun3";} }; class Derived:protected Base{ private: void fun4() const { cout<<"fun4";} public: void fun () { fun1() ;//① fun2() ;//② fun3() ;//③ fun4() ;//④ } }; 其中有语法错误语句是_____ _。 7.定义一种哺乳动物类Mammal,有私有数据成员age,有公有成员函数SetAge( )和GetAge()实现age赋值和输出。规定代码书写规范。 8. 定义一种类Score,它包括私有数据成员english_score(英语分数),公有成员函数setScore()和printScore(),其中,setScore()用来设立english_score值,printScore()用来输出english_score值。在主程序中定义类Score两个对象stu1和stu2,其英语成绩分别为80.5和90.5。 9. 声明一种Dog类,包括age、weight等属性,以及对这些属性操作办法。实现并测试这个类。 10. 定义一种Circle类,有数据成员radius(半径),成员函数getArea(),计算圆面积,构造一种Circle对象进行测试。 #include <iostream> using namespace std; const double PI=3.14159265; class circle { public: circle(double r) { radius = r;} virtual double area() { return 0.0;} virtual double volume() { return 0.0;} protected: double radius; }; class column:public circle { public: column( double r,double h ):circle( r ) double area() { return PI * radius * radius; } }; int main() { circle *p; p = &cobj; cout << "圆:" << endl; cout << "面积 = " << p-> area() << endl; } 11. 简述面向对象程序设计四个重要特性和编程方式。 12. 有如下程序 class B0 //基类B0声明 { public: void display(){cout<<"B0::display()"<<endl;} }; class B1:public B0 //基类B1声明 { public: void display(){cout<<"B1::display()"<<endl;} }; class D1:public B1 //派生类D1声明 { public: void display(){cout<<"D1::display()"<<endl;} }; void fun(B0 *ptr) { ptr->display(); } void main() { B0 b0; //声明B0类对象 B1 b1; //声明B1类对象 D1 d1; //声明D1类对象 B0 *p; //声明B0类指针 p=&b0; //B0类指针指向B0类对象 fun(p); p=&b1; //B0类指针指向B1类对象 fun(p); p=&d1; //B0类指针指向D1类对象 fun(p); } 执行这个程序屏幕上将显示输出 ① _ _ ②_ _ _ ③ _ _ 。 13.执行下列语句: 输出成果 (1)5 。 #include<iostream.h> void main(){ int arrayA[5]={1,3,5,7,9}; int i=2; cout<<"arrayA["<<i<<"]="<<*(arrayA+i)<<endl; } 14.填空完毕下面对X类定义 class x { (1)public //公有属性; (2) x(int a,int b) //构造函数 { a=a1; b=b1; } x() (3) //默认构造函数 { a=0; b=0; } x(x&obj) (4) //拷贝构造函数 { a =obj.a; b=obj.b; } private: int a,b; }; 15.编写一种程序,输入n本书书名,将书名排序,输出排序后书名。 #include<iostream> #include <string> using namespace std; void main(){ Const(1) int n=5; // 定义为常量 string book[n]; string temp; int i,j; for(i=0;i<n;i++){ cout<<"input no."<<(i+1)<<" book name:"; Cin>> book[i] (2) ; //通过cin 输入书名; } for(i=1;i<n;i++) for(j=0;j<i;j++){ if (book[i]<book[j]){ Temp=book[i];book[i]=book[j];book[j]=temp ;(3) //实现book[i]、book[j]排序 } } for(i=0;i<n;i++) cout<<book[i]<<endl;(4) ; //通过cout 对排序后书名输出; } 16.执行下列语句,输出成果为: (1) 15 #include<iostream.h> void main() {int x=4; int *p;p=&x; *p=15; cout<<"value of *p is"<<*p<<endl; } 17.填空完毕下面对CDate类定义。 class(1) CDate // CDate 类声明; { public: CDate(2) (int y,int m,int d); // CDate类构造函数声明 void setDate(int y,int m,int d); void display() { cout<<year<<","<<month<<","<<day<<endl; } private(3) : int year,month,day ; // year,month,day声明为私有成员; }; Void CDate::setdata(int y,int m,int d)(4) //构造函数实现 { year=y; month=m; day=d; } 18.编写一种程序,设计一种类Trig,给定三角形三条边长x,y,z,包括一种友元函数计算两个三角形面积之和。 #include <iostream.h> #include <math.h> class Trig { public: Trig(int a=0,int b=0,int c=0) { x=a;y=b;z=c; (1) // 实现构造函数;} friend float areasum(Trig t1,Trig t2) { Float s,area return(t1.area()+t2.area()); (2) ; //通过友函数,直接返回t1,t2面积之和;} float area() { float s,area; s=(x+y+z)/2.0; area=sqrt(s*(s-x)*(s-y)*(s-z)); return area; } (3) //计算三角形面积,并返回;} private: int x,y,z; }; void main() { float sum; Trig (4) t1(3,4,5),t2(5,6,7) ; // 类Trig创立对象; sum=areasum(t1,t2) ; cout<<"两三角形面积和为:"<<sum<<endl;} 五、简答题 1、构造函数和析构函数作用是什么? 构造函数作用是创立对象时为数据成员分派存储空间并赋初值。析构函数作用是在撤销对象时清除并释放内存空间。 2、虚函数和纯虚函数区别是什么? 虚函数定义时冠以核心字virtual,自身有实当代码,作用是引导基类指针依照指向对象调用类体系中不同重载版本函数。 纯虚函数是指在阐明时代码“为0”虚函数,即纯虚函数自身并没有实当代码,必要通过它派生类定义实现版本。 3、类中公有(public)成员和私有(private)成员有什么区别? 类中共有成员既可以被类成员函数访问,也可以在类外程序中通过对象被访问;私有成员只能被该类成员函数和友元函数来访问。 4、继承有哪三种继承方式? 继承方式重要表达派生类继承基类时采用继承方式,重要有三种,即公有继承、私有继承和保护继承。 (1)公有继承(public)。 公有继承特点是基类公有成员和保护成员作为派生类成员时,它们都保持原有状态,而基类私有成员依然是私有。 (2)私有继承(private) 私有继承特点是基类公有成员和保护成员作为派生类私有成员,并且不能被这个派生类子类访问。 (3)保护继承(protected) 保护继承特点是基类所有公有成员和保护成员都成为派生类保护成员,并且只能被它派生类成员函数或友元访问,基类私有成员依然是私有。 5、类中构造函数作用有哪些? 6、拷贝构造函数作用是什么? 拷贝构造函数作用是对象之间复制。拷贝构造函数在如下三种状况下会被复制: (1)用已经存在对象去初始化创立同类一种新对象。 (2)对象作为函数参数(将实参对象拷贝给形参对象)。 (3)函数返回值为一种对象(将返回对象拷贝给一种暂时对象) 7、类成员涉及哪两种成员?从访问权限上看,有哪三个属性? 类成员涉及成员函数和成员变量。三种属性:public、protected、private 8、什么是友元?什么是友元类 ? 友元可以是一种函数,也可以是一种类,分别称为友元函数和友元类。当一种类作为另一种类友元时,友元类中所有成员函数都是另一种类友元函数。友元函数不是当前类成员函数,但它可以访问该类所有对象成员,涉及公有成员,私有成员和保护成员。 9、在定义派生类过程中,如何对基类数据成员进行初始化? 由于基类在派生类中普通是隐藏,因此依序通过调用基类构造函数来设定基类数据成员初值。它格式为<派生类名>(形参表):基类1(参数表),基类2(参数表)…对象成员1(参数表),对象成员2(参数表)…{}
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服