C语言基础

目录

1.什么是分支?

1.1  if语句

1.2  分支语句中常见的表达式形式

1.3  表达式1?表达式2:表达式3

1.4  switch语句

2.什么是循环?

2.1  用while语句循环做数学运算

2.2  用while语句循环

2.3  用break语句提前终止循环

2.4  用continue语句提前结束本次循环

2.5  用do……while语句循环

2.6  用for语句循环

2.7  while语句、do……while语句、for语句的区别

3.什么是数组?

3.1  定义一维数组

3.2  定义二维数组

3.3  定义字符数组

3.4  输出字符数组

3.5  输入字符数组

4.什么是函数?

4.1  调用有参函数

4.2  调用无参函数

4.3  函数的嵌套

4.4  函数的递归

5.什么是指针、什么是地址?

5.1  指针变量与普通变量

5.2  指针变量与一维数组

5.3  指针变量与函数

5.4  返回指针值的函数

5.5  指针与一维二维数组的数值关系

6.什么是struct结构体?

6.1  定义结构体

6.2  结构体数组

6.3  使用结构体变量做函数参考

6.4  结构体变量与指针变量


#考研数据结构必备C语言基础

1.什么是分支?

C语言是一门 结构化 的程序设计语言。

无非存在这三种结构:①顺序结构;②选择结构;③循环结构

分支语句(选择结构)

1.1  if语句

例:输入一个整数,如果该数大于60,则输出“你帅!”;

       如果该数不大于60,则输出“你贼帅!”。

#include <stdio.h>

int main()
{
	int a;
	scanf("%d",&a);
	if(a>60)
	{
		printf("你帅!\n");
	}
	else
	{
		printf("你贼帅!\n");
	}
	return 0;
}

例:

#include <stdio.h>

int main()
{
	int x, y;
	scanf("%d", &x);
	if(x<0)
	y=-1;
	else
	if(x>0)
	y=1;
	else
	y=0;
	printf("x=%d, y=%d\n", x, y);
	return 0;
}

1.2  分支语句中常见的表达式形式

 例:请编一程序,判断某一年是否是闰年。(注:当年份不是100的倍数且是4的倍数时,该年是闺年;当年份是100的倍数且是400的倍数时,该年也是闰年)

#include <stdio.h>

int main()
{
	int a;
	printf("请输入年份\n");
	scanf("%d", &a);
	if((a % 100 != 0 && a % 4 == 0) || a % 400 == 0)
	printf("%d年是闰年\n",a);
	else
	printf("%d年不是闰年\n",a);
	return 0;
}

例:输入一个字符,判断它是否为大写字母,若是则将其转换成小写字母,若不是则不转换,然后输出最后得到的字符。

#include <stdio.h>

int main()
{
	char ch;
	scanf("%c", &ch);
	if(ch>='A'&&ch<='Z')
	ch=ch+32;
	printf("%c\n", ch);
	return 0;
}

1.3  表达式1?表达式2:表达式3

例:输入一个字符,判断它是否为大写字母,若是则将其转换成小写字母,若不是则不转换,然后输出最后得到的字符。

#include <stdio.h>

int main()
{
	char ch;
	scanf("%c", &ch);
	ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
	printf("%c\n", ch);
	return 0;
}

1.4  switch语句

例:某课成绩原为A、B、C、D四个等级,现要将其转成百分制分数段,规则是:A等转成85~100,B等转成70~84,C等转成60~69,D等转成<60。请编一程序,成绩等级由键盘输入,输出分数段。

#include <stdio.h>

int main()
{
	char dengji;
	scanf("%c", &dengji);
	switch(dengji)
	{
		case'A':printf("该生分数为85~100\n");break;
		case'B':printf("该生分数为70~84\n");break;
		case'C':printf("该生分数为60~69\n");break;
		case'D':printf("该生分数为<60\n");break;
		default:printf("该生的等级输的不对!\n");break;
	}
	return 0;
}

例:某课成绩原为百分制,现要将其转成等级,规则是:90分以上为A、80~89分为B、70~79分为C、60~69分为D、60分以下为E。请编一程序,分数由键盘输入,输出等级。

#include <stdio.h>

int main()
{
	double fenshu;
	printf("请输入分数:");
	scanf("%lf", &fenshu);
	switch((int)(fenshu/10))
	{
		case 10:
		case 9:printf("该生等级为A\n");break;
		case 8:printf("该生等级为B\n");break;
		case 7:printf("该生等级为C\n");break;
		case 6:printf("该生等级为D\n");break;
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
		case 0:printf("该生等级为E\n");break;
		default:printf("该生的成绩输的不对!\n");break;
	}
	return 0;
}

2.什么是循环?

2.1  用while语句循环做数学运算

方法:

 例:求2+4+6+……+100

#include<stdio.h>
int main()
{
	int n=1, sum=0, a=2;
	while(n<=50)
	{
		n=n+1;
		sum=sum+a;
		a=a+2;
	}
	printf("计算结果是%d\n", sum);
	return 0;
}

2.2  用while语句循环

例:导演今儿选演员,有一堆人排着队一个接一个地给他表演才艺以求被选上。导演总共只肯看她们300分钟。请编程统计300分钟后,导演看了多少人。

#include<stdio.h>
int main()
{
	float zongshijian=0, shijian;
	int n=0;
	while(zongshijian<300)
	{
		printf("请输入第%d个人的表演时间(单位为分钟):",n+1);
		scanf("%f", &shijian);
		zongshijian=zongshijian+shijian;
		n=n+1;
	}
	printf("导演看了%d个人\n",n);
	return 0;
}

例:请编程输出100~300之间(包括100与300)的数。

#include<stdio.h>
int main()
{
	int n=99;
	while(n<300)
	{
		n=n+1;
		printf("%d\t", n);
	}
	return 0;
}

2.3  用break语句提前终止循环

例:导演今儿选演员,有一堆人排着队一个接一个地给他表演才艺以求被选上。导演总共只肯看她们300分钟。并且最多看100个人,请编程统计导演看了多少个人,总共看了多长时间?

#include<stdio.h>
int main()
{
	float zongshijian=0, shijian;
	int n=0;
	while(zongshijian<300)
	{
		printf("请输入第%d个人的表演时间(单位为分钟):",n+1);
		scanf("%f", &shijian);
		zongshijian=zongshijian+shijian;
		n=n+1;
		if(n>=100)
		break;
	}
	printf("导演看了%d个人\n",n);
	return 0;
}

2.4  用continue语句提前结束本次循环

例:请编程输出100~300之间(包括100与300)不能被4整除的数。

#include<stdio.h>
int main()
{
	int n=99;
	while(n<300)
	{
		n=n+1;
		if(n%4==0)
		continue;
		printf("%d\t", n);
	}
	return 0;
}

2.5  用do……while语句循环

 例:求2+4+6+……+100

#include<stdio.h>
int main()
{
	int n=1,sum=0,a=2;
	do
	{
		n=n+1;
		sum=sum+a;
		a=a+2;
	}
	while(n<=50);
	printf("计算结果是%d\n", sum);
	return 0;
}

2.6  用for语句循环

方法: 

语句1:初值变量

语句2:循环条件

语句3:自加or自减

例:

 

#include<stdio.h>
int main()
{
	int sum, a, n;
	for(sum=0, a=1, n=1;n<=20;n=n+1)
	{
		a=n*a;
		sum=sum+a;
	}
	printf("计算结果是%d\n", sum);
	return 0;
}

2.7  while语句、do……while语句、for语句的区别

1.do while语句和其他两种语句的区别:
1)for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
2)do…while语句至少可以执行一次,另外两种有可能一次都执行不了

2.while语句和for的区别:
1)代码层面: while语句声明的初始化变量,在while结束之后,还能继续使用;
for中声明的初始化变量,在for结束之后,就无法使用了.
2)设计层面: 循环次数确定的话,建议使用for;循环次数不确定建议使用while。

详细例子如下:
编程计算1+2+3+……+100

  • 用for循环
#include <stdio.h>
int main()
{
	int i,sum=0;
	for(i=1;i<=100;i++)
	{
		sum+=i;
	}
	printf("%d",sum);
	return 0; 
}
  • 用while循环
#include <stdio.h>
int main()
{
	int i=1,sum=0;
	while(i<=100)
	{
		sum+=i;
		i++;
	}
	printf("%d",sum);
	return 0;
}
  • 用do……while循环
#include <stdio.h>
int main()
{	
     int i=1,sum=0;	
     do{		
        sum+=i;		
        i++;	
        }while(i<=100);
	 printf("%d",sum);	
	 return 0;
}

3.什么是数组?

3.1  定义一维数组

 理解一维数组内部结构:

例:输入10个数(整数),对它们有小到大排序并输出排序后的结果。

#include<stdio.h>
int main()
{
	int a[10];
	int i, j, t;
	printf("请输入10个数:\n");
	for(i=0;i<=9;i++)
		scanf("%d", &a[i]);
	for( i=0;i<=8;i++)
		for( j=i+1;j<=9;j++)
			if(a[i]>a[j])
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
	printf("排序后的数字依次是:\n");
	for( i=0;i<=9;i++)
		printf( "%d\t",a[i] );
	printf( "\n");
	return 0;
}

3.2  定义二维数组

理解二维数组内部结构:

 例:

 思维:

#include<stdio.h>
int main()
{
	int a[2][3]={1, 2, 3, 4, 5, 6};
	int b[3][2], i, j;
	for(i=0;i<=1;i++)
	for(j=0;j<=2;j++)
	b[j][i]=a[i][j];
	printf("数组b为:\n");
	for(j=0;j<=2;j++)
	{
		for(i=0;i<=1;i++)
		printf( "%d\t", b[j][i]);
		printf( "\n");
	}
	return 0;
}

3.3  定义字符数组

理解字符数组内部结构:

3.4  输出字符数组

  •  挨个输出printf ("%c", )

例:定义一个字符串“hello world”,然后输出这个字符串。

#include<stdio.h>
int main()
{
	char c[11]={'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
	int i;
	for(i=0;i<=10;i++)
	printf("%c", c[i]);
	printf("\n");
	return 0;
}
  • 整体输出printf("%s", )

例:定义一个字符串“hello world”,然后输出这个字符串。

#include<stdio.h>
int main()
{
	char c[11]={'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
	printf("%s\n",c);
	return 0;
}
  • puts()

例:定义一个字符串“hello world”,然后输出这个字符串。

#include<stdio.h>
int main()
{
	char c[12]={'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd','\0'};
	puts(c);
	return 0;
}

3.5  输入字符数组

  • 挨个单词输入scanf("%s%s....", )
  • 整句输入gets()

例:键盘输入“hello world”时,将这句话存入数组。(挨个输入)

  1. #include<stdio.h>
    int main()
    {
    	char c1[6], c2[6];
    	scanf("%s%s", c1, c2);
    	return 0;
    }

    例:键盘输入“hello world”时,将这句话存入数组。(整句输入)

  • #include<stdio.h>
    int main()
    {
    	char char[15];
    	gets(c);
    	return 0;
    }

    例题:输入一行由空格和单词组成的字符(字符数在8O以内),请统计有多少个单词。

#include<stdio.h>
int main()
{
	char c[81];
	int i, dancishu=1;
	gets(c);
	if(c[0]==' ')
	dancishu=0;
	for(i=0;c[i]!='\0';i++)
	if(c[i]==' '&&c[i+1]!=' '&&c[i+1]!='\0')
	dancishu++;
	printf("有%d个单词",dancishu);
	return 0;
}

4.什么是函数?

4.1  调用有参函数

例:编写一程序,要求用户输入4个数字,输出前两个数中的最大数、后两个数中的最大数,以及四个数中的做大数。

#include<stdio.h>
int main()
{
	float max(float x, float y);
	float a[4];
	int i;
	float t, u, v;
	for(i=0;i<=3;i++)
	{
		printf("请输入第%d个数字:", i+1);
		scanf("%f", &a[i]);
	}
	t=max(a[0], a[1]);
	u=max(a[2], a[3]);
	v=max( t, u);
	printf("前两个数中的最大数为%f\n", t);
	printf("后两个数中的最大数为%f\n",u);
	printf("四个数中的最大数为%f\n", v);
	return 0;
}

float max(float x, float y)
{
	return(x>y?x:y);
}

例:有两个小组,分别有5名学生和10名学生。请编程输入这些学生的成绩,并调用一个aver函数求这两个小组的平均分。

#include<stdio.h>
int main()
{
	float aver(float a[], int n);
	float zu1[5], zu2[10];
	int i;
	printf("请输入第一组的学生成绩:\n");
	for(i=0;i<=4;i++)
	scanf("%f", &zu1[i]);
	printf("请输入第2组的学生成绩:\n");
	for(i=0;i<=9;i++)
	scanf( "%f", &zu2[i]);
	printf( "第一组平均分是%f\n", aver( zu1, 5));
	printf( "第二组平均分是%f\n", aver( zu2, 10));
	return 0;
}

float aver( float a[], int n)
{
	float sum=a[0], pingjunshu;
	int i;
	for( i=1;i<n;i++)
	sum=sum+a[i];
	pingjunshu = sum/n;
	return(pingjunshu);
}

4.2  调用无参函数

例:请编程输出以下内容:

        1234567

        你是大帅比

        7654321

        你是大帅比

        7654321

        你是大帅比

#include<stdio.h>
int main()
{
	void a();
	void b();
	void c();
	a();
	b();
	c();
	b();
	c();
	b();
	return 0;
}

void a()
{
	printf("1234567\n");
}
void b()
{
	printf("你是大帅比\n");
}
void c()
{
	printf("7654321\n");
}

4.3  函数的嵌套

例:请编程输入4个整数,并找出其中最大的数。

#include<stdio.h>
int main()
{
	int max4(int a,int b,int c,int d);
	int a,b,c,d,zuidashu;
	printf("请输入4个整数:\n");
	scanf("%d %d %d %d", &a,&b,&c,&d);
	zuidashu=max4(a,b,c,d);
	printf("最大数为%d\n",zuidashu);
	return 0;
}

int max4(int a,int b,int c,int d);
{
	int max2(int a,int b);
	return(max2(max2(max2(a,b), c), d));
}

int max2(int a,int b)
{
	return(a>b?a:b);
}

4.4  函数的递归

例:用递归方法求n!

#include<stdio.h>

int main()
{
	int jiecheng(int n);
	int n;
	printf("请输入一个整数:");
	scanf("%d", &n);
	printf("%d!=%d\n", n,jiecheng(n));
	return 0;
}
int jiecheng(int n)
{
	int jieguo;
	if(n<0)
	printf("n<0, 数字输入的不对!");
	else if(n==0||n==1)
	jieguo=1;
	else
	jieguo=jiecheng(n-1)*n;
	return(jieguo);
}

5.什么是指针、什么是地址?

指针:指明方向和位置的针。类似于身份证,通过身份证可以找到一个人的住址。

  • 计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节
  • 我们将内存中字节的编号称为地址(Address)或指针(Pointer)地址从 0 开始依次增加,对于 32 位环境,程序能够使用的内存为 4GB,最小的地址为 0,最大的地址为 0XFFFFFFFF。

5.1  指针变量与普通变量

指针=&变量    *指针=指针指定的变量的值

int *p,a=5;

p=&a;

int *q,b=10;

q=&b;

int c,d;

c=*p+1;        6

d=*q+1;        11

*p = 99;         a=99;

*q = 100;        b=100;

例:输入两个整数,按先大后小的顺序输出这两个数。请用指针来编程。

#include<stdio.h>

int main()
{
	int a, b, *p, *q, *r;
	printf("请输入两个整数:\n");
	scanf("%d, %d", &a, &b);
	p=&a;
	q=&b;
	if(a<b)
	{
		r=p;
		p=q;
		q=r;
	}
	printf("较大数为%d  较小数为%d\n", *p, *q);
	return 0;
}

5.2  指针变量与一维数组

  • 指针=&数组名[某数]
  • *指针=指针指定的变量的值
  • 指针+i = &数组名[某数=i]
  • &数组名[某数]  相当于  数组名+某数
  • 数组名[某数]  相当于  *(数组名+某数)

例:一个整型数组里的5个元素由键盘输入,将每个元素变为原来的两倍后再依次输出。

#include<stdio.h>

int main()
{
	int a[5];
	int i, *p;
	p=&a[0];
	printf("请输入5个整数:\n");
	for(i=0;i<=4;i++)
	{
		scanf("%d", p+i);
		*(p+i)=*(p+i)*2;
	}
	printf("加倍后的各整数为:\n");
	for(i=0;i<=4;i++)
	printf("%d\t", *(p+i));
	printf("\n");
	return 0;
}

5.3  指针变量与函数

例:输入两个整数,然后让用户选择1或2,选1时调用max函数输出二者中的较大数,选2时调用min函数输出二者中的较小数。

#include<stdio.h>
int main()
{
	int max(int x, int y);
	int min(int x, int y);
	int (*p)(int, int);
	int a, b, xuanze;
	printf("请输入俩整数:\n");
	scanf("%d, %d", &a, &b);
	printf("请输入1或2:");
	scanf("%d", &xuanze);
	if(xuanze==1)
	p=max;
	else if(xuanze==2)
	p=min;
	else
	printf("您选的不对!");
	printf("结果为%d\n", (*p)(a, b));
	return 0;
}

int max(int x, int y)
{
	return(x>y?x:y);
}

int min(int x, int y)
{
	return(x<y?x:y);
}

5.4  返回指针值的函数

例:有3名学生学习4门课,学生一的成绩分别是65、67、70、60,学生二的分别是80、87、90、81,学生三的分别是90、99、93、98。用指针函数来编程,要求在用户输入学生序号以后,能输出该学生的各科成绩。

#include<stdio.h>

int main()
{
	float *chazhao(float(*hang)[4], int n);
	float a[3][4]={{65,67,70,60},{80,87,90,81},{90,99,93,98}};
	float *p;
	int xuhao, i;
	printf("请输入学生序号:");
	scanf("%d", &xuhao);
	printf("第%d名学生的成绩:\n", xuhao);
	p=chazhao(a, xuhao-1);
	for(i=0;i<=3;i++)
	printf("%f\t", *(p+i));
	printf("\n");
	return 0;
}

float *chazhao(float(*hang)[4],int n)
{
	int *q;
	q=(hang+n)[0];
	return(q);
}

5.5  指针与一维二维数组的数值关系

&a[i] = a + i

a[i] = *(a+i)

注:关于指针的知识还有很多,有兴趣的下去可以自学。

6.什么是struct结构体?

6.1  定义结构体

结构体的基本知识:

struct student

{

        int xuehao;

        char name[30];

        char sex;

        float chengji;

};

struct student a={001,"Zhangsan",'M',100};

上面两块合起来可以这样写:

struct student

{

        int xuehao;

        char name[30];

        char sex;

        float chengji;

}a={001,"Zhangsan",'M',100};

a.xuehao = 001;

a.name = "Zhangsan";

a.sex = 'M';

a.chengji = 100;

例:把一个学生的信息(学号:001、姓名: houge、性别:M、住址: beijing)放在一个结构体变量中,然后输出这个学生的信息。

#include<stdio.h>
struct student
{
	int xuehao;
	char name[30];
	char sex;
	char adress[60];
}a={001, "Zhangsan", 'M', "beijing"};

int main()
{
	printf("学号:%d\n姓名:%s\n性别:%c\n住址:%s\n", a.xuehao, a.name, a.sex, a.adress);
	return 0;
}

例:输入两个学生的学号、姓名和成绩,输出成绩较高者的学号、姓名和成绩。若二者相等,则输出两个学生的全部信息。

#include<stdio.h>
struct student
{
	int xuehao;
	char name[30];
	float chengji;
}a, b;

int main()
{
	printf("请输入第一个学生的学号、姓名、成绩:\n");
	scanf("%d, %s, %f", &a.xuehao, a.name, &a.chengji);
	printf("请输入第二个学生的学号、姓名、成绩:\n");
	scanf("%d, %s, %f", &b.xuehao, b.name, &b.chengji);
	printf("成绩较高者的信息如下:\n");
	if(a.chengji>b.chengji)
	printf("%d\t%s\t%f\n", a.xuehao, a.name, a.chengji);
	else if(a.chengji<b.chengji)
	printf("%d\t%s\t%f\n", b.xuehao, b.name, b.chengji);
	else
	{
		printf("%d\t%s\t%f\n", a.xuehao, a.name, a.chengji);
		printf("%d\t%s\t%f\n", b.xuehao, b.name, b.chengji);
	}
	return 0;
}

6.2  结构体数组

基本结构:

struct student

{

int xuehao;

char name[30];

float chengji;

}xuesheng[2]={{001,"zhangsan",90},{002,"lisi",100}};

xuesheng[0].xuehao=001;        xuesheng[0].name="zhangsan";

xuehsneg[1].xuehao=002;        xuesheng[1].name="lisi";

例:有三名学生的3项信息:学号、姓名和成绩。请编程按成绩由高到低输出各学生的信息。信息为:001,zhangsan,99;002,lisi,20;003,wangwu,90

#include<stdio.h>
struct student
{
	int xuehao;
	char name[30];
	float chengji;
}xuesheng[3]={{001,"zhangsan",99},{002,"lisi",20},{003,"wangwu",90}};

int main()
{
	struct student linshi;
	int i, j;
	for(i=0;i<2;i++)
		for(j=i+1;j<3;j++)
		if(xuesheng[j].chengji>xuesheng[i].chengji)
		{
			linshi=xuesheng[i];
			xuesheng[i]=xuesheng[j];
			xuesheng[j]=linshi;
		}
		printf("排序后的各学生信息如下:\n");
		for(i=0;i<3;i++)
		printf("%d\t%s\t%f\n", xuesheng[i].xuehao, xuesheng[i].name, xuesheng[i].chengji);
	return 0;
}

6.3  使用结构体变量做函数参考

例:键盘输入五名学生的信息(包括学号、姓名和2门课程的成绩),并输出平均分最高的学生的信息。

#include<stdio.h>
struct student
{
	int xuehao;
	char name[30];
	float fen1;
	float fen2;
}sheng[5];

int main()
{
	struct student max(struct student a[]);
	struct student xueba;
	int i;
	for(i=0;i<=4;i++)
	{
		printf("请输入第%d名学生的学号、姓名和2门成绩:\n", i+1);
		scanf("%d, %s, %f, %f", &sheng[i].xuehao, sheng[i].name, &sheng[i].fen1, &sheng[i].fen2);
	}
	xueba=max(sheng);
	printf("平均分最高的学生信息如下:\n");
	printf("学号:%d\n姓名:%s\n2门成绩:%f, %f\n", xueba.xuehao, xueba.name, xueba.fen1, xueba.fen2);
	return 0;
}

struct student max(struct student a[])
{
	float average[5];
	int i, highest;
	for(i=0;i<=4;i++)
	average[i]=(a[i].fen1+a[i].fen2)/2;
	for(highest=0,i=1;i<=4;i++)
	if(average[highest]<average[i])
	highest=i;
	return(a[highest]);
}

6.4  结构体变量与指针变量

例:把一个学生的信息(包括学号、姓名、性别3项信息)放在一个结构体变量中,然后输出这个学生的信息。

#include<stdio.h>
struct student
{
	int xuehao;
	char name[30];
	char sex;
}a={001, "zhangsan", 'M'};

int main()
{
	struct student *p;
	p=&a;
	printf("学号:%d\n姓名:%s\n性别:%c\n", p->xuehao, p->name, p->sex);
	return 0;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值