理工类计算机科学与技术软件工程专业考试说明C语言程序设计微机原理与接口含汇编语言.docx
《理工类计算机科学与技术软件工程专业考试说明C语言程序设计微机原理与接口含汇编语言.docx》由会员分享,可在线阅读,更多相关《理工类计算机科学与技术软件工程专业考试说明C语言程序设计微机原理与接口含汇编语言.docx(30页珍藏版)》请在冰点文库上搜索。
![理工类计算机科学与技术软件工程专业考试说明C语言程序设计微机原理与接口含汇编语言.docx](https://file1.bingdoc.com/fileroot1/2023-7/10/0ffe6236-b277-4076-ab10-161534a143bb/0ffe6236-b277-4076-ab10-161534a143bb1.gif)
理工类计算机科学与技术软件工程专业考试说明C语言程序设计微机原理与接口含汇编语言
河北省普通高校专科接本科教育考试计算机科学与技术/软件工程专业考试说明
一、内容概述与要求
第一部分:
C语言程序设计
I.课程简介
C语言程序设计课程考试是为招收计算机科学与技术/软件工程等专业专科接本科学生而实施的入学考试。
参加C语言程序设计课程考试的考生应理解C程序的基本构成、C程序中的数据类型及其运算、结构化程序设计的三种基本结构(顺序、选择、循环)、数组、函数;了解编译预处理命令、指针、结构体与共用体、位运算等知识模块所涉及的基本概念、语法规范;掌握运用以上语法知识进行结构化程序设计的基本方法;熟悉程序设计中简单的数据结构和算法,具有一定的分析和编写简单C程序的能力,以及基本的纠错和调试程序的能力。
考生应具有规范的结构化编程思维,能够综合运用所学知识分析并解决简单的实际问题。
C语言程序设计课程考试从两个层次对考生进行测试,较高层次的要求为“理解”和“掌握”,
较低层次的要求为“了解”和“会”。
这里“理解”和“了解”是指对概念与理论提出的要求。
“掌握”和“会”是指对使用方法、应用能力提出的要求。
二、考试形式与试卷结构
考试采用闭卷、笔试形式,全卷满分为150分,考试时间为75分钟。
试卷包括选择题、程序阅读题、程序填空题和编程题。
选择题是四选一型的单项选择题;程序阅读题、程序填空题只要求直接填写结果;编程题应写出完整的程序代码,要求符合C语言的语法规范。
选择题和程序阅读题分值合计为70分。
程序填空题和编程题分值合计为80分。
II.知识要点与考核要求
一、C语言程序的结构
(一)知识范围
C语言程序的基本构成;头文件、函数构成以及程序中的注释;C程序的执行过程;源程序的书写格式。
(二)考核要求
1.理解C程序的基本结构及执行过程。
2.理解C程序中头文件、注释等概念,会在程序中正确使用文件包含命令以及添加注释。
3.理解C函数的构成形式。
4.了解C程序源代码的书写格式。
二、数据类型及其运算
(一)知识范围
C语言的基本数据类型(整型、浮点型、字符型)及其表示方法;常量与变量的使用;运算符的种类、运算优先级和结合性;常用表达式(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)的语法表示及其求值规则;不同类型数据间的转换与运算。
(二)考核要求
1.掌握C语言的基本数据类型,了解不同数据类型常量的表示方法。
2.掌握变量的定义、初始化和引用的基本方法。
3.在编程中会根据需要合理确定常量与变量的类型并正确使用。
4.理解各种运算符的优先级和结合性,掌握其构成表达式的语法表示和运算规则,会正确计算表达式的值,会根据需要书写正确的C表达式。
5.了解表达式中不同类型数据间的自动转换规则,掌握强制类型转换的使用方法。
三、顺序结构程序设计
(一)知识范围C语言中的基本语句(表达式语句、空语句、复合语句);字符数据的输入与输出;数据的格式
输入与输出;顺序结构程序设计方法。
(二)考核要求
1.了解C程序中常用的基本语句形式。
2.掌握使用getchar()和putchar()标准库函数实现字符数据输入与输出的方法。
3.掌握使用scanf()和printf()标准函数实现不同类型数据的格式输入与输出的方法,在编程中会根据需要正确输入数据并合理设计输出格式。
4.掌握使用顺序结构设计简单C程序的基本方法。
四、选择结构程序设计
(一)知识范围if语句(if单分支、if-else双分支、else-if嵌套);switch语句;选择结构的嵌套;选择结
构程序设计方法。
(二)考核要求
1.理解三种if语句的语法结构,掌握使用if语句设计选择结构程序的方法。
2.理解switch语句的语法结构,掌握使用switch语句设计多分支选择结构程序的方法。
3.了解嵌套选择结构语句的语法表示,会分析嵌套选择结构程序的执行过程。
4.会正确分析选择结构程序的执行过程,会合理选用语句形式设计正确的选择结构程序。
五、循环结构程序设计
(一)知识范围
while循环语句;do-while循环语句;for循环语句;continue和break语句;循环的嵌套。
1.理解while、do-while和for语句的语法结构,掌握使用三种循环语句设计循环结构程序的方法。
2.理解continue和break语句的语法结构,掌握其在循环结构程序中的使用方法。
3.了解嵌套循环结构语句的语法表示,会正确分析嵌套循环结构程序的执行过程。
六、数组
(一)知识范围
一维数组和二维数组的定义、初始化及其元素的引用;字符数组的定义、初始化和元素的引用,使用字符数组存储和操作字符串;字符串及其常用处理函数。
(二)考核要求
1.掌握一维数组和字符数组的定义、初始化及其元素引用的方法。
2.熟悉二维数组的定义、初始化及其元素引用的方法。
3.理解字符串的概念,掌握使用字符数组存储和操作字符串的方法,熟悉常用字符串处理函数
(puts、gets、strcmp、strlen)的使用方法。
4.在编程中会使用数组正确处理同质数据的读写访问操作,会使用字符串处理函数操作字符串。
七、函数
(一)知识范围
函数的定义;函数的参数与返回值;函数的调用;函数的嵌套调用;函数的递归调用;局部变量和全局变量;变量的存储类别(自动、静态、寄存器、外部)。
(二)考核要求
1.理解函数定义的语法形式,掌握一般函数的定义方法。
2.理解函数的形式参数与实际参数、函数的返回值的概念和特点。
3.理解函数调用的语法形式;理解函数原型的概念,掌握其声明方法。
4.理解函数传值调用的参数传递机制和特点,会正确分析函数传值调用的执行过程,掌握使用函数的传值调用实现结构化程序设计的方法。
5.了解函数嵌套调用的概念,会正确分析函数嵌套调用的执行过程。
6.了解递归函数的概念,会正确分析递归函数调用的执行过程。
7.了解变量的作用域和生存期的概念,理解局部变量和全局变量的概念,掌握其使用方法;理解自动变量、静态局部变量的特点,掌握其使用方法;了解寄存器变量的使用方法,了解用extern声明外部变量的方法,会根据程序中变量的定义位置和声明方式正确分析变量的作用域和生存期。
八、预处理命令
(一)知识范围
编译预处理的概念;宏定义命令;文件包含命令。
1.了解编译预处理的概念、作用。
2.理解宏定义命令的语法形式,掌握不带参数以及带参数宏定义的使用方法,会分析宏定义命令在预编译时的宏展开过程。
3.了解文件包含命令的语法形式,在程序设计中会正确使用文件包含命令。
九、指针
(一)知识范围
指针的概念;指针的基本运算;指向变量的指针变量的定义、赋值和引用;指向一维数组的指针变量的定义、赋值和引用;指向字符串的指针变量的定义、赋值和引用,使用指针作为参数的函数调用;返回指针值的函数;指针数组和指向指针的指针。
(二)考核要求
1.了解指针的概念,理解指针运算符(*)和取地址运算符(&)的使用特点,掌握指向变量的指针变量的定义、赋值和引用的方法,理解指针的赋值运算和算术运算的规则。
2.掌握指向一维数组的指针变量的定义、赋值和引用的方法,会正确运用指针变量间接访问一维数组的元素。
3.掌握指向字符串的指针变量的定义、赋值和引用的方法,会正确运用指针变量间接访问字符串。
4.理解使用指针变量、数组名作为参数的函数调用的机制和特点,掌握函数的传址调用的使用方法,会正确分析函数传址调用的执行过程,在编程中会根据需要设计合理的传址调用函数并进行正确调用。
5.了解返回指针值的函数的概念,熟悉指针数组、指向指针的指针概念和使用方法,会使用指针数组和二级指针间接访问二维数组元素。
十、结构体与共用体
(一)知识范围
结构体和共用体类型的定义;结构体和共用体变量的定义、初始化和成员引用;结构体数组的定义、初始化和元素引用;指向结构体类型数据的指针;使用typedef定义类型。
(二)考核要求
1.了解和区分结构体和共用体的概念,掌握结构体类型的定义方法,以及结构体变量的定义、初始化和成员引用的方法。
2.掌握结构体数组的定义、初始化和引用数组元素及其成员的方法,会正确运用结构体数组处理异质数据的存储和访问操作。
3.掌握指向结构体类型数据的指针变量的定义、初始化和引用方法,会正确运用指向结构体数据的指针变量间接访问结构体数据及成员,熟悉结构体指针作为参数的函数调用方法。
4.了解共用体类型的定义方法,以及共用体变量的定义、初始化和成员引用的方法。
5.会正确使用typedef语句定义新的类型名。
十一、位运算
(一)知识范围
位运算符(&、|、^、~、<<、>>)及其运算。
(二)考核要求
1.理解各种位运算符的含义,掌握各种位运算的运算规则和特点。
2.会正确分析简单的位运算程序,会正确使用位运算实现清零、置1、保留、移位等功能。
Ⅲ.模拟试卷及参考答案
河北省普通高校专科接本科教育考试
C语言程序设计模拟试卷
(考试时间:
75分钟)
(总分:
150分)
说明:
请在答题纸的相应位置上作答,在其它位置上作答的无效。
一、单项选择题(本大题共20小题,每小题2分,共40分。
在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。
)
1.以下选项中合法的用户标识符是()
A.No-1、abc、sf_02B._int、2xy、count
C.pc、_4866pc、vf_2D.++c、hj6_d、name
2.以下选项中正确的C语言常量是()
A.2.46E-1.5B.0382C.'123'D.'\0'
3.设x为int类型,其值为11,则表达式(x++*1/3)的值是()A.3B.4C.11D.12
4.以下说法中正确的是()
A.C语言程序总是从第一个定义的函数开始执行
B.C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
5.正确表示条件100≤x≤300的C表达式是()
A.100<=x<=300B.x>=100,x<=300
C.x>=100&x<=300D.x>=100&&x<=300
6.下列程序段的运行结果是()intx=10,y=20,z=30;if(x>y)z=x;x=y;y=z;printf("%d,%d,%d\n",x,y,z);
A.10,20,30B.20,30,10C.20,30,30D.20,30,20
7.C语言中while和do-while循环的主要区别是()
A.do-while的循环体至少无条件执行一次
B.while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
8.设有以下程序段:
intk=0;while(k=1)k--;
则以下叙述中正确的是()
A.while循环执行一次B.该循环是无限循环
C.循环体语句一次也不执行D.该循环有语法错误
9.以下选项中不能正确赋值的是()
A.char*s;s="student";B.char*s="student";
C.chars[]="student";D.chars[10];s="student";
10.下列各定义数组的语句中不正确的是()
A.inta[1][3];B.intx[2][2]={1,2,3,4};
C.intx[2][]={1,2,4,6};D.intm[][3]={1,2,3,4,5};
11.若有inta[10],*p=a;,且a数组已赋值,则与a[4]不等价的表达式为()A.p+4B.*(p+4)C.*(a+4)D.p[4]
12.下列关于函数之间数据传递的叙述正确的是()
A.当函数实参是指针类型时,采用传值调用
B.利用函数的返回值传递数据时只能传递一个数据
C.参数的传址调用是一种单向数据传递方式
D.参数的传值调用方式中,形参与实参具有相同的存储空间
13.已定义以下函数的功能是()voidfun(char*p2,char*p1)
{while((*p2=*p1)!
='\0'){p1++;p2++;}}
A.将p1所指字符串复制到p2所指内存空间
B.将p1所指字符串的地址赋给指针p2
C.对p1和p2两个指针所指字符串进行比较
D.检查p1和p2两个指针所指字符串中是否有'\0'
14.以下程序段中,变量c的二进制值是()chara=2,b=4,c;
c=a+b<<2;
A.00000011B.00010100C.00011100D.00011000
15.表达式strlen("\x69\082\n")的值是()
A.1B.2C.3D.4
16.C语言中局部变量的缺省存储类别是()
A.staticB.autoC.registerD.extern
17.以下程序的运行结果是()
#include
#defineM(x,y)x-yvoidmain()
{inta=4,b=3,c=5;printf("%d",a*M(b,c));
}
A.8B.7C.编译错误D.-8
18.以下程序段运行后的结果是()intx=1,y=2,z=3;y+=x+=z;printf("%d",xx++:
y++);
A.6B.5C.4D.3
19.若有以下说明和语句,对c数组元素的正确引用是()intc[4][5],*cp[4];
for(intj=0;j<4;j++)cp[j]=c[j];
A.cp+1B.*(cp+3)C.*(cp+1)+3D.cp[2][3]
20.有以下说明语句:
struct
{
inta;doubleb;
}stu;
则下面叙述中不正确的是()
A.struct是定义结构体类型的关键字B.structstu是用户定义的结构体类型
C.stu是用户定义的结构体变量
D.a和b都是结构体成员名
二、程序阅读题(本大题共5小题,每小题6分,共30分。
请将程序的运行结构填写在答题纸的相应位置上。
)
1.
#include
doublef(doublex,doubley)
{if(x>=y)
return(x+y)/2.0;else
returnf(f(x+2,y-1),f(x+1,y-2));
}
voidmain()
{
printf("%.1f",f(5.0,7.0));
}
2.
#includevoidmain()
{inti,j,x=0;for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;x++;
}x++;
}
printf("x=%d",x);
}
3.
#include
intsum(int*p,intn)
{ints=0,j;
for(j=0;jreturns;
}
voidmain()
{inta[10]={1,2,3,4,5,6,7,8,9,10},t;
t=sum(a+2,5);printf("%d",t);
}
4.
#includevoidswap(int*,int);voidmain()
{inta=3,b=5;swap(&a,b);
printf("a=%d,b=%d",a,b);
}
voidswap(int*x,inty)
{inttemp;
temp=*x;*x=y;y=temp;
}
5.
#include
intadds(intx,inty);voidmain()
{inta=5,b=-1,c;
c=adds(a,b);printf("%d,",c);
c=adds(a,b);printf("%d\n",c);
}
intadds(intx,inty)
{staticintm=0,n=3;n*=++m;
m=n%x+y++;return(m);
}
三、程序填空题(本大题共3小题,每空5分,共35分。
请将答案填写在答题纸的相应位置上。
)
1.程序功能:
输出100以内的个位数为6、且能被3整除的所有正数。
#includevoidmain()
{inti,j;
for(i=1;;i++)
{j=i*10+6;
if()continue;printf("%d\t",j);
}
}
2.程序功能:
实现数组元素的逆序存放并输出结果。
#include
voidinverse(int*,int);voidmain()
{inta[10],i;for(i=0;i<10;i++)
scanf("%d",&a[i]);
inverse();for(i=0;i<10;i++)
printf("%d\t",a[i]);printf("\n");
}
voidinverse(int*p,intn)
{int*q,t;
for()
{t=*p;*p=*q;*q=t;}
}
3.程序功能:
找出学生成绩的最高者,并输出其各项信息。
#includevoidmain()
{structstudent
{intid;
charname[20];floatscore;
};
structstudentstu[4],*p;inti,temp=0;
for(p=stu;pscanf("%d%s%f",);for(i=1;i<4;i++)
if()temp=i;
p=;printf("\nThemax-numscore:
\n");
printf("Id:
%d\nName:
%s\nScore:
%4.1f\n",p->id,p->name,p->score);
}
四、编程题(本大题共3小题,每小题15分,共45分。
请在答题纸的相应位置上作答。
)
1.编写程序,使用循环结构语句打印输出如下图形。
2.编写程序,将从键盘输入的10个整数按升序排列输出。
3.编写函数voiddel(char*s,charc),其功能是在s所指字符串中删除与变量c相同的字符,并设计主函数实现:
(1)从键盘输入字符串和指定被删除的字符;
(2)调用del()函数实现删除操作;
(3)输出删除后的字符串。
说明:
不允许使用除gets()和puts()之外的任何字符串处理库函数。
C语言程序设计参考答案
一、单项选择题(本大题共20小题,每小题2分,共40分。
选对得2分,选错、未选或多选得0分)
题
号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
答
案
C
D
A
C
D
C
A
B
D
C
A
B
A
D
A
B
B
C
D
B
二、程序阅读题(本大题共5小题,每小题6分,共30分。
分析结果对得6分,未答或答错得0分)
1.6.02.x=83.254.a=5,b=55.2,3
三、程序填空题(本大题共7空,每空5分,共35分。
填对得5分,未填或填错得0分)
1.i<=10、j%3!
=0或j%3
2.a,10、q=p+n-1;p3.&p->id,p->name,&p->score、stu[i].score>stu[temp].score
stu+temp或&stu[temp]
四、编程题(本大题共3小题,每小题15分,共45分。
编码必须符合C语法规范)
答案不唯一,以下代码仅供参考。
1.#include------------------------------------1分
voidmain()----------------------------------------1分
{
inti,j,k;----------------------------------------1分
for(i=1;i<=4;i++)----------------------------2分
{----------------------------2分
for(j=1;j<=4-i;j++)------------------------3分
putchar('');
for(k=1;k<=2*i-1;k++)-------------------------3分
putchar('*');
putchar('\n');--------------------------2分
}
}
2.#include------------------------------------1分
voidmain()------------------------------------1分
{
inta[10],i,j,t;--------------------------------1分
printf("请输入10个整数\n");
for(i=0;i<10;i++)----------------------------2分
scanf("%d",&a[i]);
for(i=0;i<9;i++)----------------------------2分
for(j=0;j<9-i;j++)------------------------2分
if(a[j]>a[j+1])------------------------1分
{------------------------