设为首页 加入收藏

TOP

2011年计算机等级二级C语言课后练习题及答案解析(4)(一)
2014-11-14 21:00:16 】 浏览:364
Tags:2011年 计算机 等级 二级 语言 课后 习题 答案 解析

  一、单项选择题
  1.对if语句中表达式的类型,下面正确的描述是【 】。
  A) 必须是关系表达式
  B) 必须是关系表达式或逻辑表达式
  C) 必须是关系表达式或算术表达式
  D) 可以是任意表达式
  分析:C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。
  本题正确答案为D。
  2.多重if_else语句嵌套使用时,寻找与else配套的if方法是【 】。
  A) 缩排位置相同的if
  B) 其上最近的if
  C) 下面最近的if
  D) 同行上的if
  分析:多重if_else嵌套时,else总是与它上面最近的if配对。
  本题正确答案为B。
  3.以下错误的if语句是【 】。
  A) if(x>y) z=x;
  B) if(x==y) z=0;
  C) if(x!=y) printf("%d",x) else printf("%d",y);
  D) if(x   分析:选项C)中的第一个printf语句后面丢了分号,所以是错误的。
  本题正确答案为C。
  4.以下判断两个字符串相等的正确方法是【 】。
  A) if(str1=str2)
  B) if(str1==str2)
  C) if(strcpy(str1,str2)=0)
  D) if(strcmp(str1,str2)==0)
  分析:选项A)中用了赋值号,显然是错误的,选项C)中的字符串拷贝函数strcpy不能比较大小,选项B)中的"=="号也不具有串比较功能,比较两个字符串的大小应用字符串比较函数。
  本题正确答案为D。
  5.执行下面程序的正确结果是【 】。
  main( )
  { float a=1.9;
  switch(a)
  { case 0: printf("0000");
  case 1: printf("1111");
  case 2: printf("2222");
  }
  printf("%f",a);
  }
  A) 1.900000
  B) 111122221.900000
  C) 22221.900000
  D) 0000111122221.900000
  分析:题中定义了单精度实数a,所以最下面的printf语句输出有6位小数,另外C语言在判断switch表达式的值时,是按整型数据处理的(但不4舍5入),所以程序是从case 1处开始执行的,因没有break语句,接着会执行case 2。
  本题正确答案为B。
  6.以下程序的输出为【 】。
  main( )
  { int a=20,b=30,c=40;
  if(a>b) a=b,
  b=c;c=a;
  printf("a=%d,b=%d,c=%d",a,b,c);
   }
  A) a=20,b=30,c=20
  B) a=20,b=40,c=20
  C) a=30,b=40,c=20
  D) a=30,b=40,c=30
  分析:题中的"a=b , b=c;"是一个语句书写在了两行,因a>b为假,所此句不执行,又"c=a"与if语句无关,总要执行,故a,b值不变,c值为20。
  本题正确答案为A。
  7.对于条件表达式(k) (i++):(i--)来说,其中的表达式k等价于【 】。
  A) k==0 B) k==1 C) k!=0 D) k!=1
  分析:因为条件表达式e1?e2:e3的含义是e1为真时,取表达式e2的值,否则取表达式e3的值,"为真"的意思就是不等于0。
  本题正确答案为C。
  8.执行下面的程序后,输出为【 】。
  main( )
  { int m=20;
  swith(m)
  { case 19: m+=1;
  case 20: m+=1;
  case 21: m+=1;
  case 22: m+=1;
   }
  printf("%d\\n",m); }
  A) 20 B) 21 C) 22 D) 23
  分析:因无break控制语句,程序会从case 20开始连续执行后面的各个case语句,最后结果是m=23。
  本题正确答案为D。
  9.下面程序运行结果为【 】。
  main( )
  { char c=′a′;
  if(′a′   elseprintf("UP");
  }
  A) LOW B) UP C) LOWUP D) 语句错误,编译不能通过
  分析:关系运算符“<”和“<=”的优先级相同,计算顺序是从左向右,求解表达式′a′   本题正确答案为A。
  10.对下述程序,正确的判断是【 】。
  main( )
  { int a,b;
  scanf ("%d,%d",&a,&b);
  if(a>b)a=b; b=a;
  elsea++; b++;
  printf("%d,%d",a,b); }
  A) 有语法错误不能通过编译
  B) 若输入4,5则输出5,6
  C) 若输入5,4则输出4,5
  D) 若输入5,4则输出5,5
  分析:不管if语句中的条件真假,它只能执行一个语句,要想根据条件执行多个语句,应写成复合语句,程序中if和else的后面都有两个语句,违反了这一点。
  本题正确答案为A。
  11.分析以下程序,结论是【 】。
  main( )
  { int x=5,a=0,b=0;
  if(x=a+b) printf("****\\n");
  elseprintf("####\\n");
  }
  A) 有语法错,不能通过编译
  B) 能通过编译,但不能连接
  C) 输出****
  D) 输出 ####
  分析:if语句中的判别式可以是赋值表达式,题中if(x=a+b)的含义是,先把a+b的值赋给x,再判断x的值是否为0。
  本题正确答案为D。
  12.对下面的程序,正确的说法是【 】。
  main( )
  { int a,b=1,c=2;
  a=b+c,a+b,c+3;
  c=(c) a++:b--;
  printf("c=%d/n",(a+b,c)); }
  A) 无错误 B) 第三行有错误 C) 第四行有错误 D) 第五行有错误
  分析:第三行是由逗号表达式组成的语句,第四行是由条件表达式组成的语句,第五行printf语句的输出项为逗号表达式,本题没有语法错误。
  本题正确答案为A。
  13.执行下面的程序时,输入abc (其中CR代表回车),输出结果是【 】。
  #include
  #include
  main( )
  { char ch;
  while((ch=getchar( ))!=′\\n′)
  { switch(ch-′a′)
  { case 0: putchar(ch+1);
  case 1: putchar(ch+1);break;
  case 2: putchar(ch+2);
  case 3: putchar(ch+2);break;
  }
  }
  }
  A) abc B) bbc C) abcd D) bbcee
  分析:用getchar函数输入数据,接收的是ASCII码,当输入为a时对应执行case 0和case 1处的语句,当输入为b时,执行case 1处的语句,当输入为c时,对应执行case 2和case 3处的语句。
  本题正确答案为D。
   二、填空题
  1.下面程序的输出结果是-11,请填空。
  main( )
  { int x=100,a=200,b=50;
  int v1=25,v2=20;
  if(a   if(b!=50)
  if(!v1)
  x=11;
  else if(v2)
  x=12;
  x=【1】;
  printf("%d",x);
  }
  分析:此题属于if语句的嵌套应用,因第一个if语句的条件就为假,所以后面的if语句都没有被执行,只执行了x=【1】;一句。
  本题正确答案为 【1】-11。
  2.执行下面程序时,若从键盘上输入8,则输出为9,请填空。
  main( )
  { int x;
  scanf("%d",&x);
  if(【2】>8)
  printf("%d\\n",++x);
  else printf("%d\\n",x--);
  }
  分析

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇2011年计算机等级二级C语言课后练.. 下一篇2011年计算机等级二级C语言课后练..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目