C语言算法与编程

1.100-200之间的素数

1)#include<stdio.h> 
 int main()
 {
  int i, j;
  for (i = 100; i <= 200; i++)
  {
   for (j = 2; j <= i - 1; j++)
   {
    if (i % j ==0)
     break;//如果能整除就跳出该次循环,避免多余运算
   }
   if (j == i)//该条件代表没有整除。
    printf("%d ", i);
  }
  printf("\n");
  system("pause");
  return 0;
 }

#include<stdio.h>
#include<math.h>
int main()
{ 
 int count = 0; 
 int i = 0;
 for(i=100; i<=200; i++)
 {  
  int j = 0; 
  for(j=2; j<=sqrt(i); j++)
  {   
   if(i%j == 0)  
    break;  
  }  
  if(j > sqrt(i))  
  {   
   count++; 
   printf("%d ",i);
  } 
 } 
 printf("\n");
 printf("素数个数为:%d", count);
 return 0;
}

2.打印乘法口诀表

#include<stdio.h>
int main(void)
{
 int a, b;                  //a和b分别表示行数和列数;
 for (a = 1; a <= 9; a++)
 {
  for (b = 1; b <= a; b++)
   printf("%d*%d=%2d ", a, b, a * b);
  printf("\n");
 }
 printf("\n");
 return 0;
}

3.1000-2000之间的闰年

#include<stdio.h>
int main(void)
{
 int a = 1000;
 for (a = 1000; a <= 2000; a++)
 {
  if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
   printf("%d ",a);
 }
 return 0;
}

4.交换两个数的值

1.#include<stdio.h>
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("%d %d",a,b);
return 0;
}

2.#include<stdio.h>
int main(void)
{
int a,b;
scanf("%d %d",&a,&b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d",a,b);
return 0;
}

3.#include<stdio.h>
int main(void)
{
 int a,b,temp;
 scanf("%d %d",&a,&b);
    temp = a;
 a = b;
 b = temp;
 printf("%d %d",a,b);
 return 0;
 }

5.输出1-100之间的奇数

#include<stdio.h>
int main(void)
{
 int a = 1;
 for(a=1;a<=100;a++)
 {
        if (a % 2 == 1)
           {
               printf("%d ", a);
           }
 }
 return 0;
}
#include<stdio.h>
int main(void)
{
int a=1;
for(a=1;a<=100;a+=2)
{
printf("%d\n",a);
}
return 0;
}

6.找出10个数中的最大值

#include<stdio.h>
int main()
{
	int arr[10] = { 21,43,32,54,65,76,87,98,78,19 };
	int i = 0;
	int max=arr[0];
	for (i = 0; i < 10; i++)
	{
		if (arr[i] >max)
		{
			max = arr[i];
		}
	}
	printf("%d", max);
	return 0;
}

7.将三个数从大到小输出

1)#include<stdio.h>
int main(void)
{
 int a, b, c;
 scanf("%d %d %d", &a, &b, &c);
 if (a > b && b > c)
  printf("%d %d %d", a, b, c);
 if (a > c && c > b)
  printf("%d %d %d", a, c, b);
 if (b > a && a > c)
  printf("%d %d %d", b, a, c);
 if (b > c && c > a)
  printf("%d %d %d", b, c, a);
 if (c > a && a > b)
  printf("%d %d %d", c, a, b);
 if (c > b && b > a)
  printf("%d %d %d", c, b, a);
 return 0;
}
2)#include<stdio.h>
void Swap(int *px,int *py)
{
 int tmp = *px;
 *px=*py;
 *py = tmp;
}
int main(void)
{
 int  a = 1;
 int  b = 2;
 int  c = 3;
 if (a < c)
 {
  Swap(&a, &c);
 }
 if (b < c)
 {
  Swap(&b, &c);
 }
  if (a < b)
  {
   Swap(&a, &b);
  }
  printf("%d %d %d", a, b, c);
return 0;
}

8.求两个数的最大公约数
辗转相除法

#include<stdio.h>
int main(void)
{
 int a;
 int b;
 int c;
 scanf("%d %d", &a, &b);
 while (c = a % b)
 {
  a = b;
  b = c;
 }
 printf("%d", b);
 return 0;
}

9.最小公倍数

#include<stdio.h>
int main()
{ 
 int x, y, z, m, n; 
 printf("请输入两个数:"); 
 scanf_s("%d%d", &x, &y);
 m = x, n = y; 
 while (y != 0) 
 {  
  z = x%y;
  x = y; 
  y = z; 
 } 
 printf("最大公约数是: %d\n", x);
 printf("最小公倍数是: %d\n", m * n / x);
 system("pause"); 
 return 0;
 }

10.一道笔试题(问发生了几次循环)

#include<stdio.h>
int main(void)
{
 int i = 0;
 int k = 0;
 for (i = 0, k = 0; k = 0; i++, k++)
  k++;
 return 0;
}
答案:一次循环都不发生,第一个分号后的K=0;是将0赋值给k,表达式的结果为假,所以循环一次都不会进行;

11.求n的阶乘

#include<stdio.h>
int main(void)
{
 int n;
 int s =1;
 int i = 1;
 scanf("%d", &n);
 for (i = 1;  i<=n; i++)
  s = s * i;
 printf("%d", s);
 return 0;
}

12.求1!+2!+…+10!

#include<stdio.h>
int main(void)
{
 int n = 0;
 int i = 1;
 int ret = 1;
 int sum = 0;
 scanf("%d", &n);
 for (n = 1; n <= 10; n++)
 {
  while (i <= n)
  {
   ret *= i;
   i++;
  }
  sum += ret;
 }
 printf("sum=%d", sum);
 return 0;
}

13.输入一串字符,逆序输出。要求使用数组实现

#include<stdio.h>
#include<string.h>
int main()
{
	int n,i;
	char a[999];
	char b[999];
	printf("请从键盘输入一个字符串\n") ;
	gets(a);
	n = strlen(a);
	for(i = 0;i<n;i++)
		b[n-1-i] = a[i];
	printf("逆序输出:   \n");
	for(i = 0;i<n;i++)
	printf("%c",b[i]);
	return 0;	
}

14.将字符串中的全部大写字母变成小写字母

#include<stdio.h>
#include<string.h>
int main()
{
	char a[20];
	char b[20]; 
	gets(a);
	strcpy(b,a);
	strlwr(b);
	printf("%s",b);
	return 0;
} 

15.将字符串中的全部小写字母变成大写字母

#include<stdio.h>
#include<string.h>
int main()
{
	char a[20];
	char b[20]; 
	gets(a);
	strcpy(b,a);
	strupr(b);
	printf("%s",b);
	return 0;
} 

16.求1-1/2+1/3-1/4+…+1/99-1/100的值。

#include<stdio.h>
int main()
{
	int j = -1;//作为改变正负号的变量
	int i = 1;
	double sum = 0.0;
	double z = 1.0;
	for (i = 1; i <= 100; i++)
	{
		j = j * (-1);
		z = j * (1.0 /i);
		sum = sum + z;
	}
	printf("%lf", sum);
}

17.输入三个数a,b,c,要求按从小到大的顺序输出三个数

#include<stdio.h>
void Swap(int* x, int* y)
{
	int temp = *x;
	*x = *y;
	*y = temp;
}
int main()
{
	int a, b, c;
	scanf("%d %d %d", &a,& b, &c);
	if (a > b)
	{
		Swap(&a, &b);
	}
	if (a > c)
	{
		Swap(&a, &c);
	}
	if (b > c)
	{
		Swap(&b, &c);
	}
	printf("%d %d %d", a, b, c);
	return 0;
}

18.平方根

/*
从键盘输入一个小于1000的正数,要求输出他平方根
如果平方根不是整数,那么就输出其正数部分
要求在输入数据后先进行检查是否为小于1000的正数,若不是,则要求重新输入
*/
#include<stdio.h>
#include<math.h>
#define A 1000
int main()
{
	int i = 0;
	int k = 0;//平方根的值
	scanf("%d", &i);
	if (i>A)
	{
		printf("输入错误,请重新输入\n");
		scanf("%d", &i);
	}
	k = sqrt(i);
	printf("%d的平方分的整数部分为:%d", i, k);
	return 0;
}

19.给一个不多于五位的正整数,要求出他是几位数

#include<stdio.h>
int main()
{
	int num = 0;
	int place = 0;
	printf("请输入一个数字(0~99999)\n");
	scanf("%d", &num);
	if (num > 9999)
	{
		place = 5;
	}
	else if (num > 999)
	{
		place = 4;
	}
	else if (num > 99)
	{
		place = 3;
	}
	else if (num > 9)
	{
		place = 2;
	}
	else
		place = 1;
	printf("%d", place);
	return 0;
}

20.求1的阶乘一直加到20的阶乘

#include<stdio.h>
int main()
{
	int n = 0;
	int i = 1;
	int sum = 1;
	int ret = 0;
	scanf("%d", &n);
	for (n = 1; n <= 20;n++)
	{
		while (i <= n)
		{
			sum = sum * i;
			i++;
		}
		ret = sum + ret;
	}
	printf("%d", ret);
	return 0;
}

21.对10各数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出

#include<stdio.h>
int main()
{
	int array[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int i = 0;
	for (i =9; i >=0; i--)
	{
		printf("%d ", array[i]);
	}
	printf("\n");
	return 0;
}

22.用数组来处理求斐波那契数列问题

#include<stdio.h>
int main()
{
	int i;
	int f[20] = { 1,1 };//对前面的两个元素赋初值为1;
	for (i = 2; i < 20; i++)
		f[i] = f[i - 1] + f[i - 2];
	for (i = 0; i < 20; i++)
	{
		if (i % 5 == 0)
			printf("\n");
		printf("%12d", f[i]);
	}
	printf("\n");
	return 0;
}

23.有一个3*4的矩阵,要求编写程序求出其中最大的那个元素的值,以及其所在的行号和列号

#include<stdio.h>
int main()
{
	int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
	int i, j, max;
	int row, col;
	max = a[0][0];
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (a[i][j] > max)
			{
				max = a[i][j];
				row = i;
				col = j;
			}
		}
	}
	printf("%d %d %d", max, i, j);
	return 0;
}

24.用字符数组输出一个菱形

#include<stdio.h>
int main()
{
	char a[][5] = { {' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ',' ','*'},{' ',' ','*'} };
	int i=0, j=0;
	for(i = 0; i <5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("%c", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

25.输入一行字符,统计其中有多少个单词,单词之间用空格隔开

/*
问题的关键在于怎样能够确定出现了一个新的单词了;
可以采用这样的方法:从第一个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是
就使得变量num的值加1(用变量num统计单词的个数)最后得到的num的数值就是单词的总数
判断是否出现新的单词,可以由是否有空格的出现来决定(连续的若干个空格作为出现一次空格,一行
开头的空格不统计在内),如果测出某一个字符为非空格,而他的前面的字符是空格,
那么就表示新的单词开始了,此时num的数值就会加1.
如果当前字符为非空格而其前面的字符也为非空格,则意味着仍然是原来那个单词的继续,此时num的
数值不应该发生改变。用变量word作为判别当前是否开始了一个新单词的标志。若word=0表示未出现新单词,
如果出现了新的单词,就把word的值赋为1;
*/
#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	int word = 0, num = 0, i;
	char c;
	//gets(str);//输入一个字符串;
	for (i = 0; (c = str[i]) != '\0'; i++)
		if (c == ' ')
			word = 0;//如果是空格字符,那么就将word的值置为0
		else if (word == 0)//如果不是空格字符且word的原来的值为0
		{
			word = 1;//使word的值置为1
			num++;//num累加1,表示增加一个单词
		}
	printf("%d", num);
	return 0;
}

26.有三个字符串,要求找出其中的最大者

/*
解题思路:可以设一个二维的字符数组str,大小为3x20,即有3行20列(每一行可以容纳20个字符)
每一行存放一个字符串,此二维数组的存储情况如下所示:
str[0]:C h i n a \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
str[1]:J a p a n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
str[2]:I n d i a \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
如上所述,可以把str[0],str[1],str[2]看作3个一维字符数组(他们各有20个元素),
可以把他们如同一维数组那样进行处理,今天用gets函数分别读入三个字符串,赋给3个一维字符数组
然后经过三次两两比较,就可以得到值最大者,然后把他放在一维字符数组string中.
*/
#include<stdio.h>
#include<string.h>
int main()
{
	char str[3][20];
	char string[20];
	int i = 0;
	for (i = 0; i < 3; i++)
		gets(string[i]);
	if (strcmp(str[0], str[1]) > 0)
		strcpy(string, str[0]);
	else
		strcpy(string, str[1]);
	if (strcmp(str[2], string) > 0)
		strcpy(string, str[2]);
	printf("the largest string is %s\n", string);
	return 0;
}

当然,这个题目,也可以不采用二维数组,而设置三个一维字符数组来处理

27.求一个3x3矩阵对角线元素的和

#include<stdio.h>
int main()
{
	int arr[3][3], i, j;
	int sum = 0;
	int sum1 = 0;
	int sum2 = 0;
	for (i = 0; i < 3; i++)
		for (j = 0; j < 3; j++)
			scanf("%d", &arr[i][j]);
	for (i = 0; i < 3; i++)
		sum1 = arr[0][0] + arr[1][1] + arr[2][2];
	for (i = 0; i < 3; i++)
		sum2 = arr[0][2] + arr[1][1] + arr[2][0];
	sum = sum1 + sum2;
	printf("%d\n", sum);
	return 0;
}

28.求n的阶乘,不考虑溢出

#include<stdio.h>
int fac(int n)
{
	if (n <= 1)
		return 1;
	else
		return n * fac(n - 1);
}
int main()
{
	int n = 0;
	int i = 1;
	int sum = 1;
	scanf("%d", &n);
	for (i = 1; i <= n;i++)
	{
		sum = fac(n);
	}
	printf("%d", sum);
}

29.编写函数不允许创建临时变量,求字符串的长度,相当于模拟实现strlen

#include<stdio.h>
int my_strlen(const char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}
int main()
{
	char arr1[] = "abcdef";
	int ret = 0;
	ret = my_strlen(arr1);
	printf("%d", ret);
	return 0;
}

30.斐波那契数列

//递归
#include<stdio.h>
int fib(int n)
{
	if (n <= 2)
		return 1;
	else
		return fib(n - 2) + fib(n - 1);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = 0;
	ret = fib(n);
	printf("%d", ret);
	return 0;
}
//但是这个代码计算能力较为弱小

//利用非递归求斐波那契数列
#include<stdio.h>
int fib(int n)
{
	int a = 1;
	int b = 1;
	int c = 1;
	while (n >= 3)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = 0;
	ret = fib(n);
	printf("%d", ret);
	return 0;
}

31.打印数组中元素的地址

#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("a[%d]=%p\n", i, &arr[i]);
	}
	return 0;
}

32.打印二维数组中各个元素的地址

#include<stdio.h>
int main()
{
	int a[2][4] = { {1,2,3,4},{5,6,7,8} };
	int i = 0;
	int j = 0;
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("a[%d][%d]=%p\n", i, j, &a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

33.递归问题

/*
有五个学生坐在一起时,问第五个学生多少岁,他说比第四个学生大两岁,第四个学生比第三个
学生大两岁,第三个学生比第二个学生大两岁,第二个学生比第一个学生大两岁,第一个学生的
年龄是10岁,这个问题可以理解为有关于递归的函数
*/
#include<stdio.h>
int main()
{
	int age(int n);
	printf("%d", age(5));
	return 0;
}
int age(int n)
{
	int c;
	if (n == 1)
		c = 10;
	else
		c = age(n - 1) + 2;
	return(c);
}

34.用递归的方法求出n!

//用递归的方法求出n!
/*
思路:求n!可以用递推方法,即从1开始,乘我,再乘3...一直乘到n
递推的特点是从一个已知的事实(如1!=1)出发,按照一定规律推出下一个事实
如2!=1*2,再从这个新的已知的事实出发,在向下推出一个新的事实..
n!=n*(n-1)

求n的阶乘也可以用递归的方法,如5!=4!*5
n*(n-1)!
*/
#include<stdio.h>
int fac(int n)
{
	int ret = 0;
	if (n < 0)
	{
		printf("error!");
	}
	if (n == 0 || n == 1)
	{
		ret = 1;
	}
	if (n > 1)
		ret = fac(n - 1) * n;
	return(ret);
}
int main()
{
	int n = 0;
	int ret = 0;
	scanf("%d", &n);
	ret = fac(n);
	printf("%d", ret);
	return 0;
}

35.输入10个数,要求输出其中值最大的元素和该元素是第几个数

#include<stdio.h>
int main()
{
	int max(int x, int y);         //函数声明
		int a[10], m, n, i;
		printf("enter ten numbers:");
		for (i = 0; i < 10; i++)   //输入十个数给a[0]到a[10]
			scanf("%d", &a[i]);
		printf("\n");
		for (i = 1, m = a[0], n = 0; i < 10; i++)
		{
			if (max(m, a[i]) > m)
			{
				m = max(m, a[i]);
				n = i;
			}
		}
		printf("the largest number is %d\n iy is the %dth number\n", m, n + 1);
}
	int max(int x, int y)
	{
		return(x > y ? x : y);
	}
//m用来存放当前已比较过的数中的最大数,开始是设置m的值为a[0],然后将m与a[1]进行比较
//如果a[1]的值大于m的值,就用a[1]的值(此时也就是max(m,a[1])来取代m的原值。
//再用m的新值与之后的数进行比较,依此类推	

36.有一个一维数组score,内放10个学生成绩,求平均成绩

#include<stdio.h>
float average(float arr[10])
{
	int i = 0;
	float sum = arr[0];
	float average = 0;
	for (i = 1; i < 10; i++)
		sum = sum + arr[i];
		average = sum / 10;
		return average;
}
int main()
{
	float score[10];
	int i = 0;
	float ret = 0.0;
	for (i = 0; i < 10; i++)
	{
		scanf("%f", &score[i]);
	}
	printf("\n");
	ret = average(score);
	printf("%f", ret);
	return 0;
}

37.有一个一维数组,内放置了10个学生的成绩,写一个函数,当主函数调用这个函数的时候,能求出平均分,最高分和最低分。

#include<stdio.h>
float MAX, MIN;
float average(float arr[], int n)
{
	int i = 0;
	float aver, sum = arr[0];
	MAX = MIN = arr[0];
	for (i = 1; i <n; i++)
	{
		if (arr[i] > MAX)
		{
			MAX = arr[i];
		}
		else if (arr[i] < MIN)
		{
			MIN = arr[i];
		}
		sum = sum + arr[i];
	}
	aver = sum / n;
	return(aver);
}
int main()
{
	float average(float arr[], int n);
	float arr[10],ave;
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("a[%d]= ", i);
		scanf("%f", &arr[i]);
	}
	for (i = 0; i < 10; i++)
	{
		printf("%f ", arr[i]);
	}
	ave = average(arr, 10);
	printf("\n");
	printf("max=%6.2f\n,min=%6.2f\n,average=%6.2f\n", MAX, MIN, ave);
	return 0;
}

38.输入1-5的阶乘值

#include<stdio.h>
int fac(int i)
{
	static int sum = 1;       //static不释放
	sum = sum * i;
	return(sum);
}
int main()
{
	int i = 1;
	int ret = 1;
	for (i = 1; i <= 5; i++)
	{
		ret = fac(i);
		printf("%d!=%d\n", i,ret);
	}
	return 0;
}

39.调用函数求三个整数中的最大值

#include<stdio.h>
int MAX(int m, int y, int n)
{
	int max = m;
	if (n > m)
		max = n;
	if (y > m)
	    max = y;
	return(max);
}
int main()
{
	int a, b, c;
	int ret = 0;
	scanf("%d %d %d", &a, &b, &c);
	ret = MAX(a, b, c);
	printf("%d", ret);
	return 0;
}

40.360面试题

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	printf("%d %d %d %d", a, b, c, d);
	return 0;
}
//1 2 3 4
#include<stdio.h>
int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	printf("%d %d %d %d", a, b, c, d);
	return 0;
}
//2 3 3 5
#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ || ++b || d++;
	printf("%d %d %d %d", a, b, c, d);
	return 0;
}
//1 3 3 4

41.编写程序数一下 1到 100 的所有整数中出现多少次数字9

#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i%10==9)
		{
			count++;
			printf("%d ", i);
		}
		if (i / 10 ==9)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\n");
	printf("%d", count);
	return 0;
}

42.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

#include<stdio.h>
int main()
{
	int i = 1;
	int j = -1;
	float sum = 0.0;
	float z = 1.0;
	for (i = 1; i <= 100; i++)
	{
		j = (-1) * j;
		z = j * (1.0 / i);
		sum = sum + z;
	}
	printf("%f", sum);
	return 0;
}

43.将数组A中的内容和数组B中的内容进行交换。(数组一样大)

#include<stdio.h>
void Swap(int arr1[], int arr2[], int len)
{
	int i = 0;
	int temp;
	for (i = 0; i < len; i++)
	{
		int temp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = temp;
	}
}
int main()
{
	int i = 0;
	int arr1[10] = { 1,3,5,7,9,2,4,6,8,10 };
	int arr2[10] = { 2,5,6,8,10,1,3,5,7,9 };
	int len = sizeof(arr1) / sizeof(arr1[0]);
	Swap(arr1, arr2,len);
	for (i = 0; i < len; i++)
	{
		printf("%d", arr1[i]);
	}
	printf("\n");
	for (i = 0; i < len; i++)
	{
		printf("%d", arr2[i]);
	}
	return 0;
}

44.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9 * 9口诀表,输入12,输出12 * 12的乘法口诀表。

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int k = 0;
	scanf("%d",&k);
	for (i = 1; i <= k; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%2d ",i,j,i*j);
		}
		printf("\n");
	}
	return 0;
}
发布了39 篇原创文章 · 获赞 37 · 访问量 1998

猜你喜欢

转载自blog.csdn.net/weixin_43831728/article/details/96844592