今天,好老師升學(xué)幫為大家?guī)?lái)的是2023年湖北文理學(xué)院專(zhuān)升本《C語(yǔ)言程序設(shè)計(jì)》考試大綱及樣卷。報(bào)考湖北文理學(xué)院專(zhuān)升本物聯(lián)網(wǎng)工程專(zhuān)業(yè)的同學(xué)要好好查看相關(guān)內(nèi)容哦。
《C語(yǔ)言程序設(shè)計(jì)》考試大綱
一、考試目的和性質(zhì)
本考試是為在計(jì)算機(jī)類(lèi)專(zhuān)科畢業(yè)生中招收本科生而實(shí)施的具有選拔功能的水平考試,其指導(dǎo)思想是既要有利于國(guó)家對(duì)高層次人材的選拔,又要有利于促進(jìn)高等學(xué)校各類(lèi)課程教學(xué)質(zhì)量的提高。
二、考試方式
閉卷筆試,滿分為100分。
三、試卷結(jié)構(gòu)
本課程命題范圍應(yīng)涵蓋課程的所有章節(jié),試題難易程度分為,較易占50%,中等難度占30%,較難占20%。在題型結(jié)構(gòu)上,全部為選擇題。
四、考試主要內(nèi)容
第一章 引論
(一)考試內(nèi)容
1.C語(yǔ)言的發(fā)展及特點(diǎn)
2.計(jì)算的思維
3.程序設(shè)計(jì)范型
4.C語(yǔ)言程序的基本構(gòu)成
(二)基本要求
1.了解計(jì)算機(jī)程序設(shè)計(jì)與程序設(shè)計(jì)語(yǔ)言的發(fā)展歷史;
2.了解程序設(shè)計(jì)的幾種范型和特點(diǎn);
3.掌握程序設(shè)計(jì)的基本過(guò)程,掌握C語(yǔ)言程序構(gòu)成形式。
第二章 順序結(jié)構(gòu)
(一)考試內(nèi)容
1.基本數(shù)據(jù)類(lèi)型
2.常量和變量
3.運(yùn)算符和表達(dá)式
4.數(shù)據(jù)類(lèi)型轉(zhuǎn)換
5.輸入和輸出
(二)基本要求
1.掌握C語(yǔ)言的基本數(shù)據(jù)類(lèi)型;理解常量、變量的概念;
2.能夠正確書(shū)寫(xiě)表達(dá)式、并根據(jù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合方向進(jìn)行正確的運(yùn)算;
3.理解數(shù)據(jù)類(lèi)型在表達(dá)式中的轉(zhuǎn)換情況;
4.掌握基本輸入/輸出。
第三章 選擇結(jié)構(gòu)
(一)考試內(nèi)容
1.if語(yǔ)句
2.嵌套的選擇結(jié)構(gòu)
3.switch語(yǔ)句
(二)基本要求
1.能夠應(yīng)用關(guān)系表達(dá)式、邏輯表達(dá)式表示判斷條件;
2. 理解程序控制結(jié)構(gòu)的概念,進(jìn)行分支結(jié)構(gòu)設(shè)計(jì)。
第四章 循環(huán)控制結(jié)構(gòu)
(一)考試內(nèi)容
1.while循環(huán)
2.do while循環(huán)
3.for循環(huán)
4.循環(huán)的嵌套
5.continue
6.break
(二)基本要求
1.掌握continue、break、goto、return、exit( )等流程轉(zhuǎn)移控制語(yǔ)句的功能及使用;
2.掌握不同循環(huán)結(jié)構(gòu)的選擇及其轉(zhuǎn)換方法;
3.掌握循環(huán)嵌套的應(yīng)用,以及混合控制結(jié)構(gòu)程序設(shè)計(jì)的方法。
第五章 函數(shù)
(一)考試內(nèi)容
1.函數(shù)的定義
2.函數(shù)的傳值調(diào)用與參數(shù)傳遞
3.遞歸函數(shù)
4.變量的存儲(chǔ)類(lèi)型、作用域
(二)基本要求
1.具有初步的分解程序結(jié)構(gòu)(模塊化)的能力;
2.理解C函數(shù)的概念及作用,掌握函數(shù)定義、聲明、調(diào)用的方法,理解函數(shù)參數(shù)傳遞的方法;
3.理解遞歸函數(shù)的概念及設(shè)計(jì)方法,具有初步的遞歸算法設(shè)計(jì)的能力;
4.理解變量的存儲(chǔ)類(lèi)型、作用域(存在范圍、有效范圍),能夠正確的使用變量。
第六章 數(shù)組
(一)考試內(nèi)容
1.一維數(shù)組
2.排序問(wèn)題
3.查找問(wèn)題
4.二維及多維數(shù)組
5.字符串處理
(二)基本要求
1.掌握數(shù)組的概念及數(shù)據(jù)的存儲(chǔ)方式;
2.掌握數(shù)組的定義、初始化、按下標(biāo)訪問(wèn)元素的方法;
3.掌握排序、查找問(wèn)題的程序算法;
4.掌握字符串問(wèn)題的解決方法及相關(guān)程序設(shè)計(jì)。
第七章 指針
(一)考試內(nèi)容
1.地址與指針
2.指針運(yùn)算
3.指針與函數(shù)
4.指針與數(shù)組
5.動(dòng)態(tài)內(nèi)存分配
(二)基本要求
1.掌握指針對(duì)變量、數(shù)組元素、字符串、函數(shù)的間接訪問(wèn)或調(diào)用方法;
2.理解動(dòng)態(tài)內(nèi)存的概念,掌握動(dòng)態(tài)獲取所需內(nèi)存的方法及存儲(chǔ)數(shù)據(jù)的訪問(wèn)。
第八章 結(jié)構(gòu)類(lèi)型
(一)考試內(nèi)容
1.結(jié)構(gòu)類(lèi)型
2.結(jié)構(gòu)與數(shù)組
3.向函數(shù)傳遞結(jié)構(gòu)類(lèi)型值
(二)基本要求
1.掌握結(jié)構(gòu)類(lèi)型變量的定義方法、初始化、變量成員的訪問(wèn)方法;
2.掌握結(jié)構(gòu)類(lèi)型數(shù)組(表)的構(gòu)造方法,對(duì)數(shù)組元素的成員訪問(wèn)方法。
第九章 文件
(一)考試內(nèi)容
1.文件的概念
2.文件操作
3.文件應(yīng)用舉例
(二)基本要求
1.理解文件及文件指針的概念;
2.掌握文件的打開(kāi)、關(guān)閉、讀寫(xiě)、定位等基本操作,能夠應(yīng)用文件進(jìn)行數(shù)據(jù)的存儲(chǔ)與處理。
參考書(shū)目:
[1] 袁磊、耿煜、黃霞主編,《C語(yǔ)言程序設(shè)計(jì)》,華中師范大學(xué)出版社,2016.
[2] 何欽命、顏暉主編,《C語(yǔ)言程序設(shè)計(jì)》(第四版),高等教育出版社,2020.
《C語(yǔ)言程序設(shè)計(jì)》考試樣卷
一、單項(xiàng)選擇題 (共50小題,每小題2分,共100分;在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)?jiān)诖痤}卡上,將正確答案的代碼填寫(xiě)在對(duì)應(yīng)的題號(hào)處。)
(1)以下選項(xiàng)中合法的標(biāo)識(shí)符是
A) 1-1 B)1—1 C)-11 D)1--
(2)若函數(shù)中有定義語(yǔ)句:int k;,則
A)系統(tǒng)將自動(dòng)給k賦初值0 B)這時(shí)k中值無(wú)定義 C)系統(tǒng)將自動(dòng)給k賦初值-1 D)這時(shí)k中無(wú)任何值
(3)以下選項(xiàng)中,能用作數(shù)據(jù)常量的是
A)o115 B) 0118 C)1.5e1.5 D) 115L
(4)設(shè)有定義:int x=2;,以下表達(dá)式中,值不為6的是
A) x*=x+1 B) x++,2*x C)x*=(1+x) D)2*x,x+=2
(5)程序段:int x=12;double y=3.141593; printf(“%d%8.6f”,x,y);的輸出結(jié)果是
A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593
(6)若有定義語(yǔ)句:double x,y,*px,*py,執(zhí)行了px=&x, py=&y;之后,正確的輸入語(yǔ)句是
A)scanf(“%f%f”,x,y); B) scanf(“%f%f”,&x,&y); C) scanf(“%lf%le”,px,py); D) scanf(“%lf%lf”,x,y);
(7)以下是if語(yǔ)句的基本形式:
if(表達(dá)式)
語(yǔ)句
其中“表達(dá)式”
A)必須是邏輯表達(dá)式 B)必須是關(guān)系表達(dá)式 C)必須是邏輯表達(dá)式或關(guān)系表達(dá)式 D)可以是任意合法的表達(dá)式
(8)有以下程序
#include <stdio.h>
main()
{int x;
scanf(“%d”,&x);
if(x<=3); else
if(x!=10)
printf(“%d\n”,x);
}
程序運(yùn)行時(shí),輸入的值在哪個(gè)范圍才會(huì)有輸出結(jié)果
A)不等于10的整數(shù) B)大于3且不等于10的整數(shù) C)大于3或等于10的整數(shù) D)小于3的整數(shù)
(9)有以下程序
#include<stdio.h>
Main()
{
int a=1,b=2,c=3,d=0;
if(a= =1 &&b++= =2)
if(b!=2 || c--!=3)
printf(“%d,%d,%d\n”,a,b,c);
else printf(“%d,%d,%d\n”,a,b,c);
else printf(“%d,%d,%d\n”,a,b,c);
}
程序運(yùn)行后的輸出結(jié)果是
A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1
(10)以下程序中的變量已正確定義
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf(“*”);
程序段的輸出結(jié)果是
A)******** B)**** C)** D)*
(11)以下敘述中正確的是
A)程序設(shè)計(jì)的任務(wù)就是編寫(xiě)程序代碼并上機(jī)調(diào)試 B)程序設(shè)計(jì)的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)
C)程序設(shè)計(jì)的任務(wù)就是確定所用算法 D)以上三種說(shuō)法都不完整
(12)以下選項(xiàng)中,能用作用戶標(biāo)識(shí)符的是
A)void B)8_8 C)_0_ D)unsigned
(13)閱讀以下程序
#include
main()
{ int case; float printF;
printf(“請(qǐng)輸入2個(gè)數(shù):”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f\n”,case,printF);
}
該程序編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是
A)定義語(yǔ)句出錯(cuò),case是關(guān)鍵字,不能用作用戶自定義標(biāo)識(shí)符 B)定義語(yǔ)句出錯(cuò),printF不能用作用戶自定義標(biāo)識(shí)符 C)定義語(yǔ)句無(wú)錯(cuò),scanf不能作為輸入函數(shù)使用 D)定義語(yǔ)句無(wú)錯(cuò),printf不能輸出case的值
(14)表達(dá)式:(int)((double)9/2)-(9)%2的值是
A)0 B)3 C)4 D)5
(15)若有定義語(yǔ)句:int x=10;,則表達(dá)式x-=x+x的值為
A)-20 B)-10 C)0 D)10
(16)有以下程序
#include
main()
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d\n”,a=2*b);
}
程序運(yùn)行后的輸出結(jié)果是
A)0,0 B)1,0 C)3,2 D)1,2
(17)設(shè)有定義:int a=1,b=2,c=3;,以下語(yǔ)句中執(zhí)行效果與其它三個(gè)不同的是
A)if(a>b) c=a,a=b,b=c; B)if(a>b) {c=a,a=b,b=c;} C)if(a>b) c=a;a=b;b=c; D)if(a>b) {c=a;a=b;b=c;}
(18)有以下程序
#include
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%d\n”,c);
}
程序運(yùn)行后的輸出結(jié)果是
A)3 B)5 C)7 D)9
(19)以下程序段中,與語(yǔ)句:k=a>b?(b>c?1:0):0;功能相同的是
A)if((a>b)&&(b>c)) k=1; else k=0; B)if((a>b)||(b>c) k=1;else k=0; C)if(a<=b) k=0; else if(b<=c) k=1; D)if(a>b) k=1;else if(b>c) k=1; else k=0;
(20)有以下程序
#include
main()
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=’a’&&s[i]<=’z’) n++;
printf(“%d\n”,n);
}
程序運(yùn)行后的輸出結(jié)果是
A)0 B)2 C)3 D)5
(21)有以下程序
#include
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d\n”,k,n);
}
程序運(yùn)行后的輸出結(jié)果是
A)0 2 B)1 3 C)5 7 D)1 2
(22)有以下定義語(yǔ)句,編譯時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤的是
A)char a=’a’; B)char a=’\n’; C)char a=’aa’; D)char a=’\x2d’;
(23)有以下程序
#include
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d\n”,c1,c2);
}
已知字母A的ASCII碼為65,程序運(yùn)行后的輸出結(jié)果是
A)E,68 B)D,69 C)E,D D)輸出無(wú)定值
(24)有以下程序
#include
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
main()
{ int a=1;
fun(a); printf(“%d\n”,a);}
程序運(yùn)行后的輸出結(jié)果是
A)32 B)12 C)21 D)22
(25)以下函數(shù)findmax擬實(shí)現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯(cuò)導(dǎo)致不能實(shí)現(xiàn)預(yù)定功能
#define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i<N;I++)< p="" />
{ max=MIN;
if(max
return max;
}
造成錯(cuò)誤的原因是
A)定義語(yǔ)句int i,max;中max未賦初值 B)賦值語(yǔ)句max=MIN;中,不應(yīng)給max賦MIN值
C)語(yǔ)句if(max D)賦值語(yǔ)句max=MIN;放錯(cuò)了位置
(26)有以下程序
#include
main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d\n”,m,n,*p,*q);
}
程序運(yùn)行后的輸出結(jié)果是
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2
(27)若有定義語(yǔ)句:int a[4][10],*p,*q[4];且0≤i<4,則錯(cuò)誤的賦值是
A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]
(28)有以下程序
#include
#include
main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s\n”,p);
}
程序運(yùn)行后的輸出結(jié)果是
A)9,One*World B)9,One*Dream C)10,One*Dream D)10,One*World
(29)有以下程序
main()
{ int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0: switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i[=0;
}
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);
}
A)3 3 4 4 B)2 0 5 0 C)3 0 4 0 D)0 3 0 4
(30)有以下程序
#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d\n”,strlen(a),sizeof(a));
}
程序運(yùn)行后的輸出結(jié)果是
A)7,4 B)4,10 C)8,8 D)10,10
(31)下面是有關(guān)C語(yǔ)言字符數(shù)組的描述,其中錯(cuò)誤的是
A)不可以用賦值語(yǔ)句給字符數(shù)組名賦字符串 B)可以用輸入語(yǔ)句把字符串整體輸入給字符數(shù)組 C)字符數(shù)組中的內(nèi)容不一定是字符串 D)字符數(shù)組只能存放字符串
(32)下列函數(shù)的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’\0’) {a++,b++;} }
A)將a所指字符串賦給b所指空間 B)使指針b指向a所指字符串 C)將a所指字符串和b所指字符串進(jìn)行比較 D)檢查a和b所指字符串中是否有’\0’
(33)設(shè)有以下函數(shù)
void fun(int n,char * s) {……}
則下面對(duì)函數(shù)指針的定義和賦值均是正確的是
A)void (*pf)(); pf=fun; B)viod *pf(); pf=fun; C)void *pf(); *pf=fun; D)void (*pf)(int,char);pf=&fun;
(34)有以下程序
#include
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d\n”,s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序運(yùn)行以后的輸出結(jié)果是
A)7 B)8 C)9 D)10
(35)有以下程序
#include
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d\n’,s,t);
}
程序運(yùn)行后的輸出結(jié)果是
A)10,64 B)10,10 C)64,10 D)64,64
(36)下面結(jié)構(gòu)體的定義語(yǔ)句中,錯(cuò)誤的是
A)struct ord {int x;int y;int z;}; struct ord a; B)struct ord {int x;int y;int z;} struct ord a; C)struct ord {int x;int y;int z;} a; D)struct {int x;int y;int z;} a;
(37)設(shè)有定義:char *c;,以下選項(xiàng)中能夠使字符型指針c正確指向一個(gè)字符串的是
A)char str[ ]=”string”;c=str; B)scanf(“%s”,c); C)c=getchar(); D)*c=”string”;
(38)有以下程序
struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);
}
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
程序運(yùn)行后的輸出結(jié)果是
A)1001,ZhangDa,1098.0 B)1001,ZhangDa,1202.0 C)1001,ChangRong,1098.0 D)1001,ChangRong,1202.0
(39)若有以下程序段
int r=8;
printf(“%d\n”,r>>1);
輸出結(jié)果是
A)16 B)8 C)4 D)2
(40)下列關(guān)于C語(yǔ)言文件的敘述中正確的是
A)文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件 B)文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件 C)文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件 D)文件由字符序列組成,其類(lèi)型只能是文本文件
(41)有以下程序
#include<stdio.h>
main()
{char*s=(“ABC);
do
{printf(“%d”,*s%10);s++;
}while(*s);
}
注意,字母A的ASCII碼值為65。程序運(yùn)行后的輸出結(jié)果是
A)5670 B)656667 C)567 D)ABC
(42)設(shè)變量已正確定義,以下不能統(tǒng)計(jì)出一行中輸入字符個(gè)數(shù)(不包含回車(chē)符)的程序段是
A)n=0;while((ch=getchar())!=’\n’)n++; B) n=0;while(getchar()!=’\n’)n++; C)for(n=0; getchar()!=’\n’;n++); D)n=0;for(ch=getchar();ch!=’\n’;n++);
(43)有以下程序
#include<stdio.h>
main()
{ int a1,a2;char c1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
printf(“%d,%c,%d,%c”,&1,c1,a2,c2);
}
若想通過(guò)鍵盤(pán)輸入,使得a1的值為12,a2的是為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b,則正確的輸入格式是(以下代表空格,<CR>代表回車(chē))
A)12a34b<CR> B)12a34b<CR> C)12,a,34,b<CR> D)12a34b<CR>
(44)有以下程序
#include<stdio.h>
int f(int x,int y)
{return()y-x)*x);}
main()
{int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf(“%d\n”,d);
}
程序運(yùn)行后的輸出結(jié)果是
A)10 B)9 C)8 D)7
(45)有以下程序
#include<stdio.h>
void fun(char*s)
{while(*s)
{ if(*s%2==0)
printf(“%c”,*s);
s++;
}
}
main()
{ char a[]={“good”};
fun(a);
printf(“\n”);
}
注意:字母a的ASCⅡ碼值為97,程序運(yùn)行后的輸出結(jié)果是
A)d B)go C)god D)good
(46)有以下程序
#include <stdio.h>
void fun( int *a,int *b)
{int *c;
c=a;a=b;b=c;
}
main()
{int x=3,y-5,*P=&x,*q=&y;
fun(p,q);printf(“%d,%d,”,*p,*q);
fun(&x,&y);printf(“%d,%d\n”,*p,*q);
}
程序運(yùn)行后的輸出結(jié)果是
A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3
(47)有以下程序
#include <stdio.h>
viod f(int *p,int *q);
main()
{ int m=1,n=2,*r=&m;
f(r,&n);printf(“%d,%d”,m,n);
}
void f(int *p,int *q)
{p=p+1;*q=*q+1;}
程序運(yùn)行后輸出的結(jié)果是
A)1,3 B)2,3 C)1,4 D)1,2
(48)以下函數(shù)按每行8個(gè)輸出數(shù)組中的數(shù)據(jù)
void fun( int *w,int n)
{ int i;
for(i=0;i<n;i++)
{_________________
printf(“%d”,w);
}
printf(“\n”);
}
下劃線處應(yīng)填入的語(yǔ)句是
A)if(i/8==0)print(“\n”); B) if(i/8==0)continue; C) if(i%8==0)print(“\n”); D) if(i%8==0)continue;
(49)若有以下定義
int x[10],*pt=x;
則對(duì)x數(shù)組元素的正確應(yīng)用是
A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3
(50)設(shè)有定義:char s[81];int i=10;,以下不能將一行(不超過(guò)80個(gè)字符)帶有空格的字符串真確讀入的語(yǔ)句或語(yǔ)句組是
A gets(s) B)while((s[i++]=getchar())!=”\n”;s=”\0”; C)scanf(“%s”,s); D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;