二级C语言模拟654.docx
《二级C语言模拟654.docx》由会员分享,可在线阅读,更多相关《二级C语言模拟654.docx(22页珍藏版)》请在冰豆网上搜索。
二级C语言模拟654
二级C语言模拟654
一、选择题
1、以下选项中,与k=n++完全等价的表达式是______。
A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1
2、关于
Do循环体while(条件表达式);
以下叙述中正确的是______。
A.条件表达式的执行次数总是比循环体的执行次数多一次
B.循环体的执行次数总是比条件表达式的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关
3、VC6.0中int类型变量所占字节数是______。
A.1 B.2
C.3 D.4
4、现有格式化输入语句,scanf("x=%d],sum]y=%d,line]z=%dL",&x,&y,&z);,已知在输入数据后,x,y,z的值分别是23,56,78,则下列选项中正确地输入格式的是
[注]"]"表示空格,<Enter>表示回车
A.23,56,78<Enter> B.x=23,y=56,z=78<Enter>
C.x=23C,sumy=56,z=78<Enter> D.x=23],sum]y=56,line]z=78<Enter>
5、有以下程序:
#include<stdio.h>
main()
{
charch[]="uvwxyz",*pc;
pc=ch;
printf("%c\n",*(pc+5));
}
程序运行后的输出结果是______。
A.z B.0 C.元素ch[5]的地址 D.字符y的地址
6、有以下程序:
#include<stdio.h>
main()
{chara[4][4]={''};
inti,j;
for(i=0;i<4;i++)
{a[i][0]=a[i][3]='#';
for(j=1;j<3;j++)
{a[0][j]=a[3][j]='#';
if((i!
=0)&&(i!
=3))a[i][j]='o';
}
{
for(i=1;i<3;i++)
{for(j=0;j<4;j++)
printf("%2c",a[i][j]);
printf("\n");
}
}
程序的运行结果是______。
A.#oo#
#oo#
B.####
#oo#
C.#oo#
####
D.####
####
7、有以下程序段
#include<stdio.h>
intj;floaty;charname[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入555667777123后,y的值为______。
A.566.0 B.55566.0 C.7777.0 D.566777.0
8、下列选项中不是C语句的是______。
A.{ inti;i++;printf("%d\n",i);}
B.;
C.a=5,c=10
D.{;}
9、构成计算机软件的是______。
A.源代码 B.程序和数据
C.程序和文档 D.程序、数据及相关文档
10、以下叙述中正确的是______。
A.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B.在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C.在printf函数中,各个输出项只能是变量
D.使用printf函数无法输出百分号%
11、有以下程序:
#include<stdio.h>
main()
{
inta=3;
a+=a-=a*a;
printf("%d\n",a);
}
程序的输出结果是______。
A.0 B.9 C.3 D.-12
12、以下关于字符串处理的叙述正确的是______。
A.进行字符串复制时,目的串的存储空间必须足够大
B.两个字符串进行比较时,短的一个必定比长的一个小
C.计算一个字符串的长度时,应包含串尾的结束标志
D.两个字符串连接时,对存储空间的大小没有要求
13、以下说法正确的是______。
A.C程序是从第一个定义的函数开始执行的
B.在C程序中,要调用的函数必须在main()函数中定义
C.C程序是从main()函数开始执行
D.C程序中的main()函数必须放在程序的开始部分
14、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。
以下不能将变量c中的大写字母转换为对应小写字母的语句是______。
A.c=('A'+c)%26-'a' B.c=c+32 C.c=c-'A'+'a' D.c=(c-'A')%26+'a'
15、有以下程序
#include<stdio.h>
main()
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是______。
A.25 B.20 C.45 D.36
16、以下选项中关于程序模块化的叙述错误的是______。
A.把程序分成若干相对独立的模块,可便于编码和调试
B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C.可采用自低向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
17、有以下程序:
#include<stdio.h>
main()
{unsignedchara=2,b=4,c=5,d;
d=a|b;d&=c;printf("%d\n",d);}
程序运行后的输出结果是______。
A.3 B.4 C.5 D.6
18、某二叉树共有12个节点,其中叶子节点只有1个,则该二叉树的深度为(根节点在第l层)______。
A.3 B.6 C.8 D.12
19、关系数据库规范化主要为克服数据库逻辑结构中的插入异常、删除异常以及______。
A.数据丢失的问题 B.结构不合理的问题
C.数据不一致的问题 D.冗余度大的问题
20、有以下程序:
#include<stdio.h>
#include<stdlib.h>
intfun(intn)
{int*p;
p=(int*)malloc(sizeof(int));
*p=n;return*p;
}
main()
{inta;
a=fun(10);printf("%d\n",a+fun(10));
}
程序的运行结果是______。
A.10 B.20 C.0 D.出错
21、以下叙述中错误的是______。
A.gets函数用于从终端读入字符串 B.getchar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件 D.fwrite函数用于以二进制形式输出数据到文件
22、已知函数的调用形式:
fread(buffer,size,count,fp);,其中buffer代表的是______。
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,是指向的输入数据放在内存中的起始位置
D.一个存储区,存放要读的数据项
23、有两个关系R和T如下:
R
A
B
C
a
1
2
b
4
4
c
2
3
d
3
2
T
A
C
a
2
b
4
c
3
d
2
则由关系R得到关系T的操作是______。
A.选择 B.交 C.投影 D.并
24、若有以下程序段,w和k都是整型变量:
w=k;
LB:
if(w==0)gotoLE;
w--;
printf("*")
gotoLB;
LE;
则不能与上面程序段等价的循环语句是______。
A.for(w=k;w!
=0;w--)printf("*");
B.for(w=k;w;--w)printf("*");
C.w=k;
while(w--!
=0)printf("*");
D.w=k;
w++;do{w--;printf("*");}while(w!
=0);
25、以下定义数组的语句中错误的是______。
A.intnum[]={1,2,3,4,5,6}; B.intnum[][3]={{1,2},3,4,5,6};
C.intnum[2][4]={{1,2},{3,4},{5,6}}; D.intnum[][4]={1,2,3,4,5,6};
26、有以下程序
#include<stdio.h>
intfun(intx,inty)
{if(x!
=y)return((x+y)/2);
elsereturn(x);
}
main()
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是______。
A.6 B.3 C.8 D.12
27、下列语句组中,正确的是______。
A.char*s;s="Olympic";B.chars[7];s="Olympic";
C.char*s;s={"Olympic"}; D.chars[7];s={"Olympic"};
28、以下所列对结构类型变量tdl的声明中错误的是______。
A.typedefstructaa
{intn;floatm;}AA;
B.#defineAAstructaa
AA{intn;floatm;)tdl;
AAtdl;
C.struct
{intn;floatm;)aa;
D.struct
{intn;floatm;}tdl;
structaatdl;
29、以下程序运行后的输出结果是______。
#include<stdjo.h>
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
mam()
{intb[10]={10,9,8,7,6,5,4,3,2,1);inti,s=0;
reverse(b,10);
for(i=0;i<3;i++)
s+=b[i];
printf("%d\n",s);
}
A.27 B.6 C.25 D.30
30、下列选项中,由C语言提供的合法关键字的是______。
A.swicth B.cher C.default D.Case
31、有以下程序段:
intx;
for(x=3;x<6;x++)
printf((x%2)?
("**%d"):
("##%d\n"),x);
程序段的输出结果是
A.**3
##4
**5
B.##3
**4
##5
C.##3
**4##5
.
D.**3##4
**5
32、以下fun函数返回数组中最大值的下标:
#include<stdio.h>
intfun(int*s,intn)
{inti,k;
for(i=0,k=i;i<n;i++)
if(s[i]>s[k])______;
return(k);
}
在横线处应填入的内容是______。
A.++k B.i=k C.k++ D.k=i
33、有以下程序:
#include<stdio.h>
structtt
{intx;structtt*y;}s[3]={1,0,2,0,3,0};
main()
{structtt*p=s+1;
p->y=s;
printf("%d,",p->x);
p=p->y;
printf("%d\n",p->x);
}
程序运行后的输出结果是______。
A.2,3 B.2,1 C.1,2 D.3,1
34、若有定义语句:
intb=2;
则表达式(b<<2)/(3||b)的值是______。
A.0 B.2 C.4 D.8
35、有以下程序:
#include<stdio.h>
main()
{inti=3,j=5,*p=&i,*q=&j,**r;
r=&q;
printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,**r);
}
执行后的输出结果是______。
A.3,5,3,5,5 B.5,3,5,3,5 C.3,5,3,5,3 D.3,5,3,3,5
36、数据库技术的根本目标是要解决数据的______。
A.存储问题 B.共享问题
C.安全问题 D.保护问题
37、有以下程序:
matin()
{ char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[o]);
}
执行后的输出结果是______。
A.n,two B.t,one C.w,one D.o,two
38、下列关于C语言数据文件的叙述中正确的是______。
A.文件由ASCII码字符序列组成,C语言只能读写文本文件
B.文件由二进制数据序列组成,C语言只能读写二进制文件
C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
39、已知某程序中有声明“inta[4],j;”及语句“for(j=0;j<4;j++)p[j]=a+j;”,则标识符P正确的声明形式应为______。
A.intp[4]; B.int*p[4]; C.int**p[4]; D.int(*p)[4];
40、有以下程序:
#include<stdio.h>
main()
{
inta=1,b=2,c=3;
charflag;
flag=b>=2&&c<=3;
switch(a)
{
case1:
switch(flag)
{
case0:
printf("**");break;
case1:
printf("%%");break;
}
case0:
switch(c)
{
case1:
printf("$$");break;
case2:
printf("&&");break;
default:
printf("##");
}
}
printf("\n");
}
程序运行后的输出结果是______。
A.**$$ B.%## C.%&& D.**##
二、程序填空题
41、给定程序中,函数fun()的功能是:
把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例如,形参s所指的字符串为:
abcdefgh,执行结果为:
ahcbedgf。
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在fun()函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
voidfun(char*s)
{
inti,n,k;
charc;
n=0;
for(i=0;s[i]!
='\0';i++)
n++;
if(n%2==0)
k=n-______;
else
k=n-______;
c=s[k];
for(i=k-2;i>=1;i=i-2)
s[i+2]=s[i];
s[1]=______;
}
voidmain()
{
chars[80]="abcdefgh";
printf("\nTheoriginalstringis:
%s\n",s);
fun(s);
printf("\nTheresultis:
%s\n",s);
}
三、程序修改题
42、下列给定程序中函数fun的功能是:
将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
例如:
把三个串“abe”、“CD”、“EF”连接起来,结果是“abcCDEF”。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
[试题源程序]
#include<stdio.h>
#include<string.h>
voidfun(charstr[][10],intm,char*pt)
{
/**********found**********/
Intk,q,i;
for(k=0;k<m;k++)
{q=strlen(str[k]);
for(i=0;i<q;i++)
/**********found**********/
pt[i]=str[k,i];
pt+=q;
pt[0]=0;
}
}
main()
{intm,h;
chars[10][10],p[120];
printf("Pleaseenterm:
");
scanf("%d",&m);gets(s[0]);
printf("Pleaseenter%dstring:
",m);
for(h=0;h<m;h++)gets(s[h]);
fun(s,m,p);
printf("Theresultis:
%s",p);
}
四、程序设计题
43、假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
函数fun中给出的语句仅供参考。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后字符串中的内容应当是:
****ABCDEFG。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
voidfun(char*a)
{
/*以下代码仅供参考*/
inti=0,k;
while(a[i]=='*')i++;
k=i;
while(a[i]!
='\0')/*以下程序段实现非*字符前移*/
{
}
a[k]='\0';
}
main()
{chars[81];voidNONO();
printf(*Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafter
deleted:
\n");puts(s);
NONO();
}
voidNONO().
{/*本函数用于打开文件,输入数据