计算机二级等级考试二级C++真题及答案

  • 格式:doc
  • 大小:46.00 KB
  • 文档页数:12

计算机二级等级考试二级C++真题第一卷(共70分)第一部分:基础知识(20题,共40分)1、一个C程序总是从()开始执行。

A、程序的第一条执行语句B、主函数C、子程序D、主程序2、在C语言中,int, char和short int三种类型变量所占用的内存大小是()。

A、均为2个字节B、由用户自己定义C、由所用机器的字长决定D、是任意的3、若有以下类型说明语句:char a; int b; float c; short int d;则表达式(c*b+a)*d的结果类型是()。

A、charB、intC、doubleD、float4、若有说明语句:int w=1,x=2,y=3,z=4;则表达试w>x?w:z>y?z:x的值是()A、4B、3C、2D、15、设x,y 为int型变量,则执行下列语句后,y的值是()x=5;y=x++*x++;y=--y*--y;A、529B、2401C、1209D、6256、C语言中函数返回值的类型是()A、return语句中的表达式类型B、调用函数的类型C、总是int型D、定义函数时所指定的函数类型7、凡是在函数中未指定存储类别的变量,其隐含的存储类别是()A、自动B、静态C、外部D、寄存器8、在源程序的一个文件中定义的全局变量的作用域是()A、本文件的全部范围B、该程序的全部范围C、一个函数的范围D、从定义该变量的位置开始至该文件的结束9、以下不正确的描述是()A、break语句只能用于循环语句和switch语句B、在switch语句中,break语句的作用也可用continue语句来替代C、在循环语句中,使用continue语句是为了结束本次循环,而不是终止循环的执行D、在循环语句中,使用break语句是为了使流程跳出循环体,提前结束循环10、若有宏定义 #define mod(x,y) x%y则执行以下程序段后,输出为()int z,a=15,b=100;z=mod(b,a);printf(“%d\n”,z++);A、11B、10C、6D、宏定义不合法11、若有说明语句: char s1[4]=”12”; char *ptr;则执行下列语句后输出为()ptr=s1;printf(“%c\n”,*(ptr+1));A、字符‘2’B、整数2C、字符串“12”D、字符‘1’[1] [2][page_break]第二部分:简单程序(12题,共30分)21、运行下面的程序,其输出是()main(){ int a[]={2,4,6,8,10},y=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf(“%d\n”,y);}A、17B、18C、19D、2022、运行下面的程序,其输出是()main(){int i=1;while(i<19)if(i++%5!=3) continue;else printf(“%4d”,i);printf(“\n”);}A、2 5 7 9 11 13 15 17B、3 6 9 12 15 18C、4 9 14 19D、3 8 13 17 1923、运行下面的程序后,其正确的输出是()main(){static int a[5]={7,2,8,4,5};static int *pa[5]={&a[0], &a[1], &a[2], &a[3], &a[4]};int **p,i;p=pa;for(i=0;i<5;i++){printf(“%d\t”,**p+2);p++;}printf(“\n”);}A、9 4 10 6 7B、7 2 8 4 5C、7 4 10 4 5D、2 3 4 5 624、下面程序运行后,其输出是()main(){int i;int n=2;while(++n<20){i=1;while(++i<n){if(n%i==0)break;if(i==n-1)printf(“%d\t”,n);}printf(“\n”);}}A、2 5 7 9 13 17 19B、3 5 7 11 13 17 19C、2 3 5 7 11 13 17 19D、3 5 7 11 13 17 20[1][page_break]25、下面程序运行后,其输出是()main(){int i,j,k; int func();i=1,j=2,k=3;printf(“%d\n”,func((j+=k,j++),(i,i++,++i)));}int func(int x,int y){int z;z=x%y;return(z);}A、2B、0C、1D、326、下面程序运行后,其输出是()int x,y;one(){int a,b;a=25,b=10;x=a-b;y=a+b;}main(){int a,b;a=9,b=5;x=a+b;y=a-b;one();printf(“%d,%d\n”,x,y);}A、14,4B、14,35C、15,35D、15,427、下面程序运行后,其输出是()#include <stdio.h>void printd(int i);main(){int n=123;printd(n);}void printd(int n){int i;if(n<0){n=-n;putchar(‘-‘);}putchar(n%10+’0’);if((i=n/10)!=0)printd(i);}A、123B、321C、3D、128、下面程序运行后,其输出是()struct sample{int a,b;char *ch;};void f1(struct sample parm);main(){struct sample arg;arg.a=1000;arg.b=100;arg.ch=”abcd”;f1(arg);}void f1(struct sample parm){ parm.a+=parm.b;parm.ch[2]=’x’;printf(“%d\n”,parm.a);printf(“%s\n”,parm.ch);}A、1000B、1100C、1100D、100Abcd abcd abxd abcd[1][page_break]29、下面程序运行后,其输出是()main(){static char s[30]=”abcdefg”;static char t[]=”abcd”;int i,j;i=0;while(s[i]!=’\0’)i++;j=0;while(t[j]!=’\0’){s[i+j]=t[j];j++;}s[i+j]=’\0’;printf(“%s\n”,s);}A. abcdabcdefgB. abcdefgC. abcdD. abcdefgabcd30、下面程序运行后,其输出是()main(){ int a[4][4],i,j,k;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=i+j;for(i=1;i<4;i++)for(j=i+1;j<4;j++){ k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;}for(i=0;i<4;i++){printf(“\n”);for(j=0;j<4;j++)printf(“%4d”,a[i][j]);}}A、0 1 2 3B、0 1 2 3C、0 1 2 3D、3 2 1 01 2 3 4 1 2 5 4 1 2 4 2 4 3 2 12 3 4 5 2 3 4 5 2 3 5 3 5 4 3 23 4 5 6 3 4 5 6 3 4 6 4 6 5 4 3 31、下面程序运行后,其输出是()main(){ void sub();char s[10]=”a program”; int num=4;sub(s,0,num-1); sub(s,num,6); sub(s,0,6);printf(“%s\n”,s);}void sub(char *s,int num1,int num2){ char t,*p;p=s+num2;s=s+num1;while(s<p){t=*s; *s=*p; *p=t; s++; p--;}}A.programB.gram proC.pro gramD.ogra pram32、运行下面程序,从键盘输入四个字符xyz#,其输出是()#include "stdio.h"main(){ void recursion();recursion();}void recursion(){char c;c=getchar();putchar(c);if(c!=’#’)recursion();putchar(c);}A、xyz#B、xyz#xyz#C、xyz##zyxD、xyzxyz[1][page_break]第二卷(共30分)说明:程序填空题,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。

每空栏3分,两大题共10个空栏,全对得30分。

试题一:下面的程序是将一个十六进制数字字符串转换成与它等价的十进制整数值并输出。

十六进制数的字符是从0到9和a到f或A到F。

主函数负责收集字符,并判别它们是否是十六进制字符,函数htoi负责转换工作。

#include <stdio.h>#define maxline 100#define eof -1#define yes 1#define no 0int htoi();main(){ int c,i,isdigit;char t[maxline];i=0;isdigit=no;while((c=_______________)!=eof&&i<maxline-1){ if(c>=’0’&&c<=’9’||c>=’a’&&c<=’f’||c>=’A’&&c<=’F’) { isdigit=yes;t[i++]=___________;}else if(isdigit==yes){ isdigit=no;t[i]=’\0’;printf(“%d”,______________);i=0;}}}int htoi(char *s){ int i,n;n=0;for(i=0;s[i]!=’\0’;i++){ if(s[i]>=’0’&&s[i]<=’9’) n=n*16+s[i]-______________;if(s[i]>=’a’&&s[i]<=’f’) n=n*16+s[i]-‘a’+10;if(s[i]>=’A’&&s[i]<=’F’) n=n*16+s[i]-‘A’+10;}return___________;}试题二:以下程序的功能是应用近似公式计算 e计算每项分母的值,共取nmax项之和作为e 的近似值。