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.详细设计
 
 
          