收藏 分销(赏)

广西区计算机等级二级C试题及答案.doc

上传人:xrp****65 文档编号:7023902 上传时间:2024-12-25 格式:DOC 页数:45 大小:76.50KB
下载 相关 举报
广西区计算机等级二级C试题及答案.doc_第1页
第1页 / 共45页
广西区计算机等级二级C试题及答案.doc_第2页
第2页 / 共45页
点击查看更多>>
资源描述
广西区计算机等级二级C试题及答案 广西区计算机等级二级C试题   [     点击数:488    更新时间:2006-2-18    作者:wla ]   减小字体 增大字体 选择题(50) 1、c语言规定:在一个源程序中,main函数的位置 A     A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 2、下面程序的运行结果是______。 main()  {struct cmplx {int x;                 int y;                 }cnum[2]={1,3,2,7};   printf(”%d\n”,cnum[0].y/cnum[0].x  *cnum[l].x);  } A)0       B)1       C)3       D)6 3、表达式18/4*2/8值的数据类型为_A____ A)int    B)float    C)double    D)不确定 4、以下不正确的叙述是 D     。 A)在c程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 c)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变。 D)当从键盘输入数据时,对于整型变量只能输入整型数值.对于实型变量只能输入实型数值。 5、以下程序的运行结果是______。 #include "stdio.h” main()   {struct date      {int year,month,day;       }today;    printf(“%d\n”,sizeof(struct date));    }  A)6     B)8     C)10      D)12 6、以下说法正确的是    。 A)输入项可以为一实型常量,如scanf("%f",3.5); B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d”); C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf  (“%4.2f",&f); D)当输入数据时,必须指明变量的地址,如scanf(“%f",&f); 7、己知各变量的类型说明如下: int  i=8,k,a,b; unsigned long    w=55; double    x=1.42,y=5.2; 则以下符合c语言语法的表达式是_____。 A)a+=a-=(b=4)*(a=3)    B)a=a*3=2 C)x%(-3)              D)y=float(i) 8、已知ch是字符型变量,下面不正确的赋值语句是______。 A)ch='a+b';    B)  ch='\0';   C)ch='7'+'9';    D)ch=5+9 9、有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c),为使变量a的值为1.b为3,c为2,从键盘输入数据的正确形式应当是______。 A)132<回车> B)1,3,2<回车> C)a=l b=3c=2<回车> D)a=1,b=3,c=2<回车> 10、逻辑运算符两侧运算对象的数据类型_____。 A)只能是0或l B)只能是0或非0正数 c)只能是整型或字符型数据 D)可以是任何类型的数据 11、一个c程序的执行是从       。 A)本程序的main函数开始,到main函数结束 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结柬 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 12、以下程序的输出结果是________。 main() {int a=100,x=l0,y=20,ok1=5,ok2=0;   if(x<y)     if(y!=10) if(!ok1)          a=1;  else       if(ok2)   a=10; a=-1;   printf("%d\n",a); } A)1    B)0      C)-1     D)值不确定 13、以下正确的叙述是_____。 A)C语言允许main函数带形参,且形参个数和形参名均可由用户指定 B)C语言允许main函数带形参,形参名只能是argc和argv C)当main函数带有形参时,传给形参的值只能从命令行中得到 D)若有说明:main(int argc,char  *argv),则形参argc的值必须大于1 14、阅读以下程序: main()  {int a[l0]={2,4,6,8,10,12,14,16,18,20},*p;   p=a;   printf(“%x\n”,p),   printf(“%x\n”,p+9), 若假设第一个printf语句输出的是ffca,则第二个printf语句的输出是______。 A) ffdd        B)ffdc        C)ffde         D)ffcd 15、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其正确的解释是_____。 main()   {int *p,*q,a,b;    p=&a;    printf("input a:");    scanf("%d",*p);    ……    } A)*p表示的是指针变量p的地址 B)*p表示的是变量a的值,而不是变量a的地址 c)*p表示的是指针变量p的值 D)*p只能用来说明p是—个指针变量 16、设有程序段 int k=10; while(k=0)  k=k-1; 则下面描述中正确的是_______。 A)while循环执行10次           B)循环是无限循环 C)循环体语句一次也不执行       D)循环体语句执行 17、为了避免在嵌套的条件语句if—else中产生二义性,c语言规定: else总是与_______配对。 A)缩排位置相同的if    B)其之前最近的if c)其之后最近的if      D)同一行上的if 18、以下程序的运行结果是_____。 main() { int m=5;   if(m++>5) printf("%d\n",m);   else     printf("%d\n",m--); } A) 4         B) 5      C)6      D)7 19、执行以下语句后b的值为_____。 int a=5,b=6,w=1,x=2,y=3,z=4; (a=w>x)&&(b=y>z);   A)5    B)0    C)6    D)1 20、若有定义:int  a[5];则a数组中首元素的地址可以表示为_____。 A)&a    B)a+l    C)a    D)&a[1] 21、以下程序段_____。 x=-1; do  {x=x*x;}  while(!x); A)是死循环          B)循环执行二次 C)循环执行一次      D)有语法错误 22、若i为整型变量,则循环执行次数是_____。 for(i=2;i==0;)  printf("%d",i--); A)无限次    B)0次    C)1次    D)2次 23、以下有关宏替换的叙述不正确的是______。 A)宏替换不占用运行时间    B)宏名无类型 C)宏替换只是字符替换      D)宏名必须用大写字母表示 24、下面程序的运行结果是______。 #include<stdio.h> main()   {int  y=10;    do{y--;}while(--y);    printf("%d\n",y--);   } A)-1     B)1     C)8     D)0 25、下列四组选项中,均不含c语言关键字的选项是______。 A)define    B)getc    C)include    D)while   IF          char      scanf        go   type        printf    case         pow 26、下面程序的运行结果是____。 #include<stdio.h> void delch(char  *s) {int i,j;  char  *a;  a=s;  for(i=0,j=0;a[i]!='\0';i++)    if(a[i]>='0'&&a[i]<='9')  {s[j]=a[i];j++;}   s[j]='\0';  } main()  {char *item="a34bc";   delch(item);   printf("\n%s",item);   } A)abc      B)34      C)a34       D)a34bc 27、下列程序段不是死循环的是____。 A)int i=100;   while(1)   {i=i%100+1;     if(i>l00)break ;    } B)for( ; ; ); C)int k=0;   do{++k; }  while(k>=0); D)int s=365;   while(s); --s; 28、根据定义和数据的插入方式,输入语句的正确形式为_____。 已有定义:float f1,f2; 数据的输入方式:4.52            3.5 A)scanf("%f,%f",&f1,&f2); B)scanf("%f%f",&f1,&f2); C)scanf("%3.2f %2.1f",&f1,&f2); D)scanf("%3.2f,%2.1f",&f1,&f2); 29、在C语言中,引用数组元素时,其数组下标的数据类型允许是_____ 。 A)整型常量               B)整型表达式 C)整型常量或整型表达式    D)任何类型的表达式 30、下面程序的运行结果是 #include<stdio.h> main()   {int  num=0;    while(num<=2)     {num++;     printf("%d\n",num);     }    } A) 1     B)1     C)1      D)1      2       2        2              3        3                       4 31、若有如下语句 int x=3; do{printf("%d\n",x-=2);} while(!(--x)); 则上面程序段_____。 A)输出的是1  B)输出的是l和-2  C)输出的是3和0   D)是死循环 32、以下能对一维数组a进行正确初始化的语句是______。 A)int a[l0]=(0,0,0,0,0);    B)  int a[l0]={}; C)int a[]={0};              D)  int a[10]={10*1 33、以下不正确的定义语句是_____。 A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int  y[5]={0,1,3,5,7,9}; C)char  c1[]=('1','2','3'',4','5'); D)char  c2[]={'\x10','\xa','\x8'}; 34、下面程序______(每行程序前面的数字表示行号) 1  main() 2  { 3   float a[0]={0.0}; 4   int i; 5   for(i=0;i<3;i++) scanf("%d",&a[i]); 6   for(i=1;i<10;i++) a[0]=a[0]+a[i]; 7   printf("%f\n",a[0];  } A)没有错误       B)第3行有错误 C)第5行有错误    D)第7行有错误 35、下面程序段的运行结果是____。 char c[5]={'a','b','\0','c','\0'}; printf("%s",c);} A)'a''b'    B)ab    C)ab c    D)abc 36、下面四个选项中,均是合法的用户标识符的选项是______。 A)A     B)float     C)b_a     D)_123 P_O    1ao         goto      temp do       _A        int       INT 37、以下正确的函数形式是____。 A)double fun(int x,int y)     {z=x+y,return z;) B)fun(int x,y)     {int z;      return z;} C)fun(x,y)       { int x,y;  double z;}         z=x+y;return z;} D)double fun(int x,int y)       { double z;         z=x+y;return z;} 38、若运行以下程序时,从键盘输入3.6   2.4<CR> (<CR>表示回车),则下面程序的运行结果是_______。 #include<math.h> #include<stdio.h> main()  {float x,y,z;   scanf("%f%f",&x,&y);   z=x/y;   while(1)    {if(fabs(z)>1.0) {x=y;y=z;z=x/y};     else break;     }   printf('%f\n",y);  } A)1.500000       B)1.600000    C)2.000000     D)2.400000 39、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为____。(假设a[0][0]位于数组的第一个位置上。) A)i*m+j    B)j*m+i    C)i*m+j-1    D)i*m+j+1 40、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 if(x>y) z=x;x=y;y=z; A)x=10,y=20,z=30 B)x=20,y=30,z=30 C)x=20,y=30,z=10 D)x=20,y=30,z=20 41、以下叙述不正确的是      。 A)一个c源程序可由一个或多个函数组成 B)一个c源程序必须包含一个main函数 C)c程序的基本组成单位是函数 D)在c程序中,注释说明只能位于一条语句的后面 42、若有定义:int  *p[4];则标识符p_____。 A)是一个指向整型变量的指针 B)是一个指针数组名 C)是一个指针,它指向一个含有四个整型元素的一维数组 D)说明不合法 43、以下关于运算符优先顺序的描述中正确的是——。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 44、若有说明:int a[3][4]=(0);则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 45、下述对C语言字符数组的描述中错误的是_____。 A)字符数组可以存放字符串 B)字符数组的字符串可以整体输入、输出 C)可以在赋值语句中通过赋值运算符"="字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 46、判断字符串a和b是否相等,应当使用_____。 A)if(a==b)           B)if(a=b) C)if(strcpy(a,b))       D)if(strcmp(a,b)) 47、若有以下说明和语句: struct   student  {int  age;   int  num;  }std,*p;  p=&std; 则以下对结构体变量std中成员age的引用方式不正确的是_______。  A)std.age        B)  p->age  C)(*p).age       D)  *p.age 48、以下正确的说法是______。 A)定义函数时,形参的类型说明可以放在函数体内 B)return后边的值不能为表达式 C)如果函数值的类型与返回值类型不一致,以函数值类型为准 D)如果形参与实参的类型不一致,以实参类型为准 49、以下不正确的说法为_____。 A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有效 D)在函数内的复合语句中定义的变量在本函数范围内有效 50、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列 顺序为    A)char<int<long int=float<double B)char=int<long int=float<double C)char<int<long int<float=double D)char=int=long int<float<double 51、以下程序的正确运行结果是______。 main()   {int a=2;    for(i=0;i<3;i++) printf("%4d",f(a));    }   f(int a)     {int b=0;static int c=3;      b++;c++;      return(a+b+c);     } A)  7  7   7 B)  7  l0  13 C)  7  9  11 7  8  9 52、以下正确的描述是_______。 A)c语言的预处理功能是指完成宏替换和包含文件的调用 B)预处理指令只能位于c源程序文件的首部 C)凡是C源程序中行首以"#"标识的控制行都是预处理指令 D)C语言的编译预处理就是对源程序进行初步的语法检查 53、请读程序: #define ADD(x)  x+x main()   {int m=1,n=2,k=3;    int sum=ADD(m+n)*k;    printf("sum=%d",sum); 上面程序的运行结果是_____。 A)sum=9    B)sum=10     C)sum=12      D)sum=18 54、若有语句int *point,a=4;和point=&a;  下面均代表地址的一组选项是 _______。  A)a,point,*&a          B)&*a,&a,*point  C)*&point,*point,&a    D)&a,&*point,point 55、以下错误的描述是_____。 函数调用可以  A)出现在执行语句中               B)出现在一个表达式中               C)做为一个函数的实参 D)做为一个函数的形参 56、已有定义int a=-2;和输出语句:printf(“%8Lx”,a);以下正确的叙述是       。 A)整型变量的输出格式符只有%d一种 B)%x是格式符的一种,它可以适用于任何一种类型的数据 C)%x是格式符的一种,其变量的值按十六进制输出,但%8Lx是错误的 D)%8Lx不是错误的格式符,其中数字8规定了输出字段的宽度 57、若用数组名作为函数调用的实参,传递给形参的是____。 A)数组的首地址 B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数 58、当运行以下程序时,从键盘输入Happy!<CR>(<CR>表示回车),则下面程序的运行结果是_______。 #include<stdio.h> #include<string,h> main()   {char str[10],*p=str;    gets(p);    printf(“%d\n”,stre(p));    } stre(char  str[])   {int num=0;    while(*(str+num)!='\0')    num++;    return(num);   } A)7        B)6       C)5       D)10 59、下面有关for循环的正确描述是_____。 A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 c)在for循环中,不能用break语句跳出循环体 D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 60、设有如下定义: struct sk {int n;  float xl; }data,*p; 若要使p指向data中的n域,正确的赋值语句是_____。  A)p=&data.n;  B)*p=data.n;  C)p=(struct sk *)&data.n;  D)p=(struct sk *)data.n; 61、若有以下定义和语句,则对a数组元素的正确引用为______。 int a[2][3],(*p)[3]; p=a, A)(p+1)[0]  B)*(*(p+2)+1)  C)*(p[l]+1)   D)p[1]+2 62、若有以下说明和语句: char *languge[]={"F0RTRAN“,"BASIC”,"PASCAL","JAVA”,"C”}; char   **q;    q=language+2'; 则语句printf(”%s\n“,*q);______。 A)输出的是language[2]元素的地址 B)输出的是字符串PASCAL C)输出的是1anguage[2]元素的值,它是字符串PASCAL的首地址 D)格式说明不正确,无法得到确定的输出 63、已有定义int x;float y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678<回车>,则y 的值为_____。  A)无定值  B)45.000000  C)678.000000    D)123.000000 64、下面程序的运行结果是_____。 #include<stdio.h> main()   {static char a[]="Language”,b[]="programe";    char *p1,*p2;    int k;    p1=a;  p2=b;    for(k=0;k<=7;k++)      if(*(p1+k)==*(p2+k))   printf("%c",*(p1+k));    } A)gae    B)ga    C)Language    D)有语法错 65、表达式  0xl3&0xl7的值是____。 A)0x17    B)0xl3    C)0xf8    D)0xec 66、若已定义int a=5;下面对(1),(2)两个语句的正确解释是_____。 (1)int *p=&a;    (2)*p=a; A)语句(1)和(2)中的,p含义相同,都表示给指针变量p赋值 B)(1)和(2)语句的执行结果,都是把变量a的地址值献给指针变量p C)(1)在对p进行说明的同时进行初始化,使p指向a   (2)将变量a的值赋给指针变量p D)(1)在对P进行说明的同时进行韧始化   (2)将变量a的值赋于*p 67、若w、x、y、z、m均为int型变量,则执行下面语句后的m值是 w=1;  x=2;  y=3; z=4; m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z; A)l    B)2    C)3    D)4 68、以下程序的运行结果是_____。 typedef union{long a[2];             int b[4];             char c[8];             }TY; TY our; main() {printf(”%d\n”,sizeof(our)}; A)32    B)16      C)8     D)24 69、请读程序片断: int x=20; prtntf(”%d\n”, ~x); 上面程序片段的输出结果是______。 A)02    B)-20     C)-21    D)-11 70、当顺利执行了文件关闭操作时,fclose函数的返回值是_____。 A)-1    B)TURE    C)0    D)1 71、系统的标准输入文件是指_____。 A)键盘    B)  显示器  c)  软盘    D)硬盘 72、根据下面的定义,能打印出字母M的语句是____。 struct person{char name[9];               int age;               }  struct person class[l0]={"John”,17,"Paul",19,"Mary",18,"adam",16};  A)printf("%c\n",class[3].name);  B)printf("%c\n",class[3].name[1]);  C)printf("%c\n",class[2].name[1]);  D)printf("%c\n",class[2].name[0]); 73、若有以下程序段: int x=1,y=2; x=x^y; y=y^x; x=x^y; 则执行以上语句后x和y的值分别是___。 A)x=l,b=2   B)x=2,y=2    C)x=2,y=1     D)x=1,y=1 给出结果,说明理由及以上语句可以起什么作用,给出等价的其它表述方法。 74、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文 件方式字符串应是_______。 A)"ab+"     B)"wb+"      C)"rb+"      D)"ab" 填空题(30) 1、有四个数a,b,c,d,要求按从大到小的顺序输出。请在【】内填入正确内容。 main() { int a,b,c,d,t ;   scanf(“%d%d%d%d,&a,&b,&c,&d);   if(a<b){t=a;a=b;b=t;}   if(【1】){t=c;c=d; d=t;}          if(a<c){t=a;a=c;c=t;}   if(【2】){t=b;b=c;c=t;}          if(b<d){t=b;b=d;d=t;}   if(c<d){t=c;c=d;d=t;}   printf(“%d%d%d%d\n”,a,b,c,d); } 2、下面程序是从键盘输入一个三位数的学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请在【】内填入正确内容。 #include<stdio.h> main()   {long  num;    scanf("%ld",&num);    do{if(  【1】  )  printf("%ld",num);           scanf("%ld",&num);       }while(  【2】  );        } 3、    a<500        r=0%     500<=a<1000   r=5%     1000<=a<2000  r=8%     2000<=a<3000  r=10%     3000<=a        r=15% 以下程序对输入的一个奖金数,求税率金税和应交税款以及实得奖金数(扣除奖税后)。题中r代表税率,t代表税款,b代表实得奖金数。请在【】填入正确内容。     main()   {float a,r,t,b;    int c;    scanf(”%f",&a); if(a>=3000)c=6 e1se c=【1】;          switch(c) {  case 0:r=0;break;        case 1:r=0.05;break;        case 2:        case 3:【2】;break;           case 4:        case 5:r=0.1;break;        case 6:r=0.15;break; }  t=a*r;      b=a-t;  printf("r=%f,t=%f,b=%f",r,t,b)} } 4、下面程序的功能是计算l至10之间的奇数之和及偶数之和。请在【】内填入正确内容 #include<stdio.h> main()   {int a,b,c,i;    a=c=0;    for(i=0;i<=10;i+=2)     {a+=i;      【1】;               c+=b;      }    printf("偶数之和=%d\n",a),    printf("奇数之和=%d\n”, 【2】);       c    } 5、以下程序的功能是计算并打印复数的差。请在【】内填入正确内容。 struct comp   {float re;    float im;   }; struct comp *m(x,y)     struct comp  *x,*y;  {【1】;     z=(struct comp  *)malloc(sizeof(strut comp));   z->re=x->re-y->re;   z->im=x->im-y->im;   return(z);  } main() { struct comp  *t;   struct comp a,b;   a.re=1;  a.im=2;   b.re=3;  b.im=4;   t=m(【2】);   printf("z.re=%f,z.im=%f",t->re,t->im); } 6、下面程序以每行4个数据的形式输出a数组,请填空。 #define  N  20 main()   {int a[N],i;     for(i=0;i<N;i++) scanf("%d",【1】);       for(i=0;i<N;i++)     {if(【2】)【3】               printf("%3d",a[i]);      }      printf("%\n"); } 7、以下程序对输入的两个整数,按从大到小顺序输出。请在【】填入正确内容。 main() {int x,y,z; scanf("%d,%d,&x,&y); if(【1】)            (z=x;【2】}     printf("%d,%d",x,y); } 8、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请在【】内填入正确内容。 #include<stdio.h> main()   {     char c;     while((c=getchar())!=’\0’)        {if(c>='a'&&c<='z')           {【1】;                              if(c>'Z'&&c<='Z'+2)              【2】;                     }         printf('%c",c);         }     } 9、下面程序段的运行结果是____ 。 char s[20]="abcd"; char  *sp=s; sp++; puts(strcat(sp,”ABCD”)); 10、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。 main() (int a[10]={1,2,3,4,5,6,7,8,9,10};   int k,s,i;   float ave 5;   for(k=s=i=O;i<10;i++)    {if(a[i]%2!=0)【1】;     s+=【2】;     k++;}    if(k!=0)  {ave=s/k;printf("%d,%f\n",k,ave);} 11、下面程序段是把从终端法入的一行字符作为字符串放在字符数组中,然后输出。请填空。 int i; char s[80],*p; for(i=0;i<79;i++)   {s[i]=getchar();    if(s[i]=='\n') break;    } s[i]=【1】; p=【2】; while(*p) putchar(*p++); 12、以下程序用来按学生姓名查询其排名和平均成绩。查询可连续进行,直到键入0时结束,请在【】内填入正确内容。 #include<stdio.h> #includl<string.h> #define NUM  4 struct studet  {int rank;   char *name;   float score,   }; 【1】str[]={3,"Tom",89.3,              4,"Mary",78.2,              1,"Jack",95.1,              2,"Jim",90.6,              }; main() { char str[l0],   int i;     do {printf("Enter a name:");         scanf(“%s”,str);         for(i=0;i<NUM;i++)           if(【2】)             {printf("name      :%8s\n",stu[i].name);              printf("rank      :%3s\n",stu[i].rank);              printf("average   :%5.1s\n",stu[i].score);              break;             } if(i>=NUM) printf("Not found\n”); }while(
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服