二级C语言模拟644.docx
- 文档编号:3738609
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:19
- 大小:26.62KB
二级C语言模拟644.docx
《二级C语言模拟644.docx》由会员分享,可在线阅读,更多相关《二级C语言模拟644.docx(19页珍藏版)》请在冰豆网上搜索。
二级C语言模拟644
二级C语言模拟644
一、选择题
1、设有定义:
chars[81];inti=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是______。
A.gets(s);
B.while((s[i++]=getchar())!
='\n');s[i]='\0';
C.scanf("%s",s);
D.do{scanf("%c",&s[i]);}while(s[i++]!
='\n');s[i]='\0';
2、若有定义语句:
chars[10]="1234567\0\0";,则strlen(s)的值是______。
A.7 B.8 C.9 D.10
3、以下数组定义中错误的是______。
A.intx[][3]={{1,2,3},{4,5,6}}; B.intx[][3]={0};
C.intx[2][3]={{1,2},{3,4},{5,6}}; D.intx[2][3]={1,2,3,4,5,6};
4、以下选项中,当x为大于1的奇数时,值为0的表达式是______。
A.x%2==1 B.x/2 C.x%2!
=0 D.x%2==0
5、若有以下程序:
#include<stdio.h>
voidprtv(int*x)
{printf("%d\n",++*x);}
main()
{inta=25;
prtv(&a);
}
程序的输出结果是
A.23 B.24 C.25D.26
6、若有定义语句:
“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为______。
A.1.9 B.1
C.2 D.2.4
7、以下叙述中正确的是______。
A.对于逻辑表达式:
a++||b++,设a的值为1,则求解表达式的值后,b的值会发生改变
B.对于逻辑表达式:
a++&&b++,设a的值为0,则求解表达式的值后,b的值会发生改变
C.else不是一条独立的语句,它只是if语句的一部分
D.关系运算符的结果有三种:
0,1,-1
8、下面描述中错误的是______。
A.软件系统总体结构图支持软件系统的详细设计
B.软件设计是将软件需求转换为软件表示的过程
C.数据结构与数据库设计是软件设计的任务之一
D.PAD图是软件详细设计的表示工具
9、有以下程序(说明:
字母A的ASCII码值是65):
#include<stdio.h>
voidfun(char*s)
{ while(*s)
{ if(*s%2)printf("%c",*s);
s++;
}
}
main()
{ chara()="BYTE";
fun(a);
printf("\n");
}
程序运行后的输出结果是______。
A.BT B.YE C.YT D.BY
10、以下C语言用户标识符中,不合法的是______。
A._1 B.AaBc
C.a_b D.a-b
11、有以下程序
#include<stdio.h>
intfun(intx,inty)
{ staticintm=0,i=2;
i+=m+1;m=i+x+y;returnm;
}
main()
{intj=1,m=1,k;
k=fun(j,m);printf("%d",k);
k=fun(j,m);printf("%d\n",k);
}
执行后的输出结果是______。
A.5,11 B.5,5 C.11,11 D.11,5
12、有以下程序:
#include<stdio.h>
#include<string.h>
char*a="you";
char*b="WelcomeyoutoBeijing!
";
main()
{char*p;
p=b;
while(*p!
=*a)p++;
p+=strlen(a)+1;
printf("%s\11",p);
}
程序运行后的输出结果是______。
A.Beijing!
B.youtoBeijing!
C.WelcomeyoutoBeijing!
D.toBeijing!
13、读取二进制文件的函数调用形式为:
fread(buffer,size,count,fp);,其中buffer代表的是______。
A.一个内存块的字节数
B.一个整型变量,代表待读取的数据的字节数
C.一个文件指针,指向待读取的文件
D.一个内存块的首地址,代表读入数据存放的地址
14、有以下程序
#include<stdio.h>
#define M 5
#definef(x,y) x*y+M
main()
{intk;
k=f(2,3)*f(2,3);
printf("%d\n",k);
}
程序的运行结果是
A.22 B.41 C.100 D.121
15、有以下程序:
#include<stdio.h>
main()
{FILE*pf;
char*s1="China",*s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,1,pf);
fwrite(s1,3,1,pf);
fclose(pf);
}
以上程序运行后,abc.dat文件的内容是( )。
A.China B.Beijing C.BeijingChi D.BeijingChina
16、有以下程序:
#include<stdio.h>
main()
{chara='H';
a=(a>='A'&&a<='Z')?
(a+32):
a;
printf("%c\n",a);
}
程序运行后的输出结果是______。
A.H B.h C.A D.a
17、定义如下变量:
intn=10;
则下列循环的输出结果是( )。
while(n>7)
{ -n;
printf("%d\n",n);
}
A.1098 B.987 C.10987 D.9876
18、下列叙述中正确的是______。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化
19、若有定义:
inta,b;,通过语句scanf("%d;%d",&a,&b);能把整数3赋给变量a、5赋给变量b的输入数据是______。
A.35 B.3,5 C.3;5 D.35
20、以下程序的输出结果是______。
#include<stdio.h>
main()
{inta=4,b=3,c=2,d=1;
printf("%d",a<b?
a:
d<c?
d:
b);
}
A.1 B.3 C.2 D.4
21、有以下程序:
#include<stdio.h>
main()
{inta=12,c;
c=(a<<2)<<1;
printf("%d\n",c);
}
程序运行后的输出结果是______。
A.3 B.50
C.2 D.96
22、以下说法中正确的是______。
A.C语言程序的执行都是从程序的第一个函数开始
B.在C语言程序中,要调用的函数必须在main函数中声明
C.任何C语言程序的执行都是从main函数开始
D.C语言程序中的main函数必须放在程序的最前面
23、支持子程序调用的数据结构是______。
A.栈 B.树 C.队列 D.二叉树
24、排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为______。
A.希尔排序 B.冒泡排序 C.插入排序 D.选择排序
25、执行下列程序中的输出语句后,a的值是( )。
main()
{ inta;
printf("%d\n",(a=2*3,a*5,a+7));
}
A.17 B.37 C.6 D.13
26、下面程序的输出是______。
#include<stdio.h>
#include<string.h>
main()
{charp1[]="WHO",p2[]="who",str[50]="xyz";
strcpy(str+1,strcat(p1,p2));
printf("%s",str);
}
A.xyzWHOwho B.zWHOwho C.zWHOwho D.xWHOwho
27、程序中头文件type1.h的内容是
#defineN 5
#defineM1N*3
程序如下:
#define"type1.h"
#defineM2 N*2
main()
{
inti;
i=M1+M2;
printf("%d\n",i);
)
程序编译后运行的输出结果是( )。
A.10 B.20 C.25 D.30
28、有以下程序:
main()
{inty=1,x=2,z=3;
printf("%d,%d\n",(Hx,y++),z+2);}
执行后的输出结果是______。
A.3,5 B.2,5 C.3,3 D.1,5
29、对长度为n的线性表进行顺序查找,在最坏情况下,所需要的比较次数为
A.log2n B.n/2 C.n D.n+1
30、以下叙述中正确的是______。
A.由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
B.scanf和printf是C语言提供的输入和输出语句
C.由printf输出的数据都隐含左对齐
D.赋值语句是一种执行语句,必须放在函数的可执行部分
31、计算机能直接执行的程序是______。
A.源程序 B.目标程序 C.汇编程序 D.可执行程序
32、以下叙述中正确的是______。
A.关系运算符两边的运算对象可以是C语言中任意合法的表达式
B.在C语言中,逻辑真值和假值分别对应1和0
C.对于浮点变量x和y,表达式:
x==y是非法的,会出编译错误
D.分支结构是根据算术表达式的结果来判断流程走向的
33、若有以下程序
#include<stdio.h>
main()
{ints=0,n;
for(n=0;n<4;n++)
{switch(n)
{default:
s+=4;
case1:
s+=1;break;
case2:
s+=2;break;
case3:
s+=3;
}
}
printf("%d\n",s);
}
则程序的输出结果是______。
A.13 B.10 C.11 D.15
34、有以下程序:
#include<stdio.h>
main()
{
inta=1,b=3,c=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
程序执行后的输出结果是______。
A.1 B.2 C.3 D.4
35、软件生命周期是指______。
A.软件产品从提出、实现、使用维护到停止使用退役的过程
B.软件从需求分析、设计、实现到测试完成的过程
C.软件的开发过程
D.软件的运行维护过程
36、当a=1、b=2、c=3、d=4时,执行下面程序段后,x的值是______。
if(a<b)
if(c<d)x=1;
else
if(a<c)
if(b<d)x=2;
elsex=3;
elsex=6;
elsex=7;
A.1 B.6 C.3 D.2
37、数据库管理系统是______。
A.操作系统的一部分 B.在操作系统支持下的系统软件
C.一种编译系统 D.一种操作系统
38、以下叙述中错误的是______。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D.C语言源程序经编译后生成后缀为.obj的目标程序
39、有以下程序:
#include<stdio.h>
#include<string.h>
typedefstruct{charname[9];charsex;intscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",'m',85,90};
inti;
strcpy(a.name'b.name);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main()
{STUc={"Qian",'f',95,92},d;
d=f(c);
printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);
printf("%s,%c,%d,%d\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序运行后的输出结果是______。
A.Zhao,m,85,90,Qian,f,95,92 B.Zhao,m,85,90,Zhao,m,85,90
C.Qian,f,95,92,Qian,f,95,92 D.Qian,f,95,92,Zhao,m,85,90
40、下面函数的功能是______。
sss(s,t)
char*s,*t;
{while((*s)&&(*t)&&(*t++==s++));
return(*s-*t);
}
A.将字符串s复制到字符串t中 B.比较两个字符串的大小
C.求字符串的长度 D.将字符串s接续到字符串t中
二、程序填空题
41、请补充函数proc(),该函数的功能是把数组arr中的奇数元素按原来的先后顺序放在原数组后面。
例如,原始数组为“33674258257685164155”,则输出结果为“42587616336725854155”。
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#defineM10
voidproc(intarr[])
{
inti,j=0,k=0;
intbb[M];
for(i=0;i<M;i++)
{
if(______)
bb[k++]=arr[i];
else
arr[j++]=arr[i];
}
for(i=0;i<k;______)
arr[j]=bb[i];
}
voidmain()
{
inti;
intarr[M]={33,67,42,58,25,76,85,16,41,55};
system("CLS");
printf("\n***originallist***\n");
for(i=0;i<M;i++)
printf("%4d",arr[i]);
proc(arr);
printf("\n***newlist***\n");
for(i=0;i<M;i++)
printf("%4d",arr[i]);
}
三、程序修改题
42、考生文件夹
给定程序MODI1.C中fun函数的功能是:
根据整型形参m,计算如下公式的值。
例如,若主函数中输入5,则应输出-0.283333。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
doublefun(intm)
{
doublet=1.0;
inti;
for(i=2;i<=m;i++)
/**********found**********/
t=1.0-1/i;
/**********found**********/
______;
}
main()
{
intm;
printf("\nPleaseenter1integernumbers:
\n");
scanf("%d",&m);
printf("\nknTheresultis%lf\n",fun(m));
}
四、程序设计题
43、请编写一个函数fun,其功能是:
将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入“abc4Efg”,则应输出“aBc4EFg”。
注意:
部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序如下。
#include<stdio.h>
#include<string.h>
voidfun(char*ss)
{
}
voidmain(void)
{
chartt[51];
printf("\nPleaseenterancharacterstringwithin50characters:
\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n\"%s\"",tt);
fun(tt);
printf("\nbecomes\n\"%s\"",tt);
}
答案:
一、选择题
1、C
[解析]字符串的输入不能使用scanf("%s",s);而应该使用gets(s)。
所以选择C选项。
2、A
[解析]strlen(s)即求字符串s的长度,遇到'\0'时结束统计。
因此选项A为正确答案。
3、C
[解析]C选项中x[2][3]定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,因此错误。
4、D
[解析]x为大于1的奇数,x%2的值为1,x%2==0为假,所以选择D。
5、D
6、A
[解析]此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算x/y,即12/8=1,所以z=0.9+1=1.9。
7、C
[解析]B选项和A选项中,&&、||都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。
而且&&、||的优先级比++高,所以题中只需判断a的值即可知道符号表达式的真假;D选项中,关系运算符的结果有“真”和“假”两种。
因此C选项正确。
8、A
[解析]软件系统的总体结构图是软件架构设计的依据,不支持软件的详细设计。
9、B
[解析]本题中执行fun(a)时,会取字符串a的第一个字母B,因为字母B的ASCII码值为66,所以不会输出字母B,函数只会输出ASCII码值为奇数的字母,字母Y的ASClI码值为89,字母T的ASCII码值为84,字母E的ASCII码值为69,因此B选项正确。
10、D
[解析]标识符主要由英文字母、数字和下划线构成,并且首字符不能是数字,但可以是字母或者下划线。
本题中,选项A、B、C均符合C语言标识符要求。
选项D不合法,因为其虽然以字母为首字符,但中间的“-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 模拟 644