江苏二级c考试大纲及样题Word下载.docx
《江苏二级c考试大纲及样题Word下载.docx》由会员分享,可在线阅读,更多相关《江苏二级c考试大纲及样题Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
1.掌握程序设计的一般步骤与方法
2.能熟练使用C语言进行程序设计
1.C语言的基本知识。
(1)C语言源程序的书写格式和结构。
(2)C语言程序集成开发环境。
用户界面,编译、连接、运行命令,常
用调试命令。
(3)main函数与其他自定义函数的组成与作用。
(4)基本类型数据。
①系统预定义类型标识符、修饰符的意义。
②基本类型常量表示。
整型常量,单精度实型常量,双精度实型常量,字符型常量。
③基本类型变量的声明、初始化及引用。
(5)表达式。
①赋值表达式、算术表达式、关系表达式、逻辑表达式、逗号表达式、条件表达式与位运算表达式的组成与功能。
②赋值、++、--运算符的左值要求。
③逻辑表达式的求值顺序与优化。
④运算符的目数、优先级与结合性。
⑤操作数的数据类型转换。
2.结构化程序设计基本语句。
(1)顺序结构语句。
表达式语句,函数调用语句,空语句,复合语句,标准输入/输出库函数调用语句(printf,scanf,getchar,putchar,gets,puts)。
(2)选择结构语句。
if-else,switch。
(3)循环结构语句。
while,do-while,for。
(4)跳转语句。
break,continue,return。
3.构造类型数据。
(1)基本类型一维数组与二维数组。
①数组声明及初始化。
②数组元素引用表达式。
(2)结构类型变量和一维数组。
①结构类型定义。
②结构类型变量和一维数组声明及初始化。
③结构类型变量成员和结构类型数组元素成员引用表达式。
(3)联合类型变量。
①联合类型定义。
②联合类型变量声明及初始化。
③联合类型变量成员引用表达式。
4.指针类型数据。
(1)指针的含义与取地址运算符&
。
(2)指向基本类型变量和指向基本类型数组元素的指针变量声明、初始化、赋值、算术运算及引用,引用运算符[]和卡。
(3)字符串常量。
(4)指向二维数组一行元素的行指针变量声明、初始化、赋值、算术运算及引用。
(5)指向结构变量和结构数组元素的指针变量声明、初始化、赋值及引用。
(6)指针数组的声明及引用。
(7)二级指针的声明及引用。
5.函数。
(1)函数的定义、声明及调用。
(2)函数调用时参数的传递(传递数值,传递地址)及类型兼容。
(3)函数返回值的传递。
(4)递归函数定义及调用。
(5)变量作用域(全局变量、局部变量、形式参数变量)。
(6)变量存储类型和生存期。
(7)main函数的形式参数声明及引用。
(8)指向函数的指针变量声明、初始化、赋值及引用。
6.枚举类型数据。
(1)枚举类型定义和枚举常量的引用。
(2)枚举变量的声明、赋值及引用。
7.预处理命令。
(i)#define命令(符号常量定义及引用,宏定义及调用)。
(2)#include命令。
8.文件操作。
(l)文件指针变量的声明、赋值及引用。
(2)缓冲文件系统库函数及宏定义。
fopen(),fclose(),fprintf(),fscanf(),feof(),rewind(),fread(),如dte(),fseek().
9.单向链表。
(1)结点类型的定义、动态申请与释放。
(2)建立链表、遍历链表、插入新结点、删除结点。
10.库函数。
(1)数学计算。
abs(),fabs(),sin(),cos(),tan(),exp(),sqrt(),pow(),log()。
(2)字符处理。
isalpha(),isdigit(),islower(),isupper(),isspace(),tolower(),toupper()。
(3)字符串处理。
strcmp(),strcat(),strcpy(),strlen(),strcnmp(),strncat(),strncpy(),strlwr(),strupr().
11.算法
(1)基本算法。
数据交换、累加、累乘。
数字分解与重排。
素数判断。
求因子。
找最大(最小)数。
求最大公约数、最小公倍数。
数据类型转换。
(2)非数值计算。
穷举法求解,数据排序(冒泡法、插人法、选择法),数据归并(或合并),数据查找(线性法、折半法),数据插入、删除与统计。
(3)数值计算。
级数计算(递推法),一元非线性方程求根(牛顿法,二分法),定积分计算(梯形法、矩形法),矩阵转置,矩阵乘法。
三、考试说明
1.考试方式为无纸化网络考试,考试时间为120分钟。
2.软件环境:
WindowXP/Window7操作系统,MicrosoftVisualC++6.0,DevC++
3.考试题型及分值分布见样卷。
江苏省高等学校计算机等级考试
二级C考试(样卷)
(本试卷完成时间
120分钟)
第一部分计算机信息技术基础知识
选择题(共20分,每题2分)
1.下列关于数字技术与微电子技术的叙述中,错误的是______。
A.数字技术的处理对象是"
比特"
,一个触发器可以存储2个比特
B.在数据通信时,远距离传输或者无线传输时需要用比特对载波进行
C.现代集成电路使用的半导体材料主要是硅
D.我国第2代居民身份证中使用了非接触式IC芯片
2.下列关于台式PC芯片组的叙述中,错误的是______。
A.芯片组是主板上最为重要的部件之一,存储器控制、I/O控制等功能主要由芯片组实现
B.芯片组与CPU同步发展,有什么样功能和速度的CPU,就需要使用什么样的芯片组
C.芯片组决定了主板上能安装的内存最大容量及可使用的内存条类型
D.同CPU一样,用户可以很方便、很简单地更换主板上的芯片组
3.下列关于I/O设备的叙述中,错误的是______。
A.目前平板电脑、智能手机的触摸屏大多为"
多点触摸屏"
,可同时感知屏幕上的多个触控点
B.扫描仪可分为手持式、平板式和滚筒式等类型,目前普通家用/办公用扫描仪大多为滚筒式
C.目前一些型号的数码相机已具有拍摄视频和进行录音的功能
D.为了降低成本,目前许多PC采用集成显卡,其显示控制器被集成在芯片组中
4.下列关于PC外存储器的叙述中,错误的是____。
A.目前PC采用的硬盘,其盘片的直径通常为3.5英寸、2.5英寸或1.8英寸
B.U盘和存储卡都是采用闪烁存储器制作的,目前其容量大多为几GB至几十GB
C.目前固态硬盘的存储容量大多为数百GB,但其读写速度远不如传统硬盘(硬磁盘)
D.蓝光光盘是目前最先进的大容量光盘,单层盘片的存储容量可达25GB
5.下列关于Windows操作系统功能的叙述中,错误的是______。
A.对于多任务处理,系统一般采用按时间片轮转的策略进行处理器调度
B.系统采用了虚拟存储技术进行存储管理,其页面调度算法为"
最近最少使用"
(LRU)算法
C.系统支持多种文件系统(如FAT32、NTFS、CDFS等)以管理不同的外存储器
D.系统支持任何I/O设备的"
即插即用"
和"
热插拔"
6.下列关于程序设计语言的叙述中,错误的是____。
A.虽然机器语言不易记忆、机器语言程序难以阅读和理解,但目前还有很多人使用其编写程序
B.汇编语言与计算机的指令系统密切相关,不同类型的计算机,其汇编语言通常不同
C.VBScript语言是VB的子集,用其编写的程序可以嵌入在HTML文档中以扩充网页的功能
D.Java语言是一种适用于网络环境的程序设计语言,目前许多手机软件就是用Java编写的
7.下列关于通信技术的叙述中,错误的是______。
A.调制与解调技术主要用于模拟通信,在数字通信中不需要使用调制与解调技术
B.使用多路复用技术的主要目的是提高传输线路的利用率,降低通信成本
C.在数据通信中采用分组交换技术,可以动态分配信道资源,提高传输效率和质量
D.数据通信网络大多采用分组交换技术,但不同类型网络的数据包格式通常不同
8.Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在
Internet上的每一台主机都有一个IP地址。
目前使用的是IPv4标准(32位地
址),下一代互联网将会采用IPv6标准,其IP地址为____。
A.48位
B.64位
C.96位
D.128位
9.下列关于字符编码标准的叙述中,错误的是____。
A.在ASCII标准中,每个字符采用7位二进制编码
B.在绝大多数情况下,GB2312字符集包含的1万多个汉字足够使用
C.Unicode字符集既包含简体汉字,也包含繁体汉字
D.中文版WindowsXP及其后的Windows系列操作系统均支持国标GB18030
10.由于采用的压缩编码方式及数据组织方式的不同,图像文件形成了多种不同的文件格式。
在下列四种图像文件中,常用于网页上发布并可具有动画
效果的是。
A.BMP
B.JPEG
C.GIF
D.TIF
参考答案:
1.A3.B2.D4.C5.D6.A7.A8.D9.B10.C
第二部分C语言程序设计
一、选择题(共10分,每题2分)
1.以下语句中有语法错误的是____。
A.printf(”%d”,OxAB);
B.printf(”%f”,3.45E2.5);
C.printf(”%d”,037);
D.printf(”%c”,'
\\'
);
2.已有声明“intx=5,y.floatz=2;
”,以下表达式中语法正确的是___。
A.y=x%z
B.x>
0?
y=x:
y=-x
C.y=x/2=z
D.y=x=z/2
3.-元二次方程ax2+bx+c=0有两个相异实根的条件是a≠0且b2—
4ac>
0,以下选项中能正确表示该条件的C语言表达式是。
A.a!
=0,b*b-4*a*c>
B.a!
=011b*b-4*a*c>
C.a&
&
b*b-4*a*c>
D.!
a&
b*b-4*a*c>
4.若有一函数定义为“intf(intx,int*y){returnx/*y;
}”,声明该函数的
正确形式是
A.voidf(int,int);
B.int*f(int,int*);
C.intf(int*,int*);
D.intf(int,int*);
5.已有定义和声明:
structstudent
{intno;
charname[20];
struct{intyear,month,day;
}birth;
}s;
若要求将日期“1989年11月12日”保存到变量s的birth成员中,则能实
现这一功能的程序段是______。
A.year=1989;
month=11;
day=12;
B.s.year=1989;
s.month=11;
s.day=12;
C.birth.year=1989;
birth.month=11;
birth.day=12;
D.s.birth.year=1989;
s.birth.month=11;
s.birth.day=12;
二、填空题(共20分,每空2分)
1.以下程序运行时输出到屏幕的结果中第一行是___
(1)___第二行是
___
(2)___。
#include<
stdio.h>
intmain()
{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i,j;
for(i=0;
i<
12;
i++)
{j=s[i];
c[j]++;
}
for(i=1;
5;
i++)
printf("
%d:
%d\n"
i,c[i]);
return0;
2.以下程序运行时输出到屏幕的结果中第一行是___(3)___,第二行是
___(4)___。
#include<
stdio.h>
intfun(intx)
{staticintc,y;
if(c==0)y=1;
elsey=y+x;
c++;
returny;
intmain()
{inti;
2;
printf(”%d\n"
fun
(2));
return0;
3.以下程序运行时输出到屏幕的结果中第一行是___(5)___第二行是
___(6)___。
voidfun(int*a,intb)
{while(b>
0)
{*a+=b;
b--;
}
{intx=0,y=3;
fun(&
x,y);
%d\n%d"
x,y);
4.以下程序运行时输出到屏幕的结果是___(7)___。
stdio.h>
intf(intx)
{if(x==0||x==1)return3;
returnx*x-f(x-2);
{printf("
%d\n"
f(3));
5.以下程序运行时输出到屏幕的结果中第一行是___(8)___,第二行是
___(9)___,第三行是___(10)___。
算法提示:
将Fibonacci数列(1,1,2,
3,5,8,13,...)前6个数填入a数组。
#defineN3
{inti,j,a[N][N]={1},f1=0,f2=1,temp;
N;
for(j=0;
j<
=i;
j++)
{if(j<
=i)
{a[i][j]=f1+f2;
temp=f1;
f1=f2;
f2=f1+temp;
for(i=0;
{for(j=0;
printf(”%5d”,a[i][j]);
printf(”\n”);
三、操作题(共50分)
1.完善程序(共12分,每空3分)
【要求】
1.打开T盘中的文件myf0.c,按以下程序功能完善文件中的程序。
2.修改后的源程序仍保存在T盘myf0.c文件中。
【程序功能】
根据输入的年份及该年中的第几天,计算并输出这一天的“年/月/日”。
例如,
若输入“2010,100”,则输出“2010/4/10(表示2010年的第100天是4月10日)”。
提示:
能被4整除并且不能被100整除的年份是闰年,能被400整除的年份
也是闰年,其他年份是平年。
【待完善的源程序】
stdio.h>
conio.h>
intleap(intyear)
{inty;
y=year%4==0&
___
(1)___||year%400==0;
voidmonth_day(intyear,intyearday,int*month,int*day)
{intk,p;
inttab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,
31,30,31,30,31,31,30,31,30,31}};
p=leap(year);
for(k=1;
yearday>
___
(2)___;
k++)
yearday=yearday-tab[p][k];
*month=k;
*day=___(3)___;
{intyear,days,month,day;
Inputyearanddays!
\n"
);
scanf("
%d,%d"
&
year,&
days);
if(leap(year)==1&
days<
=366||leap(year)==0&
=365)
{month_day(year,days,___(4));
printf("
\n%d/%d/%d"
year,month,day);
elseputs("
daysisWrong!
"
getch();
2.改错(共16分,每个错4分)
1.打开T盘中的文件myf1.c,按以下程序功能改正文件中程序的错误。
2.可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或
编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3.修改后的源程序仍保存在T盘myf1.c中。
下列程序中函数wordsearch的功能是将a指向的字符串中所有回文单词复
制到b指向的二维数组中(一个回文单词存储在b数组的一行中),函数返回b
数组中回文单词的个数。
回文单词是指:
一个单词自左向右读与自右向左读相同(字母不区分大小
写)。
例如,Dad是回文单词。
【测试数据与运行结果】
测试数据
:
Dadlefthomeatnoon.
屏幕输出:
found2words
Dad
noon
【含有错误的源程序】
conio.h>
ctype.h>
intwordsearch(chara[],charb[][10])
{inti,j,k,m,n,t,c=0,d;
a[i];
{for(j=i,k=i;
isalpha(a[k]);
k++);
m=j;
n=k-1;
while(toupper(a[m])==toupper(a[n])&
m<
=n)
{m++;
n--;
if(m==n)
{for(d=0,t=j;
t<
k;
t++)
b[c][d]=a[t];
b[c][d]='
\0'
;
i=k;
returnc;
{chars1="
Dadlefthomeatnoon."
;
chars2[10][10];
inti,j;
puts(s1);
j=wordsearch(s1,s2);
found%dwords\n"
j);
j;
puts(s2);
3.编程(共22分)
1.打开T盘中的文件myf2.c,在其中输入所编写的程序,输出结果数据文
件取名myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件
操作函数实现。
判断一个NxN矩阵是否为幻方阵。
幻方阵是指一个矩阵中每行元素之和、每列元素之和及左右主对角线上元
素之和均相等。
【编程要求】
1.定义符号常量N代表5。
2.编写函数intjudge(inta[N][N])。
函数功能是判断a指向的一个N行N
列二维数组中存储的矩阵是否为幻方阵,如果是则函数返回1,否则返回0。
3.编写main函数。
函数功能是声明二维数组x并用测试数据初始化,用x
数组作为实参调用judge函数进行判断,将x数组中数据及以“yes”或“no”表示
的判断结果输出到屏幕及文件myf2.out中。
最后将考生本人准考证号字符串
输出到文件myf2.out中。
【测试数据与运行结果】
测试数据:
17241815
23571416
46132022
101219213
11182529
屏幕输出:
yes
选择题
1.A3.B5.D7.A9.B
2.D4.C6.A8.D10.C
一、选择题
(1)