收藏 分享(赏)

C语言程序填空题.doc

上传人:weiwoduzun 文档编号:2668519 上传时间:2018-09-24 格式:DOC 页数:19 大小:112.50KB
下载 相关 举报
C语言程序填空题.doc_第1页
第1页 / 共19页
C语言程序填空题.doc_第2页
第2页 / 共19页
C语言程序填空题.doc_第3页
第3页 / 共19页
C语言程序填空题.doc_第4页
第4页 / 共19页
C语言程序填空题.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include main() int a,b;scanf(“%d%d“,&a,&b);printf(“a=

2、%d,b=%dn“,a,b);a= ; b= ; a= ;printf(“a=%d,b=%dn“,a,b);【3.2】下面程序的功能是根据近似公式:2/6 1/12+1/22+1/32+ +1/n2,求 值。#include double pi(long n) double s=0.0;long i;for(i=1;iamax) amax=x; if( ) amin=x;scanf(“%f“,&x);printf(“namax=%fnamin=%fn“,amax,amin);【3.7】下面程序的功能是将形参 x 的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标

3、为 0 的元素中。fun(int x,int b) int k=0,r;do r=x% ;bk+=r;x/= ;while(x);【3.8】下面程序的功能是输出 1 到 100 之间每位数的乘积大于每位数的和的数。例如数字 26,数位上数字的乘积 12 大于数字之和 8。main() int n,k=1,s=0,m;for(n=1;ns)printf(“%d“,n);【3.9】下面程序的功能是统计用 0 至 9 之间的不同的数字组成的三位数的个数。main() int i,j,k,count=0;for(i=1;imain() ; int i,j;printf(“Input 10 number

4、s pleasen“);for(i=0; ;i+ ) scanf(“%f“, &ai);printf(“n“);for(i=2; ;i+ ) for(j=0; ;j+ )if( ) x=aj; ;aj+1=x;printf(“The sorted 10 numbers;n“);for(i=0; ;i+ ) if( ) printf(“n“);printf(“%ft“,ai);printf(“n“);【3.13】下面程序的功能是读入 20 个整数,统计非负数个数,并计算非负数之和。#include “stdio.h“main() int i,a20,s,count;s=count=0;for(i

5、=0;imain() char *s=“Beijing ligong daxue“;int i,j;for(i=j=0;si!=0;i+)if(si!= ) ;else ;sj= 0;printf(“%s“,s);【3.15】下面程序的功能是将字符串 s 中所有的字符c 删除。请选择填空。#includemain( ) char s80;int i,j;gets(s);for(i=j=0;si!= 0;i+ )if(si!= c) ;sj= 0;puts(s);【3.16】下面程序的功能是输出两个字符串中对应相等的字符。请选择填空。#include char x=“programming“;c

6、har y=“Fortran“;main() int i=0;while(xi!= 0 & yi!= 0)if(xi=yi)printf(“%c“, );elsei+;【3.17】下面程序的功能是将字符串 s 中的每个字符按升序的规则插到数组 a 中, 字符串 a 已排好序。#include main() char a20=“cehiknqtw“;char s=“fbla“;int i,k,j;for(k=0;sk!= 0 ;k+ ) j=0;while(sk=aj & aj!= 0 )j+;for( ) ;aj=sk;puts(a);【3.18】下面程序的功能是对键盘输入的两个字符串进行比较

7、,然后输出两个字符串中第一个不相同字符的 ASCII 码之差。例如:输入的两个字符串分别为 “abcdefg“和“abceef“,则输出为-1。#include main() char str1100,str2100,c;int i,s;printf(“Enter string 1: “); gets(str1);printf(“Enter string 2: “); gets(str2);i=0;while(str1i = str2i & str1i!= ) i+;s= ;printf(“%dn“, s);【3.19】下面的函数 expand 在将字符串 s 复制到字符串 t 时, 将其中的

8、换行符和制表符转换为可见的转义字符表示,即用n表示换行符,用t表示制表符。expand(char s,char t) int i,j;for(i=j=0;si!= 0;i+ )switch (si) case n: t = ;tj+ = n;break;case t: t = ;tj+ = t;break;default: t = si;break;tj = ;【3.20】下面的函数 index(char s, char t)检查字符串 s 中是否包含字符串 t,若包含,则返回 t 在 s 中的开始位置(下标值),否则送回-1。index(char s, char t) int i,j,k;f

9、or(i=0;si!= 0;i+ ) for(j=i,k=0; & sj=tk;j+,k+) ;if( ) return (i);return(-1);n【3.21】下面程序的功能是计算 S= k! 。k=0long fun(int n) int i;long s;for(i=1;i ;i+) s*=i;return( ) ;main() int k,n;long s;scanf(“%d“,&n);s= ;for(k=0;ksk) ;return(k);【3.23】下面程序的功能是由键盘输入 n,求满足下述条件的 x、y :nx 和 ny 的末 3 位数字相同,且 xy,x、y、n 均为自然数

10、,并使 x+y 为最小。#include pow3(int n,int x) int i, last;for(last=1,i=1;idouble mysqrt( double a, double x0 ) double x1, y;x1 = ;if( fabs(x1-x0)0.00001 )y = mysqrt( );else y = x1;return( y );main() double x;printf(“Enter x: “);scanf(“%lf“, &x);printf(“The sqrt of %lf=%lfn“, x, mysqrt( x, 1.0) );【3.25】以下程序

11、是计算学生的年龄。已知第一位最小的学生年龄为 10 岁,其余学生的年龄一个比一个大 2 岁,求第 5 个学生的年龄。#include age( int n ) int c;if( n=1 ) c=10;else c= ;return(c);main() int n=5;printf(“age:%dn“, );【3.26】下面的函数 sum(int n)完成计算 1n 的累加和。sum(int n) if(nvoid prt( char c, int n ) if( n0 ) printf( “%c“, c ); ;main() int i, n;scanf(“%d“, &n);for( i=1

12、; i2 ) invent ( ,n-2) ;else ;【3.35】从键盘上输入 10 个整数,程序按降序完成从大到小的排序。#include int array10;sort( int *p, int *q ) int *max, *s;if( )return;max=p; for( s=p+1; s *max ) ; swap( ) ;sort( ); swap( int *x, int *y ) int temp;temp=*x;*x=*y;*y=temp;main() int i; printf(“Enter data :n“); for( i=0; ivoid convert(ch

13、ar *a, int n) int i;if(i=n/10) !=0 ) convert( , i ); *a = ;char str10= “ “;main() int number;scanf(“%d“, &number);convert( str, number );puts(str);【3.37】下面程序的功能是实现数组元素中值的逆转。#include main() int i,n=10,a10=1,2,3,4,5,6,7,8,9,10;invert(a,n-1);for(i=0;iint a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a;main() int

14、i,j;for(i=0;imain ( ) char str81, *sptr;int i;for(i=0;iwp) ;for(i=*n;i=p;i-) ;wp=x;+*n;【3.41】下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按 ASCII 码值从小到大排序,并删去相同的字符。#include strmerge(a,b,c) /* 将已排好序的字符串 a、b 合并到 c */char *a,*b,*c ; char t,*w;w=c;while( *a!= 0 *b!=0 ) t= ?*a+:*bsj ) main( ) char s1100

15、,s2100,s3200;printf(“nPlease Input First String:“);scanf(“%s“,s1);printf(“nPlease Input Second String:“);scanf(“%s“,s2);strsort(s1);strsort(s2); = 0;strmerge(s1, s2,s3);printf(“nResult:%s“,s3) ;【3.42】已知某数列前两项为 2 和 3,其后继项根据前面最后两项的乘积,按下列规则生成: 若乘积为一位数,则该乘积即为数列的后继项; 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依次作为数列的两个后继

16、项。下面的程序输出该数列的前项及它们的和,其中,函数 sum(n,pa) 返回数列的前N 项和,并将生成的前 N 项存入首指针为 pa 的数组中,程序中规定输入的 N 值必须大于 2,且不超过给定的常数值 MAXNUM。例如:若输入的值为 10,则程序输出如下内容:sum(10)=442 3 6 1 8 8 6 4 2 4#include “stdio.h“#define MAXNUM 100int sum(n, pa)int n, *pa; int count, total, temp;*pa = 2; =3;total=5;count=2;while( count+struct stuin

17、f char name20; /* 学生姓名 */int score; /* 学生成绩 */ stu, *p;main ( ) p=&stu;printf(“Enter name:“);gets( ) ;printf(“Enter score: “);scanf(“%d“, );printf(“Output: %s, %dn“, , ) ;【3.44】下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。查询时可连续进行,直到输入 0 时才结束。 #include #include #define NUM 4 struct student int rank;char *name;float s

18、core; stu = 3,“liming“,89.3, 4,“zhanghua“,78.2, 1,“anli“,95.1, 2,“wangqi“,90.6;main() char str10; int i; do printf(“Enter a name“); scanf(“%s“,str); for( i=0;i=NUM ) printf(“Not foundn“); while( strcmp(str,“0“)!=0 ) ;【3.45】下面程序的功能是从终端上输入个人的年龄、性别和姓名,然后输出。#include “stdio.h“struct man char name20;unsig

19、ned age;char sex7;main ( ) struct man person5;data_in(person,5);data_out(person,5);data_in(struct man *p, int n ) struct man *q = ;for( ; page, p-sex); ;data_out( struct man *p, int n ) struct man *q = _;for( ; pname, p-age, p-sex);【3.46】输入 N 个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列。要求:当两个整数相等时,整数的排列顺序由输

20、入的先后次序决定。例如:输入的第 3 个整数为 5,第 7 个整数也为 5,则将先输入的整数 5 排在后输入的整数 5 的前面。程序如下:#include “stdio.h“#define N 10struct int no;int num; arrayN;main( ) int i, j,num;for( i=0;i=0&arrayj.num num ; )arrayj+1=arrayj;array .num=num ;array .no=i ;for( i=0;imain( ) struct node char info;struct node *link; *top,*p;char c;

21、top=NULL;while(c= getchar( ) ) p=(struct node *)malloc(sizeof(struct node);p-info=c;p-link=top;top=p;while( top ) ;top=top-link;putchar(p-info);free(p);【3.48】下面函数将指针 p2 所指向的线性链表,串接到 p1 所指向的链表的末端。假定 p1 所指向的链表非空。#define NULL 0struct link float a;struct link *next;concatenate ( p1,p2 )struct list *p1,*

22、p2 ; if( p1-next=NULL )p1-next=p2;elseconcatenate( ,p2);【3.49】下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串。#include struct node char data;struct node *link;*head;main() char ch;struct node *p;head = NULL;while( ch=getchar()!=n ) p = (struct node *)malloc(sizeof(struct node);p-data = ch;p-link = ;head = ; ;while(

23、 p!=NULL ) printf(“%c “, p-data);p = p-link;【3.50】下面程序的功能是从键盘上顺序输入整数,直到输入的整数小于 0 时才停止输入。然后反序输出这些整数。#include struct data int x;struct data *link;*p;input() int num;struct data *q;printf(“Enter data:“);scanf(“%d“, &num);if( numx = num;q-link = p;p=q; ;main() printf(“Enter data until datax); ;【3.51】下面函

24、数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。链表用于储存学生的学号和成绩。新产生的结点总是位于链表的尾部。struct student long num;int score;struct student *next;struct student *creat() struct student *head=NULL,*tail;long num; int a;tail= malloc(LEN);do scanf(“%ld,%d“,&num,&a);if(num!=0) if(head=NULL) head=tail;else ;tail-num=num; tail-score=a

25、;tail-next=(struct student *)malloc(LEN);else tail-next=NULL;while(num!=0);return( ) ;【3.52】下面 create 函数的功能是建立一个带头结点的单向链表,新产生的结点总是插入在链表的末尾。单向链表的头指针作为函数值返回。#include #define LEN sizeof(struct student)struct student long num;int score;struct student *next;struct student *creat() struct student *head=NU

26、LL,*tail;long num;int a;tail=( )malloc(LEN);do scanf(“%ld,%d“,&num,&a);if(num!=0) if(head=NULL) head=tail;else tail=tail-next;tail-num=num; tail-score=a;tail-next=( )malloc(LEN) ;else tail-next=NULL;while(num!=0); ;【3.53】下面程序的功能是统计文件中的字符的个数。#include main() long num=0; *fp ;if(fp=fopen(“fname.dat“, “

27、r“)=NULL) printf(“Cant open the file! “);exit(0);while( ) fgetc(fp); num+;printf(“num=%dn“,num);fclose(fp);【3.54】下面程序的功能是把从键盘输入的文件(用 作为文件结束标志)复制到一个名为 second.txt 的新文件中。#include FILE *fp;main() char ch;if(fp=fopen( )=NULL) exit(0);while(ch=getchar()!=)fputc(ch,fp); ;【3.55】下面程序的功能是将磁盘上的一个文件复制到另一个文件中,两个

28、文件名在命令行中给出(假定给定的文件名无误)。#include main(int argc,char *argv) FILE &f1,*f2;if(argc#include main (int argc,char *argv) int n;void sum(),mult();void (*funcp)();n=atoi(argv2);if(argc!=3 | n0)n“);exit (0);【3.57】下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件 test.txt 中,然后从该文件读出字符串并显示出来。#include main() char str1

29、00;int i=0;FILE *fp;if(fp=fopen(“test.txt“, )=NULL) printf(“Cant open the file.n“);exit(0);printf(“Input a string:n“);gets(str);while(stri) if(stri= a&striFILE *fp;main() int i, j;if( fp=fopen( , “wb“ ) = NULL )exit (0);for( i=0;i#include FILE *cp;char fname20, buf100;int num;struct key char word10;

30、int count;keyword= “if“, 0, “char“, 0, “int“, 0,“else“, 0, “while“, 0, “return“, 0;char *getword (FILE *fp) int i=0;char c;while(c=getc(fp) != EOF & (c= |c=t|c=n) ;if( c=EOF ) return (NULL) ;else bufi+=c;while(c = & c!= & c!= t & c!= n )bufi+ = c;bufi= 0;return(buf); lookup(char *p) int i;char *q, *

31、s;for(i=0;imain() FILE *fp;int flag;char name30, data30;if(fp=fopen(“try.dat“, )=NULL ) printf(“Open file errorn“);exit(0);do printf(“Enter name:“);gets(name);if( strlen(name)=0 )break;strcat(name, “n“); ;flag=1;while( flag & (fgets(data, 30, fp) ) )if( strcmp(data, name) = 0 ) ;if( flag )fputs(name

32、, fp);elseprintf(“tData enter error !n“); while( ) ;fclose(fp);参考答案【3.1】答案: a+b a-b a-b【3.2】答案: 1.0/(float)(i*i) sqrt(6*s)【3.3】答案: *k=p【3.4】答案: t=t*i t=t0?-1:1【3.5】答案: d=1 k+ k=0 x0 m=m/10【3.9】答案: i=j k!=i&k!=j 【3.10】答案: iaj+1 aj=aj+1 i=j ;i- ai+1=ai【3.18】答案: 0 str1i-str2i【3.19】答案: j+ j+ j+ 0【3.20】答

33、案: tk!= 0 tk= 0【3.21】答案: 0.00001)“时,则要继续迭代,因此处应当填写“a,x1“。程序中调用了求绝对值的库函数 fabs( )。【3.25】答案: 2+age(n-1) age(5)注释:由于程序是递归算法,因此首先要建立问题的递归数学模型。根据原题的描述可以写出如下递归公式: age(n) = 10 (n=1)age(n) = 2+age(n-1) (n1)对照程序和递归公式可以看出:n 的含义是第 n 位学生。很显然,要求第 5 位学生的年龄,处应当是调用函数 age,实参的值应当是 5。在 处应该是函数的递归调用,根据递归公式,应当填写:2+age(n-1

34、)。【3.26】答案: return(1) return (sum(n-1)+n)注释:按照常规的编程方法,此问题可采用一个循环语句实现。阅读程序,没有发现循环语句,这时,应当认为原来的编程者使用的是非常规的算法。对于这样常规算法需要用循环实现而没有使用循环的程序,就可以肯定地认为,一定是使用了递归算法。将问题“求 n 的累加和“的公式写成递归定义,可以是如下形式;sum(n)=1 当 n=1 时sum(n)=sun(n-1)+n 当 n1 时根据此递归定义,可以很容易完成程序。【3.27】答案: return(1) n*facto(n-1)注释:我们熟悉的求 n!的算法一般是采用循环语句实现

35、,但在此程序中根本没有循环语句。这时我们应该想到:是采用递归算法实现的。首先写出求 n!的递归公式; n!=1 当 n=1 时n!=n*(n-1) 当 n1 时根据此递归定义,可以很容易完成程序。【3.28】答案: com=n com=combin(n-1,m-1) + combin(n-1,m)注释:题目的说明中已经给出组合问题的递归定义,不需要读者自己寻找递归表达式。程序中的语句“if (n0 r(m)【3.31】答案: prt(c, n-1) prt( , n-i) prt(*, i)注释:函数 prt 的功能是输出 n 个字符 c。【3.32】答案: y(x, n-1)注释:这显然是一

36、个递归问题,首先要对原来的数学函数定义形式进行变形,推导出原来函数的等价递归定义。可以推导出原来函数的递归定义如下。y(x,n)=x 当 n=0 时y(x,n)=sqrt(x+y(x,n-1) 当 n0 时【3.33】答案: p- *p=0 *p=c p- *s+注释:在递归算法中,指针 s 指向字符串首部要反向的字符,即要将指针 s 所指向的字符与指针 p 所指向的字符串尾的字符( 0)进行交换,在交换过程中,将尚没有交换的字符串的中间部分作为一个整体,进行递归处理。程序中首先执行“c=*s“,将首字符存入临时变量;然后执行“*s=*p“,将尾字符存入串首;执行“revstr(s+1)“是递

37、归处理串的中间部分,这时,在处应当填入“*p=0“,即存入串结束标记。这是这一程序中的关键所在。在处要完成将存在临时变量 c 中的字符存入串尾的工作,应当填写“*p=c“。【3.34】答案: str+1 return 改为 n-2【3.35】答案: p=q max=s p,max p+1,q &array0, &array9注释:本程序中的排序部分采用的是递归算法。函数 sort 的两个形参的含义是:对指针 p 和指针 q 之间的数据进行排序。由语句“for( s=p+1; s=q“、处应填“&array0,&array9“。由于变量 max 是指向当前最大值的指针,则当找到新的最大值时,ma

38、x 中保存的应该是新的最大值的指针,因此处应填“max=s“。当调用函数 swap 交换两个变量值的时候,要求实参是变量的地址,因此,处应填“p,max“将最大值存入指针 p 所指的单元。由于问题的要求是“从大到小 “排序,通过执行一次函数 sort 使最大值已经放到了指针 p 所指的单元中,因此,下一遍排序的时候,只要对指针 p 之后的元素进行即可,所以处应填“p+1,q“。【3.36】答案: a+1 n%10+0【3.37】答案: s=MAXNUM+1 num+n【3.43】答案: stu.name &stu.score p-name p-score注释:这是结构中的最基本概念。【3.44

39、】答案: struct student strcmp(stui.name,str)=0 break注释:程序的主体是一个二重循环,内层 for 循环完成查找学生的工作。处是进行结构数组说明并初始化,按照结构变量说明的格式规定,应该填写:strcut student。处为 if 语句的逻辑条件,应当是当查找到指定的学生后输出学生的情况,因此应当填写:strcmp(stui.name,str)=0。处应当将控制退出内层的 for 循环,只能选择 break 语句。【3.45】答案: p+n gets(p-name) p+n注释:本程序是通过函数完成对于结构数组的输入和输出操作。函数 data_in

40、 和data_out 十分相似,都是通过结构指针 p 和结构指针 q 来操作结构数组的元素。由于指针 q 在两个函数中的作用相同,所以和填写的内容也应该是相同的;由 for语句中的循环终止条件“pname)。【3.46】答案: j=i-1 j- j+1 j+1注释:程序的基本思想是:对于输入的第 i 个整数 num,从数组 array 中已有的元素中倒序开始查找。若数组 array 中的第 j 个元素的值大于 num,则将数组中的元素 j 向后移动一个位置;否则,就应将 num 插入到当前位置作为元素 j。因此,程序的基本设计思想就是插入排序。程序中内层的 for 循环完成查找插入位置的工作,

41、因此答案、和有密切的关系,要统一考虑。同样,程序中的答案和也有密切的关系,要统一考虑。【3.47】答案: != n p=top【3.48】答案: p1-next【3.49】答案: head p p=head注释:程序在从键盘接受字符的同时就在建立起链表,所建立的链表本身就已经是反序排列的,因此在反序输出字符串的时候实际只需沿着链表的第一个结点开始,顺序操作即可。【3.50】答案: return (struct data *) malloc(sizeof(struct data) input( ) p!=NULL p=p-next【3.51】答案: (struct student *) tail

42、=tail-next head注释:malloc 函数的作用是在内存开辟指定字节数的存储空间,并将此存储空间的地址返回赋给尾指针 tail,但是此地址为 void 型,应将其强制转换为所要求的结构指针类型。新开辟的结点的内存地址存于 tail 所指向的已建立的链表的尾结点的结构成员next,新结点连入链表以后,尾指针 tail 应指向新的结点。【3.52】答案: (struct student *) (struct list *) return(head)【3.53】答案: FILE !feof(fp)注释:FILE 是文件结构类型名。feof()是测试文件结束标志的函数。【3.54】答案:

43、“second.txt“ fclose(fp)【3.55】答案: 3 !feof(f1)或 feof(f1)=0 f2 fclose(f2) fclose(f1)注释:程序中使用了带参数的 main 函数,其中整型参数 argc 为命令行中字符串的个数,此程序运行时输入的字符串有可运行程序名、文件 1 和文件 2,故 argc 不应小于 3。字符串指针 argv0指向可运行程序名、字符串指针 argv1指向输入文件名、字符串指针 argv2指向输出文件名,由上所述处给出循环条件是输入文件是否结束,处需要填出输出文件名。最后两处是关闭两个文件,原则上关闭文件没有顺序要求,但习惯上是后打开的文件先

44、关闭。【3.56】答案: *argv1 (*funcp)(n) s+=i注释:程序执行时输入的命令及参数的个数(操作系统规定用空格表示字符串的分隔)由系统赋给主函数的形数 argc,输入的命令和参数以字符串的格式保存,字符串的首地址分别赋给指针数组 argv 的各个元素,其中 argv1是+或-,分别表示累加或阶乘。程序根据 argv1所指向的字符串的内容给指向函数的指针变量 funcp 赋值。处要求的语句是根据指向函数的指针变量的内容对相应的函数实现调用,所以选择A 或 B 是错误的;据 funcp 是被调函数的地址,*funcp 实现了对函数的调用,根运算符的结合性,(*funcp)表示取 funcp 的目标,而*funcp(n)则 funcp 先和(n)结合,funcp 就被解释为函数名,显然是错误的。【3.57】答案: “w“ -32 “r“【3.58】答案: “bi.dat“ &j fp【3.59】答案: fgetc(fp)!=EOF &keywordi.word0 s+ ; q+; *s=*q (word=getword(cp)!=NULL【3.60】答案: “a+“ rewind(fp) !=NULL flag=0 ferror(fp)=05 8 9+18 + 27 + 30? 英 20

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报