期末复习 c语言知识点归纳
期末复习C语言知识点归纳
一、概述
1.一个C语言源程序可以由一个或多个函数组成,有且只有1个main()函数,可以放在程序中的任何位置.
2.一个C程序不论有几个函数,都是从main()函数开始执行.
3. 标识符
按照C语言所定义的
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
来命名的符号。 规则: 由字母、数字、下划线组成,但第一个字符必须
是字母或下划线。
例如: area、a234、_1234为合法标识符
456P、a-b、a+b为非法标识符 注意: 标识符区分大小写。
例如: PAGE和page是两个不同的标识符。
4.c语言有32个关键字~关键字不能用作用户标识符。
5. C源程序文件的扩展名".c" 。 6.VC++6.0下c 语言程序的完整实现过程包括4个基本步骤:
, 编辑源程序
, 编译源程序
, 构建,链接,形成可执行文件,.exe, , 运行可执行文件.
二、数据类型、表达式
1.c语言中~整型、字符型、实型是最基本的数据类型.
2. 常量
指在程序运行中,其值不能被改变。 分为整型常量、实型常量、字符常量、字符串常量。
, 整型常量
C语言中主要有十进制、八进制、十六进制等。
十进制 例如 12、-3、32767等。 八进制 用数字0开头,由0-7这8个数字组成。
例如 010、016为合法八进制数
127、018为非法八进制数 十六进制 用数字0和字母x或X开头,用0-9表示前10
个数字,字母A-F(可小写)表示后6个数字。
例如 0xAF、0x10、0x34为合法十六进制数
100、ABC、0xAFH为非法十六进制数
注意: C语言中只有十进制数可以为负数。 , 实型常量
表示方式有两种: 小数形式和指数形式。 小数形式
例如: 0.123、.123、123. 都是合法形式。 指数形式
例如: 2.3026可用以下任何一种指数表示
0.23026E1、2.3026e0、23.026E-1
但下面的指数形式为非法
E3、.5e3.6、2.3e -2(e和-2间有空格)
, 符号常量
用符号名来表示一个常量。
格式: #define 符号名 常量值
例: 已知圆的半径为5.0,计算圆的面积(圆周率取3.14)。
#include
#define PI 3.14
main()
{ double r, s;
r=5.0;
s=PI*r*r;
printf(“s=%f\n”,s);
}
C语言中整型常量的3种表示: 8进制以0引导,16进制以0x或0X引导,十进制不能以0开头. , 实型,float或double型,常量在程序中只能用十进制
数~不能用其他进制表示。2种表示形式,普通的和指数
形式,如3e5或者3E5, 三者不可省略任何一部分.
, 一个字符常量占一个字节存储空间.用单引号限定 ~如:
?A?
?\0x41? (为转义字符~表示以十六进制数41为ASCII码值的字符~即?A?的转义字符形式).
„\0? , 表示空字符~在字符串中用作字符串的结束标志,
11.字符串常量用英文双引号括起来. 如:”hello\n”
, 字符串中的字符个数称为字符串的长度.空字符串长度为
0.
, 字符串存储中每个字符占一个字节,字符串结尾自动加一
个结束标志符’\0’,所以字符串存储的时候~占用的空
间长度要比串的实际长度多1. 如: char ch[ ]={“Hello”}; 实际串的长度为5~但数组空间长度为6。
, 变量
指在程序运行过程中其值可以改变的量。 变量的命名必须符合标识符的命名规则,且不能和C语言
中关键字同名。(例如: main是关键字) 例如: a、b、ab为合法变量
define、printf为非法变量 注意: ab是一个整体,含义不同于a乘以b。
, 有符号整型变量用英文singned表示,存储时最高一位是
符号位,无符号整型变量用英文unsigned表示.
, 字符型变量的数据类型标识符是符号char,每个字符型
变量只能存储一个字符.
例如: „A?、?c?、?5„都是合法的字符常量。
”A”、?abc?都是非法的字符常量。 , 常见的转义字符:
\n 回车换行 \\ 反斜杠 \? 单引号 \”双引号
\ddd 三位八进制 \xhh 二位十六进制
\0 空值
例1: „\n?表示回车换行 „\??表示一个单引号
例2: „\101?表示字符?A? „\x41?表示字符?A?
, 字符变量
用关键字char定义,可以同时赋初值。 例1 定义两个字符变量ch1和ch2。
char ch1,ch2;
例2 定义两个字符变量a和b,初值分别为?1?和?2?。
char a=?1?, b=?2?;
, getchar函数和putchar函数 分别用来输入字符和输出字符。
, 字符的输入和输出
使用scanf和printf时,格式符均为%c。
例1 从键盘上输入一个字符保存在ch中。
char ch;
ch=getchar();
例2 char c1=?A?, c2;
c2=c1+1;
putchar(c2);
输出结果是?B?。
例3 输出一个回车换行符。
putchar(„\n?);
例: 从键盘上输入一串字符,最后以?!?为结束标志。分别
统计大写字母,小写字母、数字出现的次数。
#include
main()
{
char ch;
int n1=0,n2=0,n3=0;
printf(“请输入一串字符以!结束:\n”);
ch=getchar();
while(ch!='!')
{
if(ch>='A' && ch<='Z')
n1++;
if(ch>='a' && ch<='z')
n2++;
if(ch>='0' && ch<='9')
n3++;
ch=getchar();
}
printf("大写字母出现次数是%d\n",n1);
printf("小写字母出现次数是%d\n",n2);
printf(“数字出现次数是%d\n",n3);
}
, VC++ 6.0 下~int 型数据占4个字节~float型数据占4
个字节~ double型数据 占8个字节~.char型数据 占1
个字节.
, 算术运算符
+、-、*、/、%(求余数)
例如: 3+2 1.2*3.2 5%3 1/2 求余运算符%只能用于整型数据的相除求余数~结果为整数. 如: 7%2.0 为非法表达式~7/2结果为3~ 7%2 结果为1
运算规则
1)如果运算数类型一致,则结果为运算数的类型。所有实数运算都是以双精度进行.
2)如果运算数类型不一致,则系统自动转换,使运算符
两边类型一致后再进行运算。 char 和short参与运算先转换成同int . 赋值运算中,赋值号右侧量的类型将转换成左侧的类型.
例1 1.0/2.0结果为0.5
例2 1/2结果为0
例3 15/3.0结果为5.0
, 强制类型转换
格式: (类型名)(表达式)
例4 (int)3.234结果为3
例5 (float)(10%3)结果为1.000000
, 关系运算符
>,>=,<,<=的优先级相同且高于==,!=的优先级.
关系运算符的优先级低于算术运算符高于赋值运算符.
关系运算符是左结合性.
, 关系表达式的值为真则是1,假为0. , 逻辑运算符!高于&&,和||,高于算术运算符.&&和||是左
结合的,!是右结合的.
, 注意&&及||运算的短路现象。 && 的短路运算:
,表达式1,&& ,表达式2,~若,表达式1,的值为0~则表达式2将不被计算~整个&&的结果为0。
|| 的短路运算:
,表达式1,|| ,表达式2,~若,表达式1,的值为1~则表达式2将不被计算~整个||的结果为1。
, 数学关系式0或者 #include"文件名",调用标准函
数中的输入输出函数~#include "stdio.h" ~如果调用
数学函数,如 sqrt函数、fabs函数等,~则应加上
#include "math.h " 或者#include
四、分支结构
, 关系运算符
>、<、>=、<=、==、!=
关系运算的结果只有两种: 真或假 C语言中用1表示真,用0表示假。 例1 6>=6 „a?>?A? „5?>? „ 结果均为真,值为1
例2 6!=6 „D?==?d? „9?>?F? 结果均为假,值为0
, 逻辑运算符
&&(与) ||(或) !(非)
优先级: 非运算>与运算>或运算
非运算规则
操作数 结果
真 假
假 真
与运算规则 操作数1 操作数2 结果
真 真 真
真 假 假
假 真 假
假 假 假
或运算规则 操作数1 操作数2 结果
真 真 真
真 假 真
假 真 真
假 假 假
例1 若变量a值为10,变量b值为16,计算表达式。
a>b || a>sqrt(b) && b>=16
最后结果为真,表达式的值为1 , if语句的一般形式: 单分支结构:
if(表达式) 语句
若表达式为真,则执行语句;否则if语句结束。
二选一结构:
if(表达式)
{语句组1}
else
{语句组2}
表达式的值非0才执行语句组1,否则执行语句组2.
例1 从键盘上输入两个整数,输出较大的数。
#include
main()
{
int x,y;
printf(“请输入两个整数:\n”);
scanf(“%d%d”,&x,&y);
if (x>y)
printf(“%d”,x);
else
printf(“%d”,y);
}
, 条件运算符
格式: 表达式1? 表达式2: 表达式3 若表达式1为真,结果为表达式2;否则为表达式3。
例如: x的初值为5,执行以下语句
y=++x>6?100:200; 最后y的值为200
, if语句可嵌套,在花括号里继续使用. 多选一结构:
if(表达式1)
{语句组1}
else if(表达式2)
{语句组2}
else if(表达式3)
{语句组3}
else
{语句组n}
例1 根据输入的学生成绩,大于或等于90分为A,60
分以下等级为E,其余每10分一个等级。
#include
main()
{
int g;
printf(“请输入一个整数:\n”);
scanf(“%d”,&g);
if (g>=90) printf(“A\n”);
else if(g>=80) printf(“B\n”);
else if(g>=70) printf(“C\n”);
else if(g>=60) printf(“D\n”);
else printf(“E\n”);
}
, switch(表达式) // switch表达式通常为整型或字符型
值
{
case常量1:语句组1 //case后面必须是常量
case常量2:语句组2
.........
default:语句组 //也可省略该语句 }
可以使用中break 来中止后面语句的执行. , switch表达式通常为整型或字符型值,case中的常量类
型与之对应,case后面的表达式可以是常量或常量表达
式,不能为变量表达式.
switch语句
格式:
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
……
case 常量表达式n-1: 语句n-1
default: 语句n
}
若表达式的值与表达式1相等,则执行语句1;若与表达
式2相等,则执行语句2……若均不相等则执行语句n。
例1 用switch语句重写学生等级程序。 #include
main()
{
int g;
printf(“请输入一个整数:\n”);
scanf(“%d”,&g);
switch(g/10)
{
case 10: printf(“A\n”); break;
case 9: printf(“A\n”); break;
case 8: printf(“B\n”); break;
case 7: printf(“C\n”); break;
case 6: printf(“D\n”); break;
default: printf(“E\n”);
}
}
程序中break表示跳过后面的分支。
五、循环结构
, while循环
格式:
while(表达式) 循环体
若表达式为真,则执行循环体。再判断表达式,若仍为真
则重复执行循环体直到表达式为假时循环结束。
例1 编程计算S=1+2+……100。 #include
main()
{
int k=1,s=0;
while (k<=100)
{ s=s+k; k=k+1; }
printf(“%d”,s); }
, do-while循环
格式:
do
循环体
while(表达式);
先执行循环体,然后判断表达式。若为真则重复执行
循环体直到表达式为假时循环结束。
例1 用do-while循环计算10! #include
main()
{
int k=1;
long s=1;
do
{ s=s*k; k++; }
while (k<=10);
printf(“%ld”,s);
}
注意: while循环和do-while循环的区别
while循环是先判断表达式,因此循环体有可能一次
也不执行。do-while循环是先执行一次循环体,再判
断表达式,所以不论表达式为真为假,循环体至少要
执行一次。
, for循环
格式:
for(表达式1;表达式2;表达式3) 循环体 先执行表达式1,然后判断表达式2,若为真则执行
循环体。然后执行表达式3,再判断表达式2,若仍
为真则重复执行循环体直到表达式2为假时结束。
例1 用for循环计算S=1+2+…100。 #include
main()
{
int k,sum=0;
for(k=1;k<=100;k++)
sum=sum+k;
printf(“%d”,sum);
}
例2 若一个三位数个位、十位、百位的立方和等于它本身
则称这个数为水仙花数。例如153是一个水仙花数。
编程输出所有的水仙花数。 #include
main()
{
int a,b,c,i;
for(i=100;i<=999;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);
}
}
, break语句
适用的场合是switch语句中~及循环语句中。
用在循环体内表示强行退出循环。 例1 计算S=1+2+3+…n,直到累加和大于5000为止。
#include
main()
{
int i,s=0;
for(i=1; ;i++)
{
s=s+i;
if(s>5000) break;
}
printf(“%d”,s); }
注意: 当有多重循环时,break只能退出最内层循环。
, continue语句
用在循环体中用来跳过本次循环余下的语句,立即开始
下一轮循环,整个循环并未结束。 例1 写出下列程序运行结果。
int i, k=0, s=0;
for(i=1;i<=5; i++)
{
s=s+i;
if(s>5)
{ printf(“i=%d,s=%d,k=%d\n”,i,s,k);
continue;
}
k=k+s;
printf(“i=%d,s=%d,k=%d\n”,i,s,k);
}
运行结果:
i=1,s=1,k=1
i=2,s=3,k=4
i=3,s=6,k=4
i=4,s=10,k=4
i=5,s=15,k=4
六、数组
, 数组是包含多项相同类型数据的一种数据结构,它使用同
一个名字命名,再用下标进行分量标识. 数组元素的下标
从0开始,数组长度为n时,最末元素的下标是 n-1.
定义一维数组
格式: 类型名 数组名[元素个数] 例1 定义一个包含4个整数的数组a
int a[4];
例2 定义一个包含3个双精度数的数组b
double b[3];
注意: C语言中数组的下界从0开始计数。 例如: a[4]的4个元素分别为a[0]、a[1]、a[2]、a[3]
, 数组有一维数组,二维数组,和多维数组.数组中的每一个
分量称为一个数组元素。
, 一维数组定义格式
数据类型 数组名[数组长度],
//数组长度指数组中可以存放的数据元素的个数~用整数常量表示~也可用代表一个正整数的符号常量表示
例如:
int array[10];
C语言规定只能逐个使用数组元素,而不能一次使用整个数组。
, 数值型一维数组的初始化,
用一对大括号将数组的初值括起来。 例如:int a[6]={10,20,30,40,50,60}; 注意:C语言中~不允许初值个数多于数组定义的长度。
int a[ ]={10,20,30,40,50,60}; 给初值的情况下~数组的长度可省略~系统以初值的个数作为数组的长度。
, 对部分元素的初始化,例如:int a[6]={10,20,30}是对前
3个元素的赋值.
例1 int a[3]={1, 2, 3};
此例中a[0]值为1、a[1]值为2、a[2]值为3
例2 int a[5]={0};
此例中数组a的全部元素值均为0 例3 int a[3]={1, 2, 3, 4};
此例中由于初值个数多于数组元素个数,所以非法。
例4 int a[ ]={0, 0, 0, 0};
此例中省略数组元素个数,初值为4个0
等价于int a[4]={0};
注意: 数组名是一个常量值,不能对它赋值。
例如: int a[3];
a=5; 此语句非法,应改为a[0]=5; , 一维数组应用
例1 从键盘上输入10个整数,输出最大数和最小数。
#include
main()
{
int a[10],i,max,min;
printf("请输入10个整数:\n");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=1;i<=9;i++)
{
if(a[i]>max) max=a[i];
if(a[i]
main()
{
long a[40];
int i;
a[0]=1;
a[1]=1;
for(i=2;i<=39;i++)
a[i]=a[i-1]+a[i-2];
printf("%ld",a[39]); }
, 字符型一维数组中每1个元素存放一个字符常量.
如:
char ch[]={'\x10', '\x21', '\x1f', '\x5a'};
该数组中的初值字符为转义字符。 , 字符串
用双引号将一串字符括起来称字符串。
C语言中用一维数组来存放,并以?\0?作为结束标志。
„\0?就是0,占用空间但不计入串的实际长度。
例如: 字符串”student”的长度为7,占用空间为8
通常利用字符数组存放字符串。如: char str[20]={ "hello"};
该字符串的实际长度为5个字符~占用的数组空间长度为20
'\0'是字符串的结束标志. 系统在存放一个字符串时~会在串的最后一个字符后添加'\0'。
, 任何一个一维数组在内存中都占用一段连续的空间.
, 用"%s"格式输入字符串时,遇到回车键结束,但获得的字
符中不包含回车键本身,而是在字符串末尾添加'\0'.
, 使用一个一维scanf()函数使用"%s"格式输入多个字符
串时,输入的各字符串之间要以空格键分隔.
如: char ch[20];
scanf(“%s”,ch); //从键盘输入一个字符串存入数组ch
, 用%s格式符为一个字符数组输入字符串时,只有第一个
空格之前的字符串被读入到字符数组中. 如:对上面的ch数组~输入“Hello world:”则只有空格前面的“Hello”被存入数组。 , gets()函数和 puts()函数专门用于字符串的输入输出,
而且只能对一个字符串进行操作. gets()函数格式为:
gets(字符数组名);
如:char str[20];
gets(str); /*从键盘输入一个字符串存入数组ch~输入时以回车键作为结束符.*/
puts()使用格式与gets()相同. puts(str); //输出str数组中存放的字符串
, 字符串常用函数
使用下列函数时要包含头文件 1)字符串拷贝函数
strcpy(s1,s2)
表示将s2复制到s1中。 2)字符串连接函数
strcat(s1,s2)
表示将s2连接到s1后面形成一个新字符串。
3)字符串长度函数
strlen(s)
计算出s的实际长度不包括?\0?。 4)字符串比较函数
strcmp(s1,s2)
若s1>s2,函数返回值大于0
若s1=s2,函数返回值等于0
若s1
#include
main()
{
char* p, str[100];
p=str;
printf("请输入一个字符串:\n");
gets(p);
printf("%d",strlen(p));
}
, 定义二维数组
格式: 类型名 数组名[一维上界][二维上界] 例1 定义一个2行2列的整型数组a
int a[2][2];
此例中数组a共有4个元素,分别是a[0][0]、a[0][1]、
a[1][0]、a[1][1]。
例2 定义一个4行4列的整型矩阵a
int a[4][4];
, 二维数组的初始化
用嵌套的大括号将数组初值括起来。 例1 int a[4][3]={ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
例2 int a[4][3]={ {1,2}, {4,5}, {7}, {10} };
此例中系统自动给空缺的地方补0 例3 int a[4][3]={ {1,2}, {4,5} };
系统自动给后面的行补初值0 例4 int a[4][3]={1, 2, 4, 5};
此例中数组a的第一行中元素和第二行的第一个
元素依次为1,2,4,5其余全部为0 , 定义二维数组大小
例1 int a[ ][3]={ { 1,2,3}, {4,5}, {6}, {8} };
有4个行花括号,因此说明是4行3列。
例2 int a[ ][3]={1, 2, 3, 4, 5};表示一个2行3列数组。
, 定义并初始化二维数组时~数组的列数不能省略。如:
int a[2][]={{1,2},{3,4,5}}; 是错误的。
, 二维数组应用
例:从键盘上输入5个学生3门课程的成绩,分别计算
每个学生的平均分和每门课程的平均分。
#include
#define M 5
#define N 3
main()
{
int a[M][N],i,j,sum;
printf("请输入15个分数(0-100):\n");
for(i=0;i<=M-1;i++)
for(j=0;j<=N-1;j++)
scanf("%d",&a[i][j]);
printf("每个学生的平均分\n");
for(i=0;i<=M-1;i++)
{
sum=0;
for(j=0;j<=N-1;j++)
sum=sum+a[i][j];
printf("%4d",sum/N);
}
printf("\n");
printf("每门课程的平均分\n");
for(i=0;i<=N-1;i++)
{
sum=0;
for(j=0;j<=M-1;j++)
sum=sum+a[j][i];
printf("%4d",sum/M);
}
}
七、函数 , 带返回值的函数 格式:
类型名 函数名(参数列表)
{
语句
return 返回值 }
例1 已知F(X)=2*X+3,计算F(1)+F(2)+….F(10)的值。
#include int f(int x)
{
return 2*x+3; }
main()
{
int i,sum=0;
for(i=1;i<=10;i++)
sum=sum+f(i);
printf("%d",sum); }
例2 编程输出2至100之间所有的素数之和。
#include int isprime(int num) {
int i;
for(i=2;i<=num-1;i++)
if(num%i==0)
return 0;
return 1; }
main()
{
int i,sum=0;
for(i=2;i<=100;i++)
if(isprime(i)==1)
sum=sum+i;
printf("%d",sum);
}
例3 从键盘上输入两个整数,分别输出它们的最大公约数
和最小公倍数。 #include int getmax(int a,int b) {
int result;
result=a
long f(int n)
{
if(n==1 || n==2)
return 1;
else
return f(n-1)+f(n-2);
}
main()
{
printf("%ld",f(40)); }
, 传值和传地址
传值是指子程序中变量的变化不会影响主程序变量。
传地址是指子程序中变量的变化会影响主程序变量。
例1 交换两变量a和b的值。(传值方式)
#include
void change(int a,int b) {
int t;
{ t=a; a=b; b=t; }
}
main()
{
int a=3,b=5;
printf("a=%d b=%d\n",a,b);
change(a,b);
printf("a=%d b=%d\n",a,b);
}
运行结果:
a=3 b=5
a=3 b=5
函数change(int a,int b)为传值方式,最后a和b的值
并未交换。故传值方式不能改变主程序变量的值。
例2 交换两变量a和b的值。(传地址方式)
#include
void change(int* a,int* b) {
int t;
{ t=*a; *a=*b; *b=t; } }
main()
{
int a=3,b=5;
printf("a=%d b=%d\n",a,b);
change(&a,&b);
printf("a=%d b=%d\n",a,b); }
运行结果:
a=3 b=5
a=5 b=3
函数change(int* a,int* b)为传地址方式,最后a和b的值
成功交换。故传地址方式能改变主程序变量的值。
八、指针
, 定义一级指针
格式: 类型名 *变量名;
例1 定义两个指向整型变量的指针p1和p2。
int *p1, *p2;
例2 定义两个整型变量m和n及两个指针p和q,并使
p和q分别指向m和n。
int m, n, *p, *q;
p=&m; 表示p存放变量m的地址
q=&n; 表示q存放变量n的地址 例3 定义一个包含10个整数的数组a和一个指针p,并
使p指向a。
int a[10], *p;
p=a; 表示p指向数组a的首地址,即a[0]的地址。
注意: 例3中p=a不能写成p=&a,因为a本身就是地址。
, 指针间的赋值
假设已有下列定义:
int *q, *p, k=0;
q=&k;
例如: p=q; 表示两指针间赋值,读作p指向q。
此时p和q均指向变量k的地址。
, 空指针
在C语言中空值用NULL表示,其值为0 , 定义指针时可以给指针赋值NULL 例如: int *p=NULL; 表示p没有指向任何地址
等价于p=?\0?; 或 p=0; 注意: 此时指针p没有实际单元,所以暂时不能访问。
, 通过指针引用存储单元
假设已有下列定义:
int *p, m, n=0;
p=&n;
例如: m=*p; 表示将p指向存储单元内容给变量m
等价于m=n;
*p=*p+1; 等价于n=n+1; 注意: *p=*p+1; 还可以写成下面的形式
*p+=1; 或 ++*p; 或 (*p)++; , 指针的应用
例1 从键盘上输入两个整数,输出较大数。
(
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
使用指针)
#include
main()
{
int a,b,*p,*q;
p=&a;
q=&b;
printf("请输入两个整数:\n");
scanf("%d%d",p,q);
if(*p>*q)
printf("%d",*p);
else
printf("%d",*q);
}
例2 从键盘上输入10个整数,输出最大数和最小数。
(要求使用指针)
#include
main()
{
int a[10],*p,k,max,min;
p=a;
printf("请输入10个整数:\n");
for(k=0;k<=9;k++)
scanf("%d",&p[k]);
max=p[0];
min=p[0];
for(k=1;k<=9;k++)
{
if(p[k]>max) max=p[k];
if(p[k]
本文档为【期末复习 c语言知识点归纳】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。