2013年9月全国计算机等级《二级C语言程序设计》命题预测试卷三
-
下列给定程序的功能是:读入一个整数n(2<=n<= 5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出:2,617。
请修改程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不能增选或删行,也不能匿改程序的结构。
试题程序:
#include
#include
//****found****
Prime(int m);
{
int j,P;
p=1;
//****found****
for(j=2;j
if!(m%j)
{
p=0;
break;
}
return(p);
int i,n;
printf("\nplease enter an integer number between2
and 5000:");
scanf("%d",&n);
printf("\n\nThe prime factor(s)of%d is(are):",n):
for(i=2;i
if((!(n%i))&&(Prime(i)))
printf("%4d,",i);
printf("\n");
}
-
请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为:
ABCD
BCDEFG
CDEFGHI
则合并后的字符串内容应该是ABCDBCDEFGCDEF—GHl。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include
#include
#define M 3
#define N 20
void proc(char arr[M][N],char*b)
{
}
void main
{
char str[M][N]={"ABCD","BCDEFG","
CDEFGHI"},i;
char arr[100]={"#############
#####");
printf("The string:\n");
for(i=0;i
puts(str[i]);
printf("\n");
proc(str,arr);
printf("The A string:\n");
printf("%s",arr);
printf("\n\n");
}
-
请补充main函数,该函数的功能是:从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。结果仍然保存在原串中。
例如,输入“abcdefg”,指定字符为“d”,则输出“abe”。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define M 80
void main
{
int i=0;
char str[M];
char ch;
system("CLS");
printf("\n Input a strin9:\n");
gets(str);
printf("\n Input a charator;\n");
scanf("%c",&ch);
while(str[i]!='\0')
{
if(str[i]==ch)
【1】
【2】;
}
str[i]=【3】;
printf("\n***display string***\n");
puts(str);
}
-
对下述程序的判断中,正确的是( )。
#include
main( )
{ char*p,s[256];
p=s ;
while(strcmp(s,"the end"))
{ printf("Input the strin9:");
gets(s);
while(*p)
putchar(*p++);
}}
- A.此程序循环接收字符串并输出,直到接收到字符串“the end”为止
- B.此程序循环接收字符串,接收到字符串“the end”则输出,否则程序终止
- C.此程序循环接收字符串并输出,直到接收字符串“the end”为止,但因为代码有错误,程序不能正常工作
- D.此程序循环接收字符串并将其连接在一起,直到接收字符串“the end”为止,输出连接在一起的字符串
-
下列程序的执行结果是( )。
#include
main
{ int a,b,c;
- a=b=2,c=I;
- c=(a++)-1;printf("%d,0Ad",a,c);
- c+=-a+++(++b);printf("%d,%d",a,c); )
- A.3,14,1
- B.3,14,2
- C.2,04,1
- D.2,14,1
-
若有定义:“int*P,x=0,*p,p=&x;”,则语句“printf("%d\n",*p);”的输出结果是( )。
- A.随机值
- B.0
- C.x的地址
- D.P的地址
-
以下程序的输出结果是( )。
int f(int A)
{ return a%2; }
main
{int s[8]={1,3,5,2,4,6},i,d=0;
for(i=0;f(s[8]);i++)d+=s[i];
printf("%d\n",d);
}
- A.9
- B.11
- C.19
- D.21
-
关系数据库管理系统能实现的专门关系运算包括( )。
- A.排序、索引、统计
- B.选择、投影、连接
- C.关联、更新、排序
- D.显示、打印、制表
-
下列程序中函数sort( )的功能是对数组a中的数据进行由大到小的排序。
#include
void sort(int a[],int ll)
{ int i,j,t;
for(i=0;i
for(j=j+1+1;j
if(a[i]{t=a[i];a[i]=a[j];a[j]=t;
}
}
main( )
{ int a[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是( )。
- A.1,2,3,4,5,6,7,8,9,10,
- B.10,9,8,7,6,5,4,3,2,1,
- C.1,8,7,6,5,4,3,2,9,10,
- D.1,2,10,9,8,7,6,5,4,3,
-
以下程序的输出结果是( )。
main
{char str[][10]={"china","beijing"),*p=str;
printf("%s\n",p+10);
}
- A.China
- B.Beijing
- C.ng
- D.ing
-
以下程序的输出结果是( )。
void fun(int*a,int i,int i)
{int t;
if(i
{ t=a[i[;a[i]=a[j];a[j]一t;
i++;j--;
fun(a,i,j);
}
}
main
{ int K[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<1;i++)printf("%2d",x[i]);
printf("\n");
}
- A.1,2,6,8
- B.8,6,2,1
- C.8,1,6,2
- D.8,6,1,2
-
下列工具中为需求分析常用工具的是( )。
- A.PAD
- B.BFD
- C.N-S
- D.DFD
-
以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是( )。
- A.概念数据库
- B.用户数据库
- C.物理数据库
- D.逻辑数据库
-
下列能正确定义且赋初值的语句是( )。
- A.int n1=n2=1;
- B.char C=99;
- C.float f=f+1;
- D.double x=1.2E5.6;
-
有以下程序
#include
void fun(int n,int*p)
( int f1,f2;
if(n==1|| n==2)*p=1;
else
{ fun(n-1,&f1);fun(n-2,&f2);
*p=f1+f2;
}
}
main
{ int s;
fun(3,&s);printf("%d",s);
}
程序的运行结果是( )。
- A.2
- B.3
- C.4
- D.5
-
有下列程序:
main
{ char*p[]={"3697","2584"};
int i,j;long num=0;
for(i=0;i<2:i++)
{ j=0;
while(p[i][j]!='\0')
{ if((p[i][j]-'\0 ')%2)num=1O*num+p
[j][j]-'0';
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输m结果是( )。
- A.35
- B.37
- C.39
- D.3975
-
设“int x=2,y=1;”,则表达式(!x|| Y--)的值是( )。
- A.0
- B.1
- C.2
- D.-1
-
下列叙述中错误的是( )。
- A.一种数据的逻辑结构可以有多种存储结构
- B.数据的存储结构与数据的处理效率无关
- C.数据的存储结构与数据的处理效率密切相关
- D.数据的存储结构在计算机中所占的空间不一定是连续的
-
有下列程序:
fun(int X,int y){return(x+y);}
main
{ int a=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
执行后的输出结果是( )。
- A.6
- B.7
- C.8
- D.9
-
设x=011050,则x=x&01252的值是( )。
- A.0000001000101000
- B.1111110100011001
- C.0000001011100010
- D.1100000000101000
-
为了避免在嵌套的条件语句if else中产生二义性,C语言规定,else子句总是与( )配对。
- A.缩排位置相同if
- B.其前面最近的if
- C.其后面最近的if
- D.同一行上的if
-
有以下函数
int aaa(char*s)
{char*t=s;
while(*t+t);
t--:
return(t-s);
}
以下关于aaa函数的功能叙述正确的是( )。
- A.求字符串S的长度
- B.比较两个串的大小
- C.将串S复制到串t
- D.求字符串S所占字节数
-
设计软件结构是软件生命周期的( )。
- A.软件定义期
- B.软件开发期
- C.软件维护期
- D.以上3个都不是
-
有如下程序:
#include
main
{ FILE*fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abe");
fclose(fp1);
}
若文本文件f1.txt中原有内容为:good。则运行以上程序后文件f1.txt中的内容为( )。
- A.goodabc
- B.bcd
- C.abc
- D.abcgood
-
下述程序的输出结果是( )。
#define N 20
void fun(int a[],int n,int m)
{ int i,j;
for(i=m;i>n;i--)a[i+1]=a[i];
}
main( )
{ int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)printf("%d",a[i]);
}
- A.10234
- B.12344
- C.12334
- D.12234
-
以下关于typedef的叙述错误的是( )。
- A.用typedef可以增加新类型
- B.typedef只是将已存在的类型用一个新的名字来代表
- C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名
- D.用typedef为类型说明一个新名,通常可以增加程序的可读性
-
设有以下定义和语句:
char str[2O]="Program",*P:
p=str:
则以下叙述中正确的是( )。
- A.*p与stf[0]的值相等
- B.str与P的类型完全相同
- C.str数组长度和P所指向的字符串长度相等
- D.数组str中存放的内容和指针变量P中存放的内容相同
-
若有下列定义,则对a数组元素地址的正确引用是( )。
int a[5],*p=a;
- A.p+5
- B.*a+1
- C.&a+1
- D.&a[0]
-
若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以( )方式打开文件。
- A."wb"
- B."wb+"
- C."rb+"
- D."rb"
-
有以下程序:
#include
main( )
{ char cl='1',c2='2';
cl=getchar( );c2=getchar( );putchar(c1);putcha:
(c2);
}
当程序运行时输入a<回车>后,下列叙述中正确的是( )。
- A.变量c1被赋予字符a,c2被赋予回车符
- B.程序将等待用户输入第2个字符
- C.变量c1被赋予字符a,c2中仍是原有字符2
- D.变量c1被赋予字符a,c2中将无确定值
-
若有以下说明,则( )不是对strcpy库函数正确的调用。strcpy库函数用于复制一个字符串:char*strl="abCd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";
- A.strcpy(str2,strl)
- B.strcpy(str3,strl)
- C.strcpy(strl,str2)
- D.strcpy(str5,strl)
-
若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是( )。
- A.bdgcefha
- B.gdbecfha
- C.bdgaechf
- D.gdbehfca
-
若希望下列的程序运行后输出25,程序空白处的正确选项是( )。
main
{ int i,j=50,a[]={7,4,10,5,8};
for( )
j+=a[i];
printf("%d",j-40);
}
- A.i=l;i<4;++i
- B.i=1;i<3;++i
- C.i=4;i>2;i--
- D.i=2;i<4;++i
-
源程序的文档不包括( )。
- A.符合号名的命名要有实际意义
- B.正确的文档形式
- C.良好的视觉组织
- D.正确的程序注释
-
下列程序的运行结果是( )。
#include
main
{ int a=2,b=3,c=4:
if(aif(b<0)C=0:
else c++;
printf("%d\n",c);
}
- A.2
- B.3
- C.5
- D.4
-
设有如下关系表:
则下列操作中正确的是( )。
- A.T=R∩S
- B.T=R∪S
- C.T=R×S
- D.T=R/S
-
在数据库设计中,将E—R图转换为关系模式的过程属于( )。
- A.需求分析阶段
- B.逻辑设计阶段
- C.概念设计阶段
- D.物理设计阶段
-
下列选项中不会引起二义性的宏定义是( )。
- A.#define S(x) x*x
- B.#define S(x) (x)*(x)
- C.#define S(x) (x*x)
- D.#define S(x) ((x)*(x))
-
数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。
- A.DB包含DBS和DBMS
- B.DBMS包含DB和DBS
- C.DBS包含DB和DBMS
- D.没有任何关系
-
若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为( )。
cb='b';
k=10;
printf("%X,%o,”,ch,ch,k);
printf("k=%%d\n",k);
- A.因变量类型与格式描述符的类型不匹配,输出无定值
- B.输出项与格式描述符个数不符,输出为0值或不定值
- C.62,142,k=%d
- D.62,142,k=%10
-
若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。
- A.x=y==5;
- B.X=n%2.5:
- C.x+n=i;
- D.x=5=4+1:
-
以下程序的输出结果是( )。
main
{ char st[20]="hello\0\t\\\";
printf("%d%d\n",strlen(st).sizeof(st));
}
- A.9 9
- B.5 20
- C.13 20
- D.20 20
-
下列选项中不属于软件生命周期开发阶段任务的是( )。
- A.软件测试
- B.概要设计
- C.软件维护
- D.详细设计