江苏省计算机等级考试C语言部分资料.docx
- 文档编号:27917208
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:73
- 大小:119.71KB
江苏省计算机等级考试C语言部分资料.docx
《江苏省计算机等级考试C语言部分资料.docx》由会员分享,可在线阅读,更多相关《江苏省计算机等级考试C语言部分资料.docx(73页珍藏版)》请在冰豆网上搜索。
江苏省计算机等级考试C语言部分资料
题型
1.选择题基础部分,10题,20分
2.选择题C语言部分,5题,10分
3.阅读程序:
10空,20分
4.完善程序1题:
4空,12分
5.改错1题,4处,共16分。
6.编程,1题,22分。
共100分。
第1章C语言概述
考点1:
C语言特点、构成、main函数及其它
重点:
(1)程序从main函数开始执行,到main函数结束,main函数的位置可以任意。
(2)书写格式自由,一行可以多句,一句可以多行。
(3)语句和数据定义后必须要有分号。
(4)注释的作用及在程序中的位置。
例.使用TURBOC系统编译C语言源程序后生成的文件名后缀是______(5)______。
例以下有关C语言函数的描述中,错误的是(21)。
A.一个完整的C程序可以有多个函数,其中必须有且只能有一个名为main的函数
B.当一个C程序包含多个函数时,先定义的函数先执行
C.函数可以嵌套调用
D.函数不可以嵌套定义
第2章数据类型、运算符和表达式(选择题和填空题)
考点1:
C语言的数据类型
基本类型,数组,指针,结构体,共用体,枚举类型,空类型(函数返回值,无形参)
重点:
(1)unsigned和signed的区别
(2)int,long,char占用的位数和取值范围
例.已知某编译系统中signedint类型数据长度是16位,该类型数据的最大值是_____。
A.32767B.32768C.127D.65535
例.若要声明一个无符号整型变量x,则正确的声明形式是“___intx;”。
考点2:
常量和变量
Ø整型常量
重点:
(1)十进制:
23
(2)八进制:
023
(3)十六进制:
0x23各种进制之间的转换。
(4)后缀的使用及数据类型:
12L,0234l,12u等。
例.C语言源程序中用十六进制表示整型常数必须以______
(1)___开头。
例.若要在C程序中以十六进制形式表达十进制数35,表示形式是___
(2)___。
例.以下程序运行时输出到屏幕的结果是(6)。
#include
voidmain()
{inta=011;
printf("%d",a);
}
例:
在C语言中,不能用于表示整型常数的进制是_________
Ø实型常量
(1)十进制小数形式
(2)十进制指数形式
(3)后缀的使用及数据类型
重点:
E格式针对的是常量,
不能写成1Ex
Ø字符常量*
重点:
(1)单引号括起来的一个字符,ASSIC码,字母,数字字符。
(2)转义字符,\引导,’\t’,’\n’,’\\’,’\ddd’,’\xhh’
1.已有声明“charc=’\72’;”,则变量c包含个字符。
A.1B.2C.3D.4
2.以下选项中,不能将字母A的编码保存到变量ch的声明是________。
A.charch="A";B.charch='A';C.charch='\101';D.charch=65;
Ø字符串常量
双引号括起来的字符序列,”a”和’a’区别
Ø符号常量*
符号常量的定义,引用与作用域
21.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是______。
A.#defineP3.14;B.#defineP(3.14)
C.#defineP=3.14;D.#defineP3.14
Ø标识符命名规则
重点:
构成:
字符,数字,下划线,第一个字符必须是字母或下划线。
关键字不能做标识符。
1.下面选项中可用作变量名的是______(27)_____。
A.CaseB.a—bC.$cdD.2ab
Ø关键字
C语言中常用的关键字有哪些,注意区分大小写。
例.下列四个选项中,属于C语言关键字的是__________。
A.FloatB.singleC.doubleD.real
例.以下选项中不符合C语言标识符命名规则的是:
A.printfB._00C.&aD.FOR
考点3:
类型转换*
自动转换和强制转换
重点:
(1)混合运算中的自动转换,转换规则
(2)不同长度的整数之间的赋值,常考:
长->短原则,截取低位。
例.已有声明“doublex=3.5;",表达式“(int)x+x”值的类型为
(2)
例.已有声明“charc=255;”,执行语句“c++;”后变量c的值是___
(1)___。
例.以下程序运行时,输出到屏幕的结果中第一行是(10),第二行是11)。
#include
intmain()
{intx;
chara;
a=x=266;
printf("%d\n%d",x,a);
return0;
}
例:
执行程序段“charc=255;c=c+1;printf(“%d”,c);”后,输出结果为________
A.256B.-255C.1D.0
考点4:
运算符和其表达式
重点:
%、/++--&&||
(1)%两边必须是整数。
(2)/整除还是一般除法
(3)前++,--,后++,--
(4)&&,||运算符优化。
例.已有声明“intx=0,y=2;”,则执行语句“y=--x||++y;”后,变量y的值为。
A.0B.1C.2D.3
例.已有预处理命令“#include
A.if(a%2=1)b=a;B.if(sqrt(a)%2)b=a;
C.if(a==1)b=a;D.if(a==1)b=*a;
例.已有声明“inta,b;”且a和b的值均大于0,表达式“a%b+a/b*b==a"的值为.
例.判断char型变量c1的值是否为小写字母的正确表达式为。
A.’a’<=c1<=’z’B.c1>=a&&c1<=z
C.’a’>=c1‖’z’<=c1D.c1>=’a’&&c1<=’z’
例.表示数学式“0 例。 以下选项中,可作为C语言合法表达式的是______________。 A.3.0%2B.3=2=1=0C.{3,2,1,0}D.(3,2,1,0) 例.表达式”3<2||-1&&! 0”的值是: A.2B.1C.0D.-1 考点5: 赋值运算符和表达式 重点: (1)优先级。 (2)左边必须是变量,不能是常量或表达式 例.if(a%2=1)b=a;错 例.已有声明“intn=12;doublea;”,则执行语句“a=n/=5;”后,a的值为________。 考点6: 逗号运算符 重点: (1)逗号运算符的运算规则,整个表达式的值为最后一个表达式的值。 (2)比赋值运算符优先级要低。 例.假如a=1,b=1; 求c=a++,a+b;和c=(a++,a+b);后a,b,c的值。 例.已有声明“intt=1;”,则执行“printf("%d",(t+5,t++));”时输出的结果是___。 A.1B.6C.2D.7 考点7: 条件运算符 重点: (1)优先级和运算次序。 例.已有声明“inta=3,b=4,c=5,d=0;”,执行语句 “printf("%d",d=a>b? (a>c? a: b): (b>c? b: c));”时输出____。 A.3B.4C.5D.0 考点8: 位运算 重点: 按位与&,或|,异或^,取反~,左移<<,右移>>,最近几年没有出现位运算题目。 第三章常用的函数 考点1: scanf和getchar Ø常用的格式控制符(d,u,c,x,o,f,lf,s) Ø输入格式 例.已有声明“inta;charb;”,执行语句“scanf("%d%c",&a,&b);”时,若要求将整数2输入到变量a、将字符u输入到变量b,则以下输入形式中正确的是_______。 A.2uB.2uC.2,uD.2'u' 考点2: printf和putchar 重点: (1)区别 (2)printf语句输出格式控制符 例.已有声明“intx=0,*p=&x;”,以下语句中有语法错误的是________。 A.printf("%d",*x);B.printf("%d",&x); C.printf("%d",*p);D.printf("%d",x); 例.如已有声明“chars[]="Hello",i;”,以下语句中,与“for(i=0;s[i];i++)putchar(s[i]);”的执行效果相同的是_______。 A.putchar(s);B.printf("%c",*s); C.printf("%c",s);D.printf("Hello"); 考点3: puts 例.已有声明“staticchar*p="Apple";”,则执行语句“puts(p+2);”时输出为_______。 A.AppleB.CppleC.ppleD.ple 考点4: 字符串操作函数 重点: (1)strcpy,strcat (2)strcmp函数返回值情况 (3)strlwr,strupr 例。 charpl[80]="NanJing”,p2[20]="Young",*p3="Olympic"; strcpy(p1,strcat(p2,p3)); printf("%s\n”,p1); 执行该程序段后的输出是_______。 A.NanJingYoungOlympicB.YoungOlympic C.OlympicD.NanJing 例.已知声明“char*s1="China",s2[10],*s3="Nanjing",*s4;”,以下字符串赋值语句在执行时可能出现错误的是____。 A.strcpy(s3,s1);B.strcpy(s4,s1); C.strcpy(s2,s1);D.strcpy(s2,s3); 例.已有声明“inta;chars[80]=”123456”;”,执行语句“strcpy(s+4,"123456");a=strlen(s);”后变量a的值是。 例.已有声明“chars1[4],*s2="character";”,能实现“将s2指向的字符串中最后3个字符组成的子串复制到s1数组”功能的语句是____29____。 A.s1=s2+strlen(s2)-3;B.s1[0]=s2[strlen(s2)-3]; C.strcpy(s1[0],s2[strlen(s2)-3]);D.strcpy(s1,s2+strlen(s2)-3); 考点6: 数学及字符函数 需要掌握的数学函数包括: 1.intabs(intx)求整数的绝对值 2.doublefabs(doublex)求实数的绝对值 3.doublepow(doublex,doubley)求xy 4.doublesqrt(doublex)求平方根 需要掌握的字符函数包括: 1.intisalpha(intch)检查ch是否为字母,是字符返回为1,否则返回为0. 2.intisdigit(intch)检查ch是否为数字,是数字返回为1,否则返回为0. 3.其它islower,isupper,tolower,toupper 第四章C语言的流程控制 这是程序的基本,必须掌握。 考点1: 选择结构if和switch 重点: (1)if语句的三种结构,if语句中的语句只有一条,可以是逗号语句。 (2)if语句的条件表达式可以是任意的合法C语言的表达式。 (3)else语句的配对问题。 (4)switch后的表达式只能是整型(字符)表达式(值) (5)case后只能是整型或字符常量 例: 以下关于if语句和switch语句的叙述中错误的是___。 A.if语句和switch语句都可以实现算法的选择结构 B.if语句和switch语句都能实现多路(两路以上)选择 C.if语句可以嵌套使用 D.switch语句不能嵌套使用 例: 以下程序运行时,输出到屏幕的结果是______。 #include voidmain() {inta=0,b=1,d=10; if(a) if(b) d=20; else d=30; printf("%d\n",d); } 例: 设有声明“inta=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是________。 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;} 考点2: 循环结构 重点: (1)三种循环的结构,while和do-while的区别 (2)理解循环嵌套的执行过程 例.如果一个循环结构的循环体至少要执行一遍,则最适合描述该循环结构的语句是________语句。 例.以下关于while语句和do-while语句的描述中,错误的是______。 A.while语句和do-while语句都可以使一段程序重复执行多遍 B.while语句和do-while语句都包含了控制循环的表达式 C.while语句和do-while语句都包含了循环体 D.while语句和do-while语句的循环体至少都会被执行一次 例.执行以下程序后的结果是_________。 #include voidmain() {intx=3; do { printf("%d\t",x=x-3); }while(! x); } A.输出一个数: 0B.输出一个数: 3 C.输出2个数: 0和-3D.无限循环,反复输出数 例.2.以下程序运行时,输出到屏幕的结果是 ______。 #include int main() { int a=6,b=15,t=a; while (t%b! =0) t+=a; printf("%d",t); return 0; } 考点3: break和continue 重点: (1)break功能,跳出switch语句和提前结束整个循环 (2)continue功能,提前结束本次循环。 例.除goto语句外,在循环结构中执行___ (1)___语句可提前结束本次循环直接进入下—次循环。 第五章函数* 考点1: 函数的定义、声明和调用 重点: (1)定义: 类型标识符函数名(形参列表) {声明语句},注意形参的写法 (2)调用: 函数名(实参列表) 注意实参的写法 (3)声明: 类型说明符函数名(类型形参1,类型形参2.。 。 。 。 。 ) 类型说明符函数名(类型,类型,。 。 。 。 。 ) (4)形参和实参的关系 (5)一般变量,指针做函数参数的区别(必考) (6)在上机改错题中,经常有函数头部改错,返回值类型,形参实参如何写。 例.以下程序运行时输出到屏幕的结果中第一行是(9),第二行是_(10)。 #include intf(int*a) {intb; printf("%d\n",b=*a); a++; returnb+*a; } voidmain() {inta[3]={2,3,4}; a[0]=f(&a[0]); printf("%d\n",a[0]); 例.以下程序运行时,输出到屏幕的结果中第一行是___(8)___,第二行是___(9)___。 #include voidfun(int*x,inty) {x++,y++; *x=y; } intmain() {inta[2]={0}; fun(a,a[0]); printf("%d\n%d",a[0],a[1]); return0; } 例.假定一个函数的头部为“char*func(intn)”,则该函数返回值的类型是24。 A.intB.int*C.charD.char* 例.已知fun函数的头部为“voidfun(intx[],intn)",main函数中有声明“inta[10]={1},b=10;",欲在main函数中调用fun函数,则以下调用语句中正确的是25。 A.fun(a,fun(a,b));B.fun(a[10],b);C.fun(a,a[0]);D.fun(b,a); 例.以下程序运行时,输出到屏幕的结果是(8)。 #include intfun(intx,inty,intz) {returnx*y*z;} intmain() {printf("%d",fun(1.5,2.5,3.5)); return0; } 例.已有fun函数定义: voidfun(intx[],intn) {while(n>0)x[--n]++;} 若main函数中已声明“inta[6]={0};”,则以下main函数调用fun函数的语句中,正确的是____27____。 A.fun(a);B.fun(a,a);C.fun(a,1);D.fun(1,a); 例.已知main函数中有声明“inta=3,b=4;”,若在main函数中通过执行语句“swap(&a,&b);”交换a、b变量的值,则下列swap函数定义中正确的是____28____。 A.voidswap(intx,inty){intt;t=x;x=y;y=t;} B.voidswap(int*x,int*y){intt;t=*x;*x=*y;*y=t;} C.voidswap(int*x,int*y){int*p;p=x;x=y;y=p;} D.voidswap(int*x,int*y){int*p;p=*x;*x=*y;*y=p;} 上机改错题中中,如下错误: intfun(charstr[],charpag[][]) {inti,k=0,j,flag=1; 。 。 。 。 。 。 。 。 。 。 。 。 } 主函数中调用出现的错误2012年 。 。 。 。 。 insert(string[]); 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2011年秋(01) if(allprime(j,a[])) 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 考点2: 递归函数调用(必考)* 重点: 递归函数的调用执行过程,一般出现在运行结果题目中。 例.以下程序运行时,输出到屏幕的结果中第一行是____(15)_____,第二行是_____(16)____。 #include intfun1(intp[],intn) {inti,s=0; for(i=0;i s+=p[i]; returns; } intfun2(int*s,intn) {if(n==1) return*s; else return(*s)+fun2(s+1,n-1); } voidmain() {inta[]={1,2,3,4,5}; printf("%d\n%d",fun1(a,3),fun2(a,3)); 例.以下程序运行时输出到屏幕的结果中第一行是_(14),第二行是(15)。 #include voidfun1(int*x,intn) {inti,t; for(i=0;i {t=x[i];x[i]=x[n-1-i];x[n-1-i]=t;} } voidfun2(int*x,intn) {intt; if(n==1)return; t=x[0];x[0]=x[n-1];x[n-1]=t; fun2(x+1,n-2); } voidmain() {inti,a[5]={1,2,3,4,5}; fun1(a,5); for(i=0;i<5;i++) printf("%d",a[i]); printf("\n"); fun2(a,5); for(i=0;i<5;i++) printf("%d",a[i]); } 考点3: 变量的作用域和存储类别* 重点: (1)全局变量: 不在任何函数内定义的变量,从定义开始,下面所有函数能调用 (2)局部变量: 在函数内定义的或形参,只在函数内有效 (3)静态变量特征,重点掌握局部静态变量 (4)静态变量和动态变量区别(初值) 例.以下叙述中错误的是(27)。 A.函数外声明的变量是全局变量 B.函数内声明的变量是局部变量 C.局部变量的生存期总是与程序运行的时间相同 D.形式参数的生存期与所在函数被调用执行的时间相同 例.以下程序运行时输出到屏幕的结果中第一行是(7),第二行是_(8)。 #include intfun(intx) {staticinty=1,z=0; y*=x; z+=y; returnz; } voidmain() {intx; for(x=1;x<3;x++) printf("%d\n",fun(x)); } 例.以下叙述中错误的是(27)。 A.函数外声明的变量是全局变量 B.函数内声明的变量是局部变量 C.局部变量的生存期总是与程序运行的时间相同 D.形式参数的生存期与所在函数被调用执行的时间相同 第六章编译预处理 考点1: 无参数宏定义 重点: (1)宏定义一般不加分号 (2)必须定义在函数之外 (3)编译之前的处理,不做语法检测,如果有错误,在编译过程中。 例.以下关于预处理命令的叙述中错误的是_________(21)______。 A.预处理命令由预处理程序解释 B.程序中的预处理命令是以#开始的 C.若在程序的一行中出现多条预处理命令,这些命令都是有效的 D.预处理命令既可以出现在函数定义的外部,也可以出现在函数体内部 例.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是____(21)___。 A.#defineP3.14;B.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 计算机等级考试 语言 部分 资料