无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

2011年计算机等级二级C语言课后练习题及答案解析(5)

2012-12-26来源/作者:卫凯点击次数:517

  一 、选择题
  (1)下列叙述中正确的是
  A)线性表是线性结构 B)栈与队列是非线性结构
  C)线性链表是非线性结构 D)二叉树是线性结构
  正确答案: A
  (2)非空的循环单链表head的尾结点(由p所指向),满足
  A)p->next==NULL B)p==NULL
  C)p->next=head D)p=head
  正确答案: C
  (3)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是
  A)堆排序 B)直接插入排序
  C)快速排序 D)直接选择排序
  正确答案: B
  (4)对建立良好的程序设计风格,下面描述正确的是
  A)程序应简单、清晰、可读性好
  B)符号名的命名只要符合语法
  C)充分考虑程序的执行效率
  D)程序的注释可有可无
  正确答案: A
  (5)下列不属于结构化分析的常用工具的是
  A)数据流图 B)数据字典
  C)判定树 D)PAD图
  正确答案: A
  (6)在软件生产过程中,需求信息的给出是
  A)程序员 B)项目管理者
  C)软件分析设计人员 D)软件用户
  正确答案: D
  (7)下列工具中为需求分析常用工具的是
  A)PAD B)PFD
  C)N-S D)DFD
  正确答案: D
  (8)NULL是指
  A)0 B)空格
  C)未知的值或无任何值 D)空字符串
  正确答案: C
  (9)数据库的故障恢复一般是由
  A)数据流图完成的 B)数据字典完成的
  C)DBA完成的 D)PAD图完成的
  正确答案: C
  (10)下列说法中,不属于数据模型所描述的内容的是
  A)数据结构 B)数据操作
  C)数据查询 D)数据约束
  正确答案: C
  (11)C语言程序的基本单位是
  A)程序行
  B)语句
  C)函数
  D)字符
  正确答案: C
  (12)下面四个选项中,均是合法整型常量的选项是
  A)160 -0xffff 011
  B)-0xcdf 01a 0xe
  C)-01 986,012 0668
  D)-0x48a 2e5 0x
  正确答案: A
  (13)以下选项中合法的用户标识符是
  A)long
  B)_2Test
  C)3Dmax
  D)A.dat
  正确答案: B
  (14)假定x和y为double型,则表达式x=2,y=x+3/2的值是
  A)3.500000
  B)3
  C)2.000000
  D)3.000000
  正确答案: D
  (15)以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是
  A)x/y*z
  B)x*(1/(y*z))
  C)x/y*1/z
  D)x/y/z
  正确答案: A
  (16)设x,y,t均为int型变量,执行语句:
  x=y=3;
  t=++x||++y;
  完成后,y的值为
  A)不确定
  B)4
  C)3
  D)1
  正确答案: C
  (17)已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是
  A)scanf("-,-,-", i, j, k);
  B)scanf("%d %d %d",&i,&j,&k);
  C)scanf("%d,%d,%d",&i,&j,&k);
  D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
  正确答案: C
  (18)若变量已正确定义并赋值,下面符合C语言语法的表达式是
  A)m∶=5
  B)c=b=a=1
  C)float 8%5
  D)x+5=y+2
  正确答案: B
  (19)下列程序运行的结果是
  main()
  {float x;
  int i;
  x=3.6;
  i=(int)x;
  printf("x=%f,i=%d ",x,i);
  }
  A)x=3.600000,i=3
  B)x=3.6,i=3
  C)x=3,i=3
  D)x=3.600000,i=3.000000
  正确答案: A
  (20)若执行下面的程序时,从键盘上输入5和2,则输出结果是
  main()
  { int a,b,k;
  scanf("%d,%d ",&a,&b);
  k=a;
  if(a  else k=b%a;
  printf("%d\n ",k);
  }
  A)5
  B)3
  C)2
  D)0
  正确答案: C
  (21)C语言中 while 和do-while循环的主要区别是
  A)do-while的循环体至少无条件执行一次
  B)while的循环控制条件比do-while的循环控制条件更严格
  C)do-while允许从外部转到循环体内
  D)do-while 的循环体不能是复合语句
  正确答案: A
  (22)以下程序的输出结果是
  main()
  { int x=1,y=3;
  printf("%d,",x++);
  { int x=0;x+=y*2;
  printf("%d,%d, ",x,y);
  }
  printf("%d,%d\n",x,y);
  }
  A)1,6,3,1,3
  B)1,6,3,6,3
  C)1,6,3,2,3
  D)1,7,3,2,3
  正确答案: C
  (23)下面程序输出的结果是
  main()
  { int i;
  int a[3][3]={1,2,3,4,5,6,7,8,9};
  for(i=0;i<3;i++)
  printf("%d ",a[2-i][i]);
  }
  A)1 5 9
  B)7 5 3
  C)3 5 7
  D)5 9 1
  正确答案: B
  (24)请阅读以下程序:
  main()
  { int a=5,b=0,c=0;
  if(a=b+c)printf("***\n");
  else printf("$$$\n");
  }
  以上程序
  A)有语法错不能通过编译
  B)可以通过编译但不能通过连接
  C)输出***
  D)输出$$$
  正确答案: D
  (25)以下程序的输出结果是
  main()
  { char c=′z′;
  printf("%c",c-25);
  }
  A)a
  B)Z
  C)z-25
  D)y
  正确答案: A
  (26)下面函数的功能是
  char *fun(char *str1,char*str2)
  {while((*str1)&&(*str2++=*str1++));
  return str2;
  }
  A)求字符串的长度
  B)比较两个字符串的大小
  C)将字符串str1复制到字符串str2中
  D)将字符串str1接续到字符串str2中
  正确答案: C
  (27)下面函数调用语句含有实参的个数为
  func((exp1,exp2),(exp3,exp4,exp5));
  A)1
  B)2
  C)4
  D)5
  正确答案: B
  (28)下面程序段的运行结果是
  char *s="abcde";
  s+=2;printf("%d",s);
  A)cde
  B)字符′c′
  C)字符′c′的地址
  D)无确定的输出结果
  正确答案: C
  (29)已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是
  void print_value(int *x)
  {printf("%d\n",++*x);}
  A)23
  B)24
  C)25
  D)26
  正确答案: D
  (30)当顺利执行了文件关闭操作时,fclose函数的返回值是
  A)-1
  B)TRUE
  C)0
  D)1
  正确答案: C
  (31)设有如下定义
  char *s[2]={ "abcd","ABCD"};
  则下列说法错误的是
  A)s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址
  B)s是指针数组名,它含有两个元素分别指向字符型一维数组
  C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素
  D)s数组的两个元素中分别存放了字符′a′和′A′的地址
  正确答案: C
  (32)以下不能对二维数组a进行正确初始化的语句是
  A)int a[2][3]={0};
  B)int a[][3]={{1,2},{0}};
  C)int a[2][3]={{1,2},{3,4},{5,6}};
  D)int a[][3]={1,2,3,4,5,6};
  正确答案: C
  (33)有以下程序
  struct STU
  { char num[10]; float score[3]; };
  main()
  {struct STU s[3]={{"20021",90,95,85},
  {"20022",95,80,75},
  { "20023",100,95,90},
  },*p=s;
  int i; float sum=0;
  for(i=0;i<3;i++)
  sum=sum+p->score[i];
  printf("%6.2f\n",sum);
  }
  程序运行后的输出结果是
  A)260.00
  B)270.00
  C)280.00
  D)285.00
  正确答案: B
  (34)若有说明:int a[10];则对a数组元素的正确引用是
  A)a[10]
  B)a[3,5]
  C)a(5)
  D)a[10-10]
  正确答案: D
  (35)下面程序段中,输出*的个数是
  char *s="\ta\018bc";
  for(;*s!=′\0′;s++)printf("*");
  A)9
  B)5
  C)6
  D)7
  正确答案: C
  (36)设有如下函数
  fun (float x)
  {
  printf("\n%d",x*x);}
  则函数的类型是
  A)与参数x的类型相同
  B)是void
  C)是int型
  D)无法确定
  正确答案: C
  (37)有如下定义
  #define D 2
  int x=5;float y=3.83;
  char c=′D′;
  则下面选项中错误的是
  A)x++;
  B)y++;
  C)c++;
  D)D++;
  正确答案: D
  (38)以下程序段的执行结果为
  #define PLUS(X,Y)X+Y
  main()
  { int x=1,y=2,z=3,sum;
  sum=PLUS(x+y,z)*PLUS(y,z);
  printf("SUM=%d",sum);
  }
  A)SUM=9
  B)SUM=12
  C)SUM=18
  D)SUM=28
  正确答案: B
  (39)C语言规定,函数返回值的类型是由
  A)return语句中的表达式类型所决定
  B)调用该函数时的主调函数类型所决定
  C)调用该函数时系统临时决定
  D)在定义该函数时所指定的函数类型所决定
  正确答案: D
  (40)下列程序的运行结果是
  void fun(int *a,int *b)
  { int *k;
  k=a;a=b;b=k;
  }
  main()
  { int a=2004, b=9,*x=&a,*y=&b;
  fun(x,y);
  printf("%d%d",a,b);
  }
  A)2004 9
  B)9 2004
  C)0 0
  D)编译时出错
  正确答案: A
  (41)下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:
  876 675 896 101 301 401 980 431 451 777
  #include
  #include
  int fun(int *s, int t, int *k)
  { int i;
  *k=0;
  for(i=0;i  if(s[*k]  return s[*k];
  }
  main()
  {
  int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
  clrscr();
  fun(a, 10, &k);
  printf("%d, %d\n ", k, a[k]);
  }
  则输出结果为
  A)7,431
  B)6
  C)980
  D)6,980
  正确答案: D
  (42) C语言结构体类型变量在程序执行期间
  A)所有成员一直驻留在内存中
  B)只有一个成员驻留在内存中
  C)部分成员驻留在内存中
  D)没有成员驻留在内存中
  正确答案: A
  (43)下面程序应能对两个整型变量的值进行交换。以下正确的说法是
  main()
  {int a=10,b=20;
  printf("(1)a=%d,b=%d\n",a,b);
  swap(&a,&b);
  printf("(2)a=%d,b=%d\n",a,b);
  }
  swap(int p,int q)
  {int t;
  t=p;p=q;q=t;
  }
  A)该程序完全正确
  B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
  C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
  D)以上说法都不对
  正确答案: D
  (44)有以下程序
  #include
  main()
  { char *p,*q;
  p=(char *)malloc(sizeof(char)*20); q=p;
  scanf("%s %s",p,q); printf("%s %s\n",p,q);
  }
  若从键盘输入:abc def<回车>,则输出结果是
  A)def def
  B)abc def
  C)abc d
  D)d d
  正确答案: A
  (45)以下程序的输出结果是
  int f()
  { static int i=0;
  int s=1;
  s+=i; i++;
  return s;
  }
  main()
  { int i,a=0;
  for(i=0;i<5;i++)a+=f();
  printf("%d\n",a);
  }
  A)20
  B)24
  C)25
  D)15
  正确答案: D
  46)已知 int a=1,b=3则a^b的值为
  A)3
  B)1
  C)2
  D)4
  正确答案: C
  (47)如果需要打开一个已经存在的非空文件"Demo"进行修改下面正确的选项是
  A)fp=fopen("Demo","r");
  B)fp=fopen("Demo","ab+");
  C)fp=fopen("Demo","w+");
  D)fp=fopen("Demo","r+");
  正确答案: D
  (48)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
  A)fopen("A:\user\abc.txt","r")
  B)fopen("A:\\user\\abc.txt","rt+")
  C)fopen("A:\user\abc.txt","rb")
  D)fopen("A:\user\abc.txt","w")
  正确答案: B
  (49)有以下程序
  #include
  main()
  { char *p="abcde\0fghjik\0 ";
  printf("%d\n ",strlen(p));
  }
  程序运行后的输出结果是
  A)12
  B)15
  C)6
  D)5
  正确答案: D
  (50) 有以下程序
  #include
  struct NODE
  { int num; struct NODE *next; };
  main()
  { struct NODE *p,*q,*r;
  p=(struct NODE*)malloc(sizeof(struct NODE));
  q=(struct NODE*)malloc(sizeof(struct NODE));
  r=(struct NODE*)malloc(sizeof(struct NODE));
  p->num=10; q->num=20; r->num=30;
  p->next=q;q->next=r;
  printf("%d\n ",p->num+q->next->num);
  }
  程序运行后的输出结果是
  A)10
  B)20
  C)30
  D)40
  正确答案: D
  (1)冒泡排序算法在最好的情况下的元素交换次数为 【1】 。
  正确答案: 1.(0)
  (2)在最坏情况下,堆排序需要比较的次数为 【2】 。
  正确答案: 1.(O(nlog2n))
  (3)若串s="MathTypes",则其子串的数目是 【3】 。
  正确答案: 1.(46)
  (4)软件开发环境是全面支持软件开发全过程的 【4】 集合。
  正确答案: 1.(软件工具)
  (5)关系数据库的关系演算语言是以 【5】 为基础的DML语言。
  正确答案: 1.(谓词演算)
  (6)下列y的值是 【6】 。
  int y; y=sizeof (2.25*4);
  正确答案: 1.(8)
  (7)下列x的值是 【7】 。
  int x;x=sizeof 2.25*4;
  正确答案: 1.(32)
  (8)以下程序的输出结果是 【8】 。
  main ()
  {int i=010,j=10;
  pirntf ("%d,%d\n",i,j);
  }
  正确答案: 1.(8,10)
  (9)下列程序的输出结果为 【9】 。
  main ()
  {int x=3,y=5;
  printf ("%d",x=(x--)*(--y));
  }
  正确答案: 1.(12)
  (10)以下程序的输出结果是 【10】 。
  fun (int x,int y,int z)
  { z =x*x+y*y;}
  main ()
  {int a=31;
  fun (6,3,a)
  printf ("%d", a)
  }
  正确答案: 1.(31)
  11)若有int a=1;int b=2;则a|b的值为 【11】 。
  正确答案: 1.(3)
  (12)已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为 【12】 。
  正确答案: 1.(f)
  (13)若从键盘输入58,则以下程序输出的结果是 【13】 。
  main()
  {int a;
  scanf("%d",&a);
  if(a>50)printf("%d",a);
  if(a>40)printf("%d",a);
  if(a>30)printf("%d",a);
  }
  正确答案: 1.(585858)
  (14)下列程序的输出的结果是 【14】 , 【15】 。
  main()
  {int i,j row,colum,m;
  static int array[3][3]={{100,200,300},{28,72,-30}{-850,2,6}};
  m=array[0][0];for(i=0;i<3;i++)
  for(j=0;j<3;j++)
  if(array[i][j]<m)
  {m=array[i][j];colum=j;row=i;}
  printf("%d,%d,%d\n",m,row,colum);
  }
  正确答案: 1.(-850,)
  (15)以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
  #define N 3
  #define M 3
  select(int a[N][M],int *n)
  {int i,j,row=1,colum=1;
  for(i=0;i  for(j=0;j  if(a[i][j]>a[row][colum]){row=i;colum=j;}
  *n= 【16】 ;
  return 【17】 ;
  }
  main()
  {int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
  max=select(a,&n);
  printf("max=%d,line=%d\n",max,n);
  }
  正确答案: 1.(row) 2.(a[row][colum])
  (16)函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s > t时返回正值,当s < t时返回负值。请填空。
  my_cmp(char *s, char *t)
  {while (*s == *t)
  {if (*s == ′\0′)return 0;
  ++s; ++t;
  } return 【18】 ;
  }
  正确答案: 1.(*s-*t)
  (17)若有以下说明和定义语句,则变量w在内存中所占的字节数是 【19】 。
  union aa {float x; float y; char c[6]; };
  struct st{ union aa v; float w[5]; double ave; } w;
  正确答案: 1.(34)
  (18)"FILE *p"的作用是定义一个文件指针变量,其中的"FILE"是在 【20】 头文件中定义的。
  正确答案: 1.(stdio.h)

  编辑特别推荐:

  全国计算机等级考试二级笔试样卷C语言程序设计

  计算机等级考试二级C语言考前密卷汇总

  全国计算机等级考试二级C语言程序设计实战





相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策