C二级复习模拟题3套附答案.docx
- 文档编号:14127046
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:47
- 大小:43.65KB
C二级复习模拟题3套附答案.docx
《C二级复习模拟题3套附答案.docx》由会员分享,可在线阅读,更多相关《C二级复习模拟题3套附答案.docx(47页珍藏版)》请在冰点文库上搜索。
C二级复习模拟题3套附答案
二级C语言程序设计模拟试题
(1)
一、单项选择题。
(每小题1分,共20分)
1、设有整型变量a,单精度型变量f,双精度型变量x,则表达式a+’b’+x*f值的类型为(C)。
A)intB)floatC)doubleD)不能确定
2、下列语句的输出为(A)
intx=-1;
printf(“%d,%u,%o”,x,x,x);
A)-1,65535,177777B)-1,-1,-1
C)-1,32767,-177777D)-1,32768,177777
3、若N为整型变量,则for(N=10;N=0;N--);循环里的循环体被(D)。
A)无限循环B)执行10次C)执行一次D)一次也不执行
4、若有以下的定义、说明和语句,则值为101的表达式是(C)。
structcw
{inta;
int*b;
}*p;
intx0[]={11,12},x1[]={31,32};
staticstructcwx[2]={100,x0,300,x1};
p=x;
A)*p->bB)p->aC)++(p->a)D)(p++)->a
5、已知函数的调用形式:
fread(buffer,size,count,fp);其中buffer代表的是(C)。
A)一个整型变量,代表要读入的数据项总数
B)一个文件指针,指向要读的文件
C)一个指针,指向要读入数据的存放地址
D)一个存储区,存放要读的数据项
6、有如下程序
voidmain()
{intx=23;
do
{printf(“%d”,x--);
}while(!
x);
}
该程序的执行结果是(B)。
A)321B)23C)不输出任何内容D)陷入死循环
7、下面程序运行情况是(D)。
#include
voidmain()
{intx=3,y=0,z=0;
if(x=y+z)
printf(“****”);
else
printf(“####”);
}
A)有语法错误,不能通过编译B)输出****
C)可以通过编译,但不能通过连接,因而不能运行D)输出####
8、要将一个整数12000分别一ASCII码文件和二进制文件形式存放,各自所占的存储空间数分别是(A)字节。
A)5和2B)2和5C)2和2D)5和5
9、在下列程序中,调用f(8)的值是(D)。
intf(intn)
{if(n==1)
return
(1);
elseif(n==2)
return
(2);
else
return(f(n-1)+f(n-2));
}
A)13B)21C)55D)34
10、sizeof(‘a’+10)的值为(A)类型。
A)intB)floatC)doubleD)char
11、对于基本类型相同的两个指针变量之间,不可进行的运算是(C)。
A)==B)=C)+D)-
12、若有flaotx=2.5,y=4.7;inta=7;则表达式x+a%3*(int)(x+y)%2/4的值为(D)。
A)4.0B)3.0C)2.75D)2.5
13、在C程序中,同一程序中的各函数之间(A)。
A)既允许直接递归调用,也允许间接递归调用
B)既不允许直接递归调用,也不允许间接递归调用
C)允许直接递归调用,但不允许间接递归调用
D)不允许直接递归调用,但允许间接递归调用
14、inta=3,b=4,c=5;执行完表达式a++>--b&&b++>c--&&++c后,a,b,c的值分别为(B)。
A)345B)435C)444D)445
15、C语言中,函数调用时若实参是数组名,则被碉函数对应形参(D)。
A)可以是相应类型的简单变量
B)必须是相应类型的指针变量
C)必须是相应类型的数组名
D)可以是相应类型的指针变量
16、若有定义inti=2,a[10],*p=&a[i];,则与*p++等价的是(A)。
A)a[i++]B)a[i]++C)a[i]D)a[++i]
17、有定义:
floaty,*p=&y;假定变量y在内存中所占地址为100~103。
那么p的值为(A)。
A)100B)101C)102D)103
18、以下程序输出的结果是(C)。
intx=3,y=4;
voidmain()
{intx,y=5;
x=y++;
printf(“%d”,x);
}
A)3B)4C)5D)6
19、有定义:
inta[10][10],*p=a[0],j,k;其中j和k表示数组元素下标并在数组允许范围内,那么能够正确引用元素a[j][k]值的是(A)。
A)*(a[j]+k)B)*((p+j)+k)C)*(p[j]+k)D)(a+j)+k
20、程序设计的一般步骤分为:
分析问题、构造模型、设计与描述算法、编写程序、调试程序和(C)。
A)数据设计B)算法分析C)编制程序说明文档D)编译
二、不定项选择题。
(每小题1分,共10分,错选、漏选均不得分)
1、C语言的函数定义中,如果函数的返回值为0~255之间的整数,则函数的返回类型可以定义为(A,C,E)。
A)intB)floatC)charD)doubleE)long
2、下列说法正确的是(C,D,E)。
A)若某自定义函数中无return语句,则该函数一定没有返回值。
B)C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。
C)在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。
D)如果strcmp(s1,s2)的返回值为负数,则表明字符串s1一定小于字符串s2。
E)一个C程序可由多个源文件组成。
3、有定义:
structA{intx;inty;}a,*p=&a;,则能表示成员变量x的有(A,B,C)。
A)a.xB)(*p).xC)p->xD)p.xE)a->x
4、对于下列定义,正确的叙述是(A,B,C,E)。
unionss
{inti;
charc;
floatf;
}a,b;
A)变量a所占内存的长度等于成员f的长度
B)变量a的地址值和它的各成员地址值都是相同的
C)地址表达式&a、&a.i、&a.c、&a.f的值相同
D)变量a所占内存的长度等于各成员所占空间之和
E)sizeof(unionss)的值为4
5、C语言中的语句中除了控制语句外,还应包括(A,B,C,D,E)。
A)函数调用语句B)表达式语句C)空语句
D)复合语句E)输入输出语句
6、对int(*p)[5];的正确描述是(B,D)。
A)p是数组名B)p是指针变量名C)p数组中有5个元素
D)p指向一个包含5个元素的整型数组E)p是一个整型数组
7、若有定义:
chars[20]=”programming”,*ps=s;则能够代表字符o的表达式是(B,C,D,E)。
A)ps+2B)s[2]C)ps[2]D)ps+=2,*psE)*(ps+2)
8、以下正确的说法是(A,B,E)。
A)C语言有四种存储类:
auto、register、static和extern
B)C语言提供的for、while和do-while等三种循环语句可以做等价交换
C)C语言提供的结构类型不允许其成员具有不同的数据类型
D)C语言允许用typedef来定义一种新的数据类型
E)C语言允许经常在程序中使用的常量用宏定义来定义
9、以下是属于算法的特点的选项(A,B,C,D,E)。
A)有穷性B)确定性C)有效性
D)有零个和多个输入E)有一个或多个输出
10、如有说明struct{intday;intmonth;intyear;}d,*pd=&d;则下列哪些引用是正确的(A,B,C)。
A)pd->yearB)(*pd).yearC)d.yearD)*pd.yearE)*(pd->year)
三、判断分析题(如正确选√;如错误选Х。
每小题1分,共10分)
1、如果一个函数只能被本文件中的其它函数所调用,则该函数为外部函数。
(Х)
2、递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。
(√)
3、在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。
(Х)
4、数据结构包括逻辑结构和物理结构两个方面。
(√)
5、语句for(;;){循环体}和while
(1){循环体}是等价的。
(√)
6、在一个函数中,可以根据需要使用多个return语句。
(√)
7、函数fseek(fp,10L,1)的作用是将fp指向的文件内部指针从当前位置后移10个字节的位置。
(√)
8、位运算(~0)的结果是1;逻辑运算(!
3)的结果为0。
(Х)
9、实参数组和形参数组类型必须一致,大小可以不一致。
(√)
10、宏定义必须在行末加分号。
(Х)
四、填空题。
(每空2分,共20分)
1、无论一个C程序有多少个函数构成,程序总是从①开始执行的。
2、算术表达式在C语言中的正确表达式为②。
3、下列程序功能是对某班的某科学生成绩x进行分段统计。
要求将[0,60]、[60,70]、[70,80]、[80,90]、[90,100]这五个分数段的人数分别统计在a[5]~a[9]中。
学生成绩采用百分制。
当非法输入时,结束统计。
#include
{floatx;
inti,k;
staticinta[10];
scanf(“%f”,&x);
k=③;
while(k>0&&k<10)
{if(k<6)
k=5;
a[k]=a[k]+1;
scanf(“%f”,&x);
k=(int)x/10;
}
for(i=5;i<10;i++)
printf(“%d”,a[i]);
}
4、以下函数creatlist用来建立一个带头节点的单项链表,新产生的节点总是插在链表的末尾。
单项链表的头指针作为函数返回值。
函数中以换行符作为链表建立的结束标志。
请填空。
#include
structnode
{chardata;
structnode*next;
};
structnode*creatlist()
{structnode*h,*p,*q;
charch;
h=(structnode*)malloc(sizeof(structnode));
p=q=h;
ch=getchar();
while(④)
{p=(structnode*)malloc(sizeof(structnode));
p->data=ch;
q->next=p;
q=p;
ch=getchar();
}
p->next=’\0’;
returnh;
}
5、函数yh的功能是构成一个杨辉三角形,请填空完成该函数。
#include
#defineN11
voidyh(a[][N])
{inti,k;
for(j=1;j {a[j][1]=1; a[j][j]=1; } for(⑤;j for(k=2;k<=j-1;k++) a[j][k]=⑥+a[j-1][k]; } 6、以下程序是输出Fibonacci数列前20个数,这个数列有如下特点: 第1,2两个数为1,1,从第三个数开始,该数是其前面两个数之和。 #include voidmain() {intf[20]={1,1},i; for(i=2;i<20;i++) f[i]=⑦; for(i=0;i<20;i++) {if(i%5==0) printf(“\n”); printf(“%5d”,f[i]); } } 7、以下函数返回字符串s的长度。 strlen(char*s) {char*p=s; while(*p! =’\0’) p++; return(⑧); } 8、下面程序的功能是统计从命令行上传递进来的第一个参数中出现字母个数。 请填空完善程序。 (注: 参数个数从0开始记数) #include #include voidmain(intargc,⑨argv[]) {char*str; intcount=0; if(argc<2) return; str=⑩; while(*str) if(isalpha(*str++)) count++; printf(“%d\n”,count); } 填空题答案: 1main函数 2cos(fabs(x+y))/sin(fabs(x)+fabs(y)) 3(int)x/10 4ch! ='\n' 5j=2 6a[j-1][k-1] 7f[i]=f[i-1]+f[i-2] 8p-s 9char* 10argv[1] 五、阅读程序,写出运行结果。 (每小题4分,共20分) 1、写出下面程序执行的结果: #include voidmain() {union {inti[2]; longk; charc[4]; }r,*s=&r; s->i[0]=0x39; s->i[1]=0x38; printf(“%c\n”,s->c[0]); } 运行结果: 9 2、写出下面程序执行的结果: #include voidff(char*p1,char*p2) {while(*p2++=*p1++); } voidmain() {char*p1=”abcde”,*p2=”1234567”; ff(p1,p2); printf(“%s\n%s\n”,p1,p2); } 运行结果: abcde 1234567 3、写出下面程序执行的结果: #include voidmain() {intfun(inta); inta=2,j; for(j=0;j<3;j++) printf(“%d”,fun(a)); } intfun(inta) {intb=0; staticintc=3; b++,c++; return(a+b+c); } 运行结果: 789 4、运行下列程序时,输入数据为“2473 #include voidmain() {ints; while((s=getchar())! =’\n’) {switch(s-‘2’) {case0: case1: putchar(s+4); case2: putchar(s+4);break; case3: putchar(s+3);break; default: putchar(s+2);break; } } } 运行结果: 668977 5、写出下面程序执行的结果: #include externintj=1; voidmain() {voidadd(); intsum(intx); intk,s; add(); j++; printf(“j=%d\n”,j); for(k=1;k<=10;k++) s=sum(k); printf(“s=%d\n”,s); } voidadd() {intj=0; j++; } intsum(intj) {intx=0; x+=j; return(x); } 运行结果: j=2 s=10 六、编程序。 (每小题10分,共20分) 1、函数adddigit的原型为intadddigit(intnum);,其功能是求num各位数字之和。 要求编制该函数并用相应的主函数进行测试。 程序: #include intadddigit(intnum) { intsum=0,i; i=num%10; while(i! =0) { sum+=i; num/=10; i=num%10; } returnsum; } voidmain() { printf("%d",adddigit(12345)); } 2、有一字符串,包含n个字符。 写一函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串并输出这个字符串。 例如,要求把字符串abcdefg中第3个字符开始的全部字符复制成为另一字符串cdefg。 程序: #include #include voidsubstring(char*des,char*src,intm) { intn; n=strlen(src); if(m<=n&&m>0) { src+=m-1; } strcpy(des,src); } voidmain() { char*str1="abcdefg"; charstr2[20]; substring(str2,str1,3); printf("%s",str2); } 二级C语言程序设计模拟试题 (2) 一、单项选择题。 (每小题1分,共20分) 1.1、一个C语言程序是由(B)组成。 [C程序的结构] A)一个函数B)一个或若干个函数 C)一个过程D)一个过程或若干个过程 2、C语言用(D)表示逻辑真值。 [数据类型-.逻辑类型] A)trueB)TC)整型值0D)非0整型值 3、如果程序中有#include"文件名"则意味着(A)。 [预编译] A)将"文件名"所指的那个文件的全部内容,在此命令行出现的这一点上,插入源程序 B)指定标准输入输出 C)宏定义一个函数 D)条件编译说明 4、为一个结构体变量分配存储空间时,其所占容量为(B)。 [数据类型-构造类型] A)结构体中第一个成员所占容量B)结构体中所有成员所占容量 C)结构体中所有成员中所占容量最大者D)结构体中最后一个成员所占容量 5、如果int*px,*py;则可用{temp=*px;*px=*py;*py=temp}实现*px和*py的交换。 其中temp应该说明为(A)。 [数据类型-指针类型] A)inttempB)int&tempC)int**tempD)int*temp 6、于合法的c语言长整型常量是(A)。 [数据类型-常量] A)12LB)6887273C)5E12D)(long)6887273 7、下列程序输出正确的是(A)。 [运算符及表达式-逻辑运算顺序、自加运算] main() {inta=-1,b=1,c; c=(a++<=0)&&! ((b--<=0)); 12 printf(“%d,%d,%d”,a,b,c); } A)0,0,1B)-1,1,1C)0,0,0D)0,1,0 8、已知E的ASCII码是69,则执行printf(“%c”,’D’-‘8’+’5’);的结果是(A)。 [ASCII码的性质] A)66B)AC)BD)E 9、段名访问的方式是(A)[构造类型-结构] A)结构名.位段名B)位段名C)结构名D)*&位段名 10、义有字符数组a,则正确的输入语句是(C)。 [常用库函数] A)gets('a');B)scanf("%c",a);C)scanf("%s",a);D)gets("a"); 11、如果程序中有staticcharc;则编译时会对其自动设置初始值为(C)[存储类型] A)'\n'B)"\n"C)0D)'\0' 12、如果程序中有语句FILEfp;fp=fopen("abc.txt","w");则程序准备做(C)。 [文件] A)对文件读写操作B)对文件读操作C)对文件写操作D)对文件不操作 13、如果有#definef(x,y)x+y及inta=2,b=3;则执行printf("%d",f(a,b)*f(a,b))后的值为(C)。 [预编译] A)36B)25C)11D)13 14、在下面的说明中,(D)是指向函数的指针。 [指针-指针数组、数组指针、函数指针、返回值是指针的函数] A)int*p[];B)int(*p)[];C)*p();D)(*p)(); 15、如果在C程序中有main(intargc,char*argv[]),那么(D)是指命令行中的参数个数。 [命令行参数的概念与简单应用] A)argvB)argv[]C)argc,argv[]D)argc 16、下列程序运行的结果是(B)。 [位运算] #include main() {unsigneda,b,x; a=0x255; b=a<<4 x=(~b)&0xff } A)0x55B)0xafC)0x50D)0xda 17、下面程序中选择正确答案(C)[库函数、逻辑类型、程序结构] main() {intk=0; while(printf(“*”)) {k++; if(k<3) break; } } A)其中循环控制表达式与’0’等价B)其中循环控制表达式与0等价 C)其中循环控制表达式与1等价D)其中循环控制表达式不合法 18、用文件包含形式的预处理时,当#include后面的文件名用尖括号括起,寻找被包含文件的方式为(B)[预编译] A)先在源程序所在目录搜索,再按系统设定的标准方式搜索 B)直接按系统设定的标准方式搜索 C)仅仅搜索当前目录 D)仅仅搜索源程序所在目录 19、设有如下函数定义 intf(char*s) {char*p=s; while(*p)p++; return(p-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 复习 模拟 答案