?C語言程序設(shè)計復(fù)習(xí)資料及習(xí)題(3)
摘要:本文是C語言程序設(shè)計復(fù)習(xí)資料及習(xí)題(3),有打算報考2022年專升本需要考核C語言程序設(shè)計的同學(xué)可以一起來看看。供大家參考,下面是具體詳細內(nèi)容。
單元七 函數(shù)的使用
單元總結(jié)提升
在本單元中,如何使用自定義函數(shù)是核心內(nèi)容。通過本單元的學(xué)習(xí),我們應(yīng)該知道:
1. 函數(shù)是構(gòu)成C程序的基本單位,函數(shù)的使用為模塊化程序設(shè)計奠定了基礎(chǔ)。從用戶使用的角度,函數(shù)分為 庫 函數(shù)、 自定義 函數(shù)兩種。
2. 庫函數(shù)的使用包括 頭文件包含 和 庫函數(shù)調(diào)用 兩個環(huán)節(jié);用戶自定義函數(shù)的使用包括 函數(shù)聲明 、 函數(shù)定義 和 函數(shù)調(diào)用 三個環(huán)節(jié)。
3. 從函數(shù)的外觀形式看,函數(shù)分為 有參 函數(shù)、 無參 函數(shù)兩種。當(dāng)主調(diào)函數(shù)調(diào)用無參 函數(shù)時,不需要向這些函數(shù)傳遞參數(shù);當(dāng)主調(diào)函數(shù)調(diào)用 有參 函數(shù)時,需要傳遞參數(shù)。
4. 用戶自定義函數(shù)的一般形式為:
函數(shù)返回值類型 函數(shù)名(形式參數(shù)列表) //函數(shù)首部
{ 函數(shù)體;
}
其中第一行稱為 函數(shù)首部 ,大括號“{}”括起來的部分稱為 函數(shù)體 ,對于有返回值的函數(shù),函數(shù)體中要包括 return 語句。
5.函數(shù)首部也稱為函數(shù)原型,用函數(shù)原型聲明函數(shù)時,形參名可以省略不寫,而只寫形參的類型,但形參的 類型 和 數(shù)量 必須與函數(shù)首部保持一致。
6.函數(shù)要先聲明,然后才能使用,函數(shù)聲明在程序中的位置有以下幾種情況:(1)函數(shù)聲明寫在主調(diào)函數(shù)的外部,這時的函數(shù)聲明為全局聲明。(2)函數(shù)聲明寫在主調(diào)函數(shù)的說明語句中,這時的函數(shù)聲明為局部聲明。(3)函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,則函數(shù)聲明可以省略。
7.函數(shù)的調(diào)用形式為:函數(shù)名(實際參數(shù)列表)。若調(diào)用無參函數(shù),則實參為空;若調(diào)用有參函數(shù),則在()內(nèi)寫出與形參類型、數(shù)量一致的實參。對于有參函數(shù),函數(shù)調(diào)用過程中存在著參數(shù)傳遞的問題,參數(shù)傳遞有兩種情況,其一為 值傳遞,其二為 地址傳遞。
8.函數(shù)在函數(shù)體中出現(xiàn)了對自身調(diào)用的語句,就稱為函數(shù)遞歸調(diào)用。使用遞歸方法解決問題的關(guān)鍵是如何找出 遞歸關(guān)系 ,以及找出遞歸調(diào)用的 終止條件 。
9.帶參宏定義的一般形式為: #define 宏名(形參列表) 字符串 。通常用帶參數(shù)的宏定義代替簡單公式型函數(shù)。
10.函數(shù)的存儲類型有static和extern兩種。 extern 型函數(shù)稱為“外部函數(shù)”,可以被其他編譯單位中的函數(shù)調(diào)用; static 型函數(shù)稱為“內(nèi)部函數(shù)”,只能被本編譯單位的函數(shù)調(diào)用。
11.程序中變量的使用范圍稱為變量的作用域,每個變量都有自己的作用域。按照作用域的范圍可分為兩種: 局部變量 和 全局變量 。
12.變量的存儲方式可分為“動態(tài)存儲”和“靜態(tài)存儲”兩種。動態(tài)存儲變量包括
auto 和 regiest 兩種類型;靜態(tài)存儲變量包括 static 和 extern 兩種類型。靜態(tài)存儲變量若沒有初始化,則默認初始值為 0 。static類型變量的值具有繼承性,即本次調(diào)用的初值是上次調(diào)用結(jié)束時變量的值。
單元練習(xí)
一.選擇題
1.關(guān)于使用函數(shù)的目的,以下不正確的說法是( )。
A.提高程序的執(zhí)行效率 B.提高程序的開發(fā)效率
C.減少程序文件所占內(nèi)存 D.提高程序可讀性
2.以下正確的函數(shù)首部是( )。
A.void fun(int x,int y) B.void fun(int x;int y)
C.void fun(int x,y) D.void fun(x,y)
3.設(shè)函數(shù)fun的定義形式為:
void fun(char ch, float x) { ......}
則以下對函數(shù)fun的調(diào)用正確的是( )。
A.fun("abc",3.0); B.t=fun('D',12.3);
C.fun('65',3.7); D.fun(65,65);
4.關(guān)于函數(shù)的實參和形參,以下正確的說法是( )。
A.實參和對應(yīng)的形參各占用獨立的存儲單元
B.實參和對應(yīng)的形參共同占用同一存儲單元
C.只有當(dāng)實參與形參重名時才共同占用存儲單元
D.形參是虛擬的,不占用存儲單元
5.當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳遞的是( )。
A.數(shù)組的長度 B.數(shù)組的首地址
C.數(shù)組的每一個元素的地址 D.數(shù)組的每一個元素的值
6.將一個函數(shù)指定為static存儲類別后,該函數(shù)將( )。
A.既可以被同一源文件中的函數(shù)調(diào)用,也可以被其他源文件中的函數(shù)調(diào)用
B.只能被同一源文件中的函數(shù)調(diào)用,不能被其他源文件中的函數(shù)調(diào)用
C.只能被其他源文件中的函數(shù)調(diào)用,不能被同一源文件中的函數(shù)調(diào)用
D.既不能被同一源文件中的函數(shù)調(diào)用,也不能被其他源文件中的函數(shù)調(diào)用
7.以下敘述正確的是( )。
A.全局變量的作用域一定比局部變量的作用域作用范圍大
B.靜態(tài)static類型變量的生存期貫穿于整個程序的運行期間
C.函數(shù)的形參都屬于全局變量
D.未在定義語句中賦初值的auto變量和static變量的初值都是隨機值
二.填空題
1.假設(shè)已有#define M(r) r*r,則語句printf(“%d”,M(2+3));的執(zhí)行結(jié)果為 。
2.以下程序輸出結(jié)果為 。
#include
void fun(int x,int y)
{ x=x+y;y=x-y;x=x-y;
printf("%d,%d\n",x,y);
}
void main()
{ int x=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
3.以下程序輸出結(jié)果為 。
#include
int a,b;
void fun()
{ a=10;b=20;
}
void main()
{ int a=3,b=9;
fun();
printf("%d,%d\n",a,b);
}
4.以下程序輸出結(jié)果為 。
#include
int f( ) //定義f函數(shù),a為形參
{int b=0; //定義b為自動變量
static int c=3; //定義c為靜態(tài)局部變量
b=b+1;
c=c+1;
return b+c;
}
void main( )
{int a1,a2;
a1=f();
a2=f();
printf("%d,%d",a1,a2);
}
5.以下程序輸出結(jié)果為 。
#include
int fun(int n)
{ if(n==1) return 1;
else return fun(n-1)+1;
}
void main()
{ int i,j=0;
for(i=1;i<3;i++)
j+=fun(i);
printf("%d\n",j);
}
6.以下程序輸出結(jié)果為 。
#include
void fun(int a[ ], int n)
{ for(int i=0;i<n;i++)< p="">
if(a[i]>0) a[i]*=2;
}
void main()
{ int b[5]={1,2,3,4,5};
fun(b,5);
for(int i=0;i<5;i++)
printf("%d\t",b[i]);
}
習(xí)題答案:
一.選擇題
1.A 2.A 3.D 4.A 5.B 6.B 7.B
二.填空題
1.11
2.3,2
2,3
3.3,9
4.5,6
5.3
6.2 4 6 8 10
單元八 指針的使用
單元總結(jié)提升
在本單元中,對指針的理解,以及利用指針訪問不同形式的數(shù)據(jù)是核心內(nèi)容。通過本單元的學(xué)習(xí),我們應(yīng)該知道:
1. 內(nèi)存地址就稱為指針。C語言允許用一個變量來存放指針,這種變量稱為指針變量,而指針變量的值就是某個內(nèi)存單元的地址。
2. 定義指針變量的一般格式為: 類型標識符 *指針變量名 ,其中:
(1)“指針變量名”前面的“*”,表示該變量是指針變量,不能省略。
(2)“類型標識符”表示該指針變量所指向的變量的數(shù)據(jù)類型。
(3)當(dāng)一個指針變量已確定指向某類型的變量時,不能再指向另一種類型的變量。
3.指針變量被賦值后即可引用,引用指針變量的一般方法為: *指針變量名 。
4.指針和數(shù)組有著密切的關(guān)系,任何通過控制數(shù)組下標實現(xiàn)的對數(shù)組的操作,都可用指針來實現(xiàn)。要通過指針操作數(shù)組,首先要建立指針變量與數(shù)組之間的關(guān)系,然后才能通過指針變量訪問數(shù)組元素。若有語句段: int a[10]; int *p; p=a;,則對于數(shù)組元素的訪問方式有 a[i]、 *(p+i) 、 p[i] ,對數(shù)組元素地址的表示方式有 a+i 、 p+i 、 &a[i] 。
5.數(shù)組名代表數(shù)組的首地址,利用函數(shù)處理一維數(shù)組數(shù)據(jù)時,函數(shù)之間的參數(shù)傳遞為 數(shù)組首地址 。將數(shù)組的首地址作為實參傳遞給函數(shù)的形參以后,實參數(shù)組和形參數(shù)組其實是同一段內(nèi)存中的數(shù)據(jù)。
6.字符串是存放在某存儲區(qū)域的一串字符序列,可通過字符數(shù)組和字符指針兩種方式操作字符串。
7.函數(shù)返回值可以是地址(指針類型),返回值為地址的函數(shù)定義形式為:
通過本單元的學(xué)習(xí),應(yīng)明確地址和指針的關(guān)系,掌握使用指針訪問內(nèi)存數(shù)據(jù)的基本方法。
單元練習(xí)
一.選擇題
1.假設(shè)整型變量a的值是12,a的地址是2200,若想使整型指針變量p指向a,以下賦值正確的是( )。
A.&a=2200; B.*p=12; C.*p=2200; D.p=&a;
2.若有定義int *p,m=5,n;,以下正確的程序段是( )。
A.p=&n; scanf"%d",&p); B.p=&n; scanf("%d",*p);
C.scanf("%d",&n); *p=n; D.p=&n; *p=m;
3.以下合法的定義是( )。
A.str[]={"China"}; B.char *p="China";
C.char *p; strcpy(p, "China"); D.char str[13]; str[]="China";
4.若有定義int a[ ]={1,3,5,7,9,11}, *p=a;,則能夠正確引用該數(shù)組元素的是( )。
A.a B.a[6] C.*(p--) D.*(--p)
5.以下程序運行結(jié)果為( )。
#include
void main( )
{
char a[]="Language",b[]="programe";
char *p,*q;
int k;
p=a;q=b;
for(k=0;k<8;k++)
if(*(p+k)==*(q+k))
printf("%c",*(p+k));
}
A.gae B.ga C.Language D.programe
二.填空題
1.給出以下程序的執(zhí)行結(jié)果 。
#include
void main( )
{
int *p1,*p2,*p;
int a=10,b=12;
p1=&a;p2=&b;
if(a<b)< p="">
{p=p1;p1=p2;p2=p;}
printf("%d,%d,",*p1,*p2);
printf("%d,%d",a,b);
}
2.以下程序的功能是把數(shù)組元素的最大值放入a[0]中,則條件表達式應(yīng)為 。
#include
void main( )
{
int a[10]={6,7,2,9,5,10,4,3,8,1};
int *p=a,i;
for(i=0;i<10;i++,p++)
if( ) *a=*p;
printf("%d",*a);
}
3.以下程序的輸出結(jié)果是 。
#include
void main( )
{
int a[2][3]={{1,2,3},{4,5,6}};
int m,*ptr;
ptr=&a[0][0];
m=(*ptr)*(*(ptr+2))*(*(ptr+4));
printf("%d",m);
}
4.下列函數(shù)功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>
int mystrlen(char *str)
{
char *p;
for(p=str; !='\0';p++);
return( );
}
5.以下程序中,函數(shù)scmp的功能是返回形參指針s1和s2所指字符串中較小字符串的首地址。試問當(dāng)程序運行時依次輸入:abcd、abba和abc三個字符串,則輸出結(jié)果為 。
#include
#include
char *scmp(char *s1,char *s2)
{ if(strcmp(s1,s2)<0)
return(s1);
else
return(s2);
}
void main( )
{ int i;
char string[20],str[3][20];
for(i=0;i<3;i++)
gets(str[i]);
strcpy(string,scmp(str[0],str[1]));
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
習(xí)題答案:
一.選擇題
1.D 2.D 3.C 4.C 5.A
二.填空題
1.12,10,10,12
2.*p>*a
3.15
4.*p p-str
5.abba
單元九 結(jié)構(gòu)類型的使用
單元總結(jié)提升
在本單元中,結(jié)構(gòu)類型數(shù)據(jù)的含義、結(jié)構(gòu)類型的描述方法、結(jié)構(gòu)類型數(shù)據(jù)的基本操作是核心內(nèi)容。通過本單元的學(xué)習(xí),我們應(yīng)該知道:
1.結(jié)構(gòu)類型數(shù)據(jù)使用的基本步驟為 結(jié)構(gòu)類型說明、 結(jié)構(gòu)類型變量定義 和 結(jié)構(gòu)變量使用 。
2.結(jié)構(gòu)類型說明的關(guān)鍵字為 struct 。結(jié)構(gòu)類型變量所占用內(nèi)存字節(jié)數(shù)為結(jié)構(gòu)變量所包含的各個成員變量所占字節(jié)數(shù)之和 。
3.若定義了一個結(jié)構(gòu)變量和一個指向結(jié)構(gòu)變量的指針,則可以用以下三種形式訪問結(jié)構(gòu)成員:
(1)利用結(jié)構(gòu)變量與成員運算符相結(jié)合,基本格式為: 結(jié)構(gòu)變量.成員名 。
(2)利用結(jié)構(gòu)指針與成員運算符相結(jié)合,基本格式為: (*結(jié)構(gòu)指針).成員名 。
(3)利用結(jié)構(gòu)指針與指向運算符相結(jié)合,基本格式為: 結(jié)構(gòu)指針->成員名 。
4. 結(jié)構(gòu)變量不能作為一個整體進行輸入和輸出,但結(jié)構(gòu)變量作為一個整體可以被復(fù)制、賦值、傳遞參數(shù),以及作為函數(shù)返回值。當(dāng)用結(jié)構(gòu)變量作函數(shù)參數(shù)進行整體傳送時,要將全部成員逐個傳送,特別是成員為數(shù)組時,將會使傳送的時間和空間開銷很大,所以一般不將結(jié)構(gòu)變量作為函數(shù)參數(shù),而用結(jié)構(gòu)指針變量作函數(shù)參數(shù)。這時由實參向形參傳遞的只是地址,從而減少了時間和空間的開銷。
通過本單元的學(xué)習(xí),應(yīng)明確結(jié)構(gòu)類型的數(shù)據(jù)特點,掌握結(jié)構(gòu)類型數(shù)據(jù)描述和操作的基本步驟和方法。
單元練習(xí)
一.選擇題
1.以下描述正確的是( )。
A.結(jié)構(gòu)類型中的成員可以是結(jié)構(gòu)類型
B.結(jié)構(gòu)類型的成員不能是指針類型
C.結(jié)構(gòu)類型中各成員共享同一個內(nèi)存單元
D.在結(jié)構(gòu)類型說明后就立即分配內(nèi)存空間
2.已知如下定義的結(jié)構(gòu)類型變量,若有p=&data,則對data中的成員a的正確引用是( )。
struct sk
{ int a;
float b;
}data,*p;
A.(*p).data.a B.(*p).a C.p->data D.p.data.a
3.若有如下定義,則下列輸入語句正確的是( )。
struct stu
{ int a;
int b;
}student;
A.scanf(“%d”,&a); B.scanf(“%d”,&student);
C.scanf(“%d”,&stu.a); D.scanf(“%d”,&student.a);
4.有如下結(jié)構(gòu)類型說明和變量定義,則操作語句正確的是( )。
struct worker
{ int num;
char name[10];
char sex;
int age;
} s1,s2,t;
A.if(s1.age>s2.age) {t=s1; s1=s2; s2=t; }
B.s1={1101,”zhangsan”,’f’,28};
C.gets(&s1.name);
D.printf(“%d,%s,%c,%d”,s1.num,s1.name,s1->sex,s1->age);
5.以下敘述正確的是( )。
A.結(jié)構(gòu)類型說明與結(jié)構(gòu)變量的含義一樣,都可以用來存放數(shù)據(jù)。
B.對于不同類型的數(shù)據(jù),若想形成一個有機的整體,可以使用結(jié)構(gòu)類型。
C.可以使用“==”或“!=”對同一個結(jié)構(gòu)類型的兩個變量進行整體比較。
D.同一結(jié)構(gòu)類型中的成員變量名稱可以相同。
二.填空題
1.若有如下定義:
struct student
{ int num;
char name[12];
double score;
}stu;
則結(jié)構(gòu)類型的關(guān)鍵字是 ,用戶定義的結(jié)構(gòu)類型名是 ,用戶定義的結(jié)構(gòu)變量是 。
2.若有如下定義:
struct worker
{ int num;
char name[12];
char sex;
int age;
}s,*p;
則sizeof(struct worker)的值是 ,變量s所占內(nèi)存字節(jié)數(shù)是 ,變量p所占內(nèi)存字節(jié)數(shù)是 。
3.若有如下定義:
struct num
{ int a;
int b;
float f;
}n={1,3,5.0};
struct num *pn=&n;
則表達式pn->b/n.a*pn->b的值是 ,表達式(*pn).a+pn->f的值是 。
4.結(jié)構(gòu)數(shù)組中存有三個人的姓名和年齡,要輸出年齡最大的人的姓名和年齡。將程序補充完整。
#include
struct man
{
char name[20];
int age;
}person[ ]={"Zhanghua",20,"Liuyang",25,"Sunpeng",19};
void main( )
{
struct man *p,*q;
int old=0;
for(p=person;p ;p++)
if(oldage) {q=p; ; }
printf("%s %d",q->name,q->age);
}
5. 下面程序的功能是從鍵盤上輸入5個人的年齡、姓名和性別,然后輸出。將程序補充完整。
#include
struct man
{
char name[20];
int age;
char sex[4];
};
void data_in(struct man *p,int n)
{
struct man *q= ;
for( ;p<q;p++)< p="">
{
printf("name;age;sex\n");
scanf("%s%d%s", , , );
}
}
void data_out(struct man *p,int n)
{
struct man *q= ;
for( ;p<q;p++)< p="">
printf("%s;%d;%s\n",p->name,p->age,p->sex);
}
void main( )
{
struct man person[5];
data_in(person,5);
data_out(person,5);
}
習(xí)題答案:
一.選擇題
1.A 2.B 3.D 4.A 5.B
二.填空題
1.struct student stu
2.21 21 1 (上機測試)
3.9 6.000000
4.page;
5.p+n p->name,&(p->age),p->sex p+n
單元十 文件操作
單元總結(jié)提升
在本單元中,如何打開文件、如何讀寫文件以及如何關(guān)閉文件是核心內(nèi)容。通過本單元的學(xué)習(xí),我們應(yīng)該知道:
1.C語言對文件的操作是通過文件指針實現(xiàn)的,文件指針是系統(tǒng)定義好的結(jié)構(gòu)類型,名稱為 FILE ,該類型已在頭文件stdio.h中定義,對文件進行操作時,用該類型直接定義文件指針變量即可。定義形式為: FILE *文件指針變量名; 。
2.對文件的操作過程及相應(yīng)的文件操作函數(shù)為:
第一步: 打開文件 ,相應(yīng)的函數(shù)為 fopen() 。
第二步: 讀寫文件 ,相應(yīng)的函數(shù)為 fputc()/fgetc()等 。
第三步: 關(guān)閉文件 ,相應(yīng)的函數(shù)為 fclose() 。
通過本單元的學(xué)習(xí),應(yīng)理解文件指針FILE的含義,重點掌握利用文件指針操作文件的方法,以及文件操作函數(shù)的使用方法。
單元練習(xí)
一.選擇題
1.設(shè)fp為FILE類型的指針,要以只寫的方式打開文件d:\data\file.txt,正確的語句是( )。
A.fp=fopen(“d:\data\file.txt”,”w”);
B.fp=fopen(“d:\\data\\file.txt”,”w”);
C.fp=fopen(“d:\data\file.txt”,”r”);
D.fp=fopen(“d:\\data\\file.txt”,”r”);
2.執(zhí)行fopen函數(shù)時發(fā)生錯誤,則函數(shù)的返回值是( )。
A.地址值 B.NULL(0) C.1 D.EOF(-1)
3.當(dāng)正確執(zhí)行了文件關(guān)閉操作時,fclose函數(shù)的返回值是( )。
A.-1 B.true C.0 D.1
4.rewind函數(shù)的作用是( )。
A.使位置指針重新返回文件的開頭
B.使位置指針指向文件所要求的特定位置
C.使位置指針從新返回文件的末尾
D.使位置指針自動移到下一個字符位置
5.以下程序想要把鍵盤輸入的字符寫到文件data.txt中,直到輸入“*”為止,但程序有錯誤,出錯的原因是( )。
#include
void main()
{
FILE *fp;
char ch;
fp=fopen("data.txt","w");
ch=getchar();
while(ch!='*')
{ fputc(fp,ch);
ch=getchar();
}
fclose(fp);
}
A.函數(shù)fopen調(diào)用形式錯誤
B.函數(shù)fclose調(diào)用形式錯誤
C.函數(shù)fputc調(diào)用形式錯誤
D.函數(shù)getchar()調(diào)用形式錯誤
二.填空題
1.以下程序功能是:用變量count統(tǒng)計文件中字符的個數(shù)。請將程序補充完整。
#include
#include
void main()
{ FILE *fp;
long count=0;
if((fp=fopen("letter.dat", ))==NULL)
{ printf("不能打開文件.");
exit(0);
}
while(fgetc(fp)!=EOF) ;
printf("文件中的字符個數(shù)為%ld.\n",count);
fclose(fp);
}
2.以下程序的功能是:找出文件file.txt中所有的整數(shù)。文本文件file.txt中存有一系列整數(shù),各整數(shù)之間以空格、Tab符、回車符分隔。程序中用數(shù)組b[]存儲不同的整數(shù),變量k為已存入數(shù)組b中的不同整數(shù)的個數(shù),并假定文件的不同整數(shù)個數(shù)不超過1000個。請將程序補充完整。
#include
#include
#define N 1000
void main()
{ FILE ;
int b[N],d,i,k;
if((fp= )==NULL)
{ printf("不能打開文件.");
exit(0);
}
k=0;
while(fscanf( )==1)
{ b[k]=d;
for(i=0;b[i]!=d;i++);
if(i==k) k++;
}
;
}
習(xí)題答案:
一.選擇題
1.B 2.B 3.C 4.A 5.C
二.填空題
1."r" count++
2.#include
#include
#define N 1000
void main()
{ FILE *fp ;
int b[N],d,i,k;
if((fp= fopen("file.txt","r") )==NULL)
{ printf("不能打開文件.");
exit(0);
}
k=0;
while(fscanf(fp,"%d",&d )==1)
{ b[k]=d;
for(i=0;b[i]!=d;i++);
if(i==k) k++;
}
fclose(fp) ;
}
延伸閱讀
- 輕松上岸!專升本備考題庫推薦!
- 備考后悔藥!如果早點買希賽學(xué)習(xí)包,能少走這些彎路…
- 專升本備考資料荒?希賽備考學(xué)習(xí)包你值得擁有
- 專升本刷題APP哪家強?當(dāng)然是希賽統(tǒng)招專升本
- 專升本考試配套刷題小程序:官方指定知識點全覆蓋
- 專升本考試工具包:考試題庫+學(xué)習(xí)包
專升本微信公眾號
掃碼添加
專升本備考資料免費領(lǐng)取
去領(lǐng)取
掃描二維碼