武汉工程大学专升本《程序设计基础》考试大纲.docx
《武汉工程大学专升本《程序设计基础》考试大纲.docx》由会员分享,可在线阅读,更多相关《武汉工程大学专升本《程序设计基础》考试大纲.docx(13页珍藏版)》请在冰豆网上搜索。
武汉工程大学专升本《程序设计基础》考试大纲
武汉工程大学2008年
专升本《程序设计基础》考试大纲
一、考试基本要求
掌握程序设计高级语言的基本概念、基本理论及程序设计的基本方法与编程技巧,掌握进行科学计算的一般思路,具有一定的抽象思维和逻辑推理能力。
能综合利用所学知识,并具备用计算机解决和处理实际问题的思维方法与基本能力。
二、考试方法
闭卷笔试。
三、考试时间
120分钟。
四、试卷分值
试卷满分100分。
五、题型及比例
单项选择题:
20%
填空题:
10%
读程序写结果:
20%
程序填空:
20%
编写程序:
30%
六、试卷考试内容及要求
1.C语言的基本概念
(1)了解C语言的发展及特点。
(2)掌握程序的基本结构与书写格式。
(3)掌握程序的基本概念及程序开发基本过程。
(4)理解结构化程序设计的思想和方法.
2.数据类型
(1)掌握C语言的字符集及常用词法符号。
(2)C语言的数据类型(掌握基本数据类型和数组;理解结构体、共用体、指针类型、空类型)。
(3)掌握常量及变量的定义方法。
(4)掌握标准输入/输出函数(或标准流对象)的使用方法。
3.运算符和表达式
(1)掌握运算符的种类、运算优先级及其结合性。
(2)掌握各种表达式类型(赋值表达式、算术表达式、逗号表达式、条件表达式、关系表达式、逻辑表达式等)及求值规则。
(3)掌握不同类型数据间的转换与运算。
4.语句
(1)掌握选择语句的使用方法。
(2)掌握循环语句的使用方法。
(3)掌握continue、break语句。
(4)理解循环的嵌套调用。
5.数组
(1)掌握一维数组定义、初始化和引用。
(2)掌握常用排序算法(选择、冒泡)、查找算法(顺序、二分)和插入算法。
(3)理解二维数组的定义、初始化和引用。
(4)掌握字符数组的使用,了解字符串常用函数。
6.函数
(1)掌握常用库函数的正确调用方法。
(2)掌握自定义函数的定义方法。
(3)掌握形式参数与实际参数的区别及参数的传递方式。
(4)掌握函数的类型及其返回值。
(5)掌握函数的调用方法,理解函数的嵌套调用、递归调用。
(6)了解局部变量和全局变量,理解变量的作用域和生存期。
(7)理解变量的存储类型。
(8)了解内部函数和外部函数。
7.指针
(1)掌握指针的概念及指针的定义。
(2)掌握指针与地址运算符及指针的运算。
(3)掌握指向变量、数组、字符串的指针变量。
(4)理解指针变量作函数参数和指针型函数。
(5)理解指针数组和指向函数的指针。
8.编译预处理
(1)掌握编译预处理的概念和特点。
(2)理解不带参数的宏定义及其使用。
(3)理解带参数的宏定义及其使用。
(4)了解“文件包含”的概念和使用。
(5)了解条件编译及其使用。
9.结构与联合
(1)掌握结构类型数据的定义方法。
(2)掌握结构型数据的引用方法。
(3)了解联合类型数据的定义方法和引用方法。
(4)理解指向结构体的指针变量。
10.文件
(1)掌握定义和使用文件指针的方法。
(2)掌握文件的打开和关闭方法。
(3)了解文件的读写方法。
七、考试内容大致比例
1.基础知识部分25%
2.数组25%
3.函数20%
4.指针15%
5.结构与联合10%
6.文件5%
八、试题难易度大致比例
1.容易题35%
2.中等难度题45%
3.较难题20%
九、参考书目
1.《C语言程序设计》,谭浩强编,清华大学出版社。
2.《程序设计基础》,吴文虎编,清华大学出版社。
3.《C语言程序设计》,高巍编,北京理工大学出版社。
《程序设计基础》考试样卷
一、单项选择题(每小题2分,共计20分,将答案写在题中横线上)
1.在C语言中,字符型数据在内存中的存储形式是▁▁▁▁▁。
A.补码B.反码C.原码D.ASCII码
2.下列变量名中合法的是▁▁▁▁▁。
A.B.C.TomB.3a66C._6a7bD.$ABC
3.以下语句输出的结果是▁▁▁▁▁▁。
#include
voidmain()
{
printf(“%d”,null);
}
A.0B.编译出错,变量无定义C.-1D.1
4.为避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与▁▁▁配对。
A.同一行上的ifB.其之后最近的if
C.其之前最近的ifD.缩排位置相同的if
5.以下程序的执行结果是▁▁▁▁▁▁。
#include
voidmain()
{inti,sum;
for(i=1;i<=3;sum++)sum+=i;
printf(“%d\n”,sum);}
A.6B.3C.死循环D.0
6.当执行以下程序时,▁▁▁▁▁▁。
#include
voidmain()
{
inty=-1;
do{y--;}
while(--y);
printf("%d\n",y--);
}
A.循环体将执行一次B.循环体将执行两次
C.循环体将执行无限次D.系统将提示有语法错误
7.若有定义inta[4][5],则元素a[2][3]是数组中第个元素。
A.13B.14C.8D.9
8.在函数调用语句fun1(fun2(x,y),(x,y),z=x+y);中,fun1的实际参数的个数是。
A.3B.7C.4D.5
9.以下叙述中不正确的是。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
10.p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的。
A.p2=*&p1;B.p2=**p1;C.p2=&p1;D.p2=*p1;
二、填空题(每小题1分,共10分,把答案填在题中横线上)
1.一个C语言程序一般由若干个函数构成的,程序中至少应包含一个。
2.x是int类型变量,则执行下列语句x=7;x+=x-=x+x;后x的值是。
3.设有intx=13;则表达式(++x*1/3)的值是。
4.若a=13、b=25、c=-17,条件表达式((y=(a
a:
b)y:
c的值为。
5.在函数内部定义只在本函数内有效的变量是。
6.函数直接或者间接地自己调用自己,被称为函数的。
7.在C语言中,要读取某个数据文件里的数据,首先要将该文件处于打开状态,即对该文件进行操作。
8.定义语句为chara[]=”hangzhou”,*p=a,语句for(inti=0;*p!
=’\0’;p++,i++);
执行后i的值为。
9对宏定义语句“#definef(x,y)printf(x,y)”的引用f(”%d\n”,m);置换展开后为。
10.释放由p所指向的内存区的语句为。
三、读程序写结果(每小题5分,共20分,把答案填在题中“运行结果”处)
1.下列程序的输出结果是:
#include
voidmain()
{inty=3,x=3,z=1;
printf(“%d%d\n”,(++x,y++),z+2);}
运行结果:
2.以下程序的执行结果是:
#include
voidmain()
{structstud
{
charname[20];
intage;
charsex;
}student={"louis",10,'m'};
printf("%s,%d,%c",student.name,student.age,student.sex);
}
运行结果:
3.以下程序运行后,输出结果是:
#include
voidmain()
{
inty=18,i=0,j,a[8];
do
{a[i]=y%2;i++;
y=y/2;
}while(y>=1);
for(j=i-1;j>0;j--)
printf(“%d”,a[j]);
printf("\n");}
运行结果:
4.以下程序运行后,输出结果是:
#include
voidmain()
{
inta[5]={1,2,3,4,5};
int*p=a;
printf("%d,",*++p);
printf("%d,",*p++);
printf("%d",a[2]);
}
运行结果:
四、程序填空。
根据下列各题题意填空,填写在程序中的划线处。
(每空2.5分,共20分)
1.输入2个整数,输出它们的最小公倍数和最大公约数。
#include
voidmain()
{intm,n,gbs,gys;
scanf(
);
for(gbs=m;
;gbs=gbs+m);
gys=
}
2.输入若干个学生的姓名、学号、数学、英语、计算机成绩到文件中student.dat。
#include
voidmain()
{
charname[8],numb[8];
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%s%s%d%d%d",name,numb,&m,&e,&c);
fprintf(fp,"%s%s%d%d%d\n",name,numb,m,e,c);
}
;
}
五、编写程序(每小题10分,共30分)
1.编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。
2.编程,用递归方法求n!
。
3.编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。
《程序设计基础》考试样卷参考答案与评分标准
一、单项选择题(每小题2分,共计20分)
1
2
3
4
5
6
7
8
9
10
D
C
B
C
C
C
B
A
D
A
二、填空题(每小题1分,共10分,把答案填在题中横线上)
1.一个C语言程序一般由若干个函数构成的,程序中至少应包含一个main()函数。
2.x是int类型变量,则执行下列语句x=7;x+=x-=x+x;后x的值是-14。
3.设有intx=13;则表达式(++x*1/3)的值是4。
4.若a=13、b=25、c=-17,条件表达式((y=(a
a:
b)y:
c的值为-17。
5.在函数内部定义只在本函数内有效的变量是内部变量。
6.函数直接或者间接地自己调用自己,被称为函数的__递归调用_。
7.在C语言中,要读取某个数据文件里的数据,首先要将该文件处于打开状态,即对该文件进行open(或打开文件)操作。
8.定义语句为chara[]=”hangzhou”,*p=a;,语句for(inti=0;*p!
=’\0’;p++,i++);
执行后i的值为8。
9对宏定义语句“#definef(x,y)printf(x,y)”的引用f(”%d\n”,m);置换展开后为printf(”%d\n”,m);。
10.释放由p所指向的内存区的语句为free(p)。
三、读程序写结果(每小题5分,共20分,把答案填在题中“运行结果”处)
1.运行结果:
33
2.运行结果:
louis10m
3.运行结果:
1001
4.运行结果:
2,2,3
四、程序填空。
根据读下列各题题意填空,写入在程序中的划线处。
(每空2.5分,共20分)
1.
(1)”%d%d”,&m,&n
(2)gbs%n!
=0
(3)m*n/gbs;
(4)printf(”%d%d\n”,gbs,gys);
2.
(1)FILE*fp;
(2)intm,e,c,i,n;
(3)fp=fopen(”student.dat”,”w”);
(4)fclose(fp);
五、编写程序(每小题10分,共30分)
1.编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。
参考程序如下:
#include"stdio.h"
#defineN50
voidmain()
{floatx;unsignedints1,s2,s3,i;//正确定义变量,得2分。
s1=s2=s3=0;
for(i=1;i<=N;i++){//正确使用循环,得2分。
scanf("%f",&x);//正确输入数据,得1分。
if(x<0)s1++;elseif(x==0)s2++;elses3++;//三个计数器每个正确累加,得3分。
}
printf("负数%u个,零%u个,正数%u个\n",s1,s2,s3);//正确输出,得2分。
}
2.编程,用递归方法求n!
。
参考程序如下:
#include
longfact(intm)//函数头部定义正确,得1分。
{longp;
if(m==0||m==1)p=1;//正确定义结束条件,得1分。
elsep=m*fact(m-1);//正确写出递归表达式,得2分。
return(p);//正确返回结果,得1分。
}
voidmain()
{
intn;
longx;
scanf(“%d”,&n);//输入,得1分。
x=fact(n);//正确调用函数,3分。
printf(“n!
=%ld”,x);//输出,得1分。
}
3.编写一个函数print,打印包含学生成绩的数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。
参考程序如下:
#include
structstudent{charnum[7],name[9];intscore[3];};//正确定义结构体,得1分。
voidprint(structstudent*s,intn)//函数头部定义正确,得2分。
{inti;
for(i=0;i(*(s+i)).score[0],(*(s+i)).score[1],(*(s+i)).score[2]);
//正确利用循环结构输出结果,得3分。
return;
}
voidmain()
{structstudentt[4];inti;
for(i=0;i<4;i++)
scanf("%s%s%d%d%d",&t[i].num,&t[i].name,&t[i].score[0],
&t[i].score[1],&t[i].score[2]);//正确利用循环结构输入数据,得2分。
print(t,4);//正确调用函数,得2分。
}