2013年计算机二级考试《C语言》课后模拟题及答案四

牛课网 考试宝典 更新时间:2024-05-10 21:25:29

浙江湖州中考语文试卷 小儿厌食的中医辨证论治 佳木斯历届高考状元

  一 单项选择题
  1.逻辑运算符两侧运算对象的数据类型是( D )。
  A) 只能是0或1
  B) 只能是0或非0正数
  C) 只能是整型或字符型数据
  D) 可以是任何类型的数据
  2.已知x=43, ch='A', y=0;则表达式(x>=y&&ch<'B'&&!y)的值是( C )。
  A) 0
  B) 语法错
  C) 1
  D) “假”
  3.已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是( B )。
  if(x>y)
  z=x;x=y;y=z;
  A) x=10,y=20,z=30
  B) x=20,y=30,z=30
  C) x=20,y=30,z=10
  D) x=20,y=30,z=20
  4.执行下列语句后a的值为( C ),b的值为( )。
  int a, b, c;
  a=b=c=1;
  ++a|| ++b && ++c;
  A) 错误 1
  B) 2 2
  C) 2 1
  D) 1 1
  5.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( C )。
  A) A%2==1
  B) !(A%2==0)
  C) !(A%2)
  D) A%2
  6.设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>D)后n的值是( B )。
  A) 0
  B) 2
  C) 3
  D) 4
  7.判断char型变量cl是否为小写字母的正确表达式是( D )。
  A) ‘a’<=cl<=‘z’    
  B) (cl>=a)&&(cl<=z)
  C) (‘a’>=cl)||(‘z’<=cl)
  D) (cl>=‘a’)&&(cl<=‘z’)
  8.以下不正确的if语句形式是( C )。
  A) if(x>y&&x!=y);
  B) if(x==y) x+=y;
  C) if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y)
  D) if(x  9.请阅读以下程序:
  main()Www.KaO8.CC
  {
  int a=5,b=0,c=0;
  if(a=b+C) printf(“***”);
  else printf(“$$$”);
  }
  以上程序( D )。
  A) 有语法错不能通过编译
  B) 可以通过编译但不能通过连接
  C) 输出***
  D) 输出$$$
  10.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( B )。
  if(a  if(c  else
  if(a  if(b  else x=3;
  else x=6;
  else x=7;
  A) 1
  B) 2
  C) 3
  D) 6
  11.以下程序的输出结果是( C )。
  main()
  {int a=100,x=10,y=20,ok1=5,ok2=0;
  if(x  if(y!=10)
  if(!ok1)
  a=1;
  else
  if(ok2) a=10;
  a=-1;
  printf(“%d”,a);
  }
  A) 1
  B) 10
  C) -1
  D) 值不确定
  12.以下程序的输出结果是( B )。
  main()
  {int x=2,y=-1,z=2;
  if(x  if(y<0) z=0;
  else z+=1;
  printf(“%d”,z);
  }
  A) 3
  B) 2
  C) 1
  D) 0
  13.为了避免在嵌套的条件语句 if - else 中产生二义性,C语言规定:else子句总是与( B )配对。
  A) 缩排位置相同的if
  B) 其之前最近的if
  C) 其之后最近的if 
  D) 同一行上的
  14.若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是( B )。
  A) (exp==0)
  B) (exp!=0)
  C) (exp==1)
  D) (exp!=1)
  15.若运行时给变量x输入12,则以下程序的运行结果是( A )。
  main()
  {int x,y;
  scanf(“%d”,&x);
  y=x>12?x+10:x-12;
  printf(“%d”,y);
  }
  A) 0
  B) 22
  C) 12
  D) 10[page]
  16.语句:printf("%d",(a=2)&&(b= -2));的输出结果是( D )。
  A) 无输出
  B) 结果不确定
  C) -1
  D) 1
  17.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是( C )。
  A) c=b=a;
  B) (a=C)||(b=C);
  C) (a=C)&&(b=C);
  D) a=c=b;
  18.能正确表示a和b同时为正或同时为负的表达式是( D )。
  A) (a>=0||b>=0)&&(a<0||b<0)
  B) (a>=0&&b>=0)&&(a<0&&b<0)
  C) (a+b>0)&&(a+b<=0) D) a*b>0
  19.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( D )。
  A) a>=10 or a<=0B) a>=0|a<=10
  C) a>=10&&a<=0 
  D) a>=10||a<=0
  20.有如下程序段
  int a=14,b=15,x;
  char c=‘A’;
  x=(a&&b)&&(c<‘B’);
  执行该程序段后,x的值为( D )。
  A) ture
  B) false
  C) 0
  D) 1
  21.以下程序的输出结果是( C )。
  A)-1 1
  B)0 1
  C)1 0
  D)0 0
  main( )
  { int a=-1,b=1,k;
  if((++a<0)&&!(b--<=0))
  printf("%d %d",a,b);
  else
  printf("%d %d",b,a);
  }
  22.与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是( A )。
  A) if(x>0) y=1;
  B) if(x)
  else if(x<0) y=-1; if(x>0)y=1;
  else y=0; else if(x<0)y=-1;
  else y=0;
  C) y=-1 D) y=0;
  if(x) if(x>=0)
  if(x>0)y=1; if(x>0)y=1;
  else if(x==0)y=0; else y=-1;
  else y=-1;
  23.阅读以下程序:
  main()
  {int x;
  scanf("%d", &x);
  if(x--<5) printf("%d", x);
  else printf("%d", x++);
  }
  程序运行后,如果从键盘上输人5,则输出结果是( B )。
  A)3
  B) 4
  C) 5
  D) 6
  24.假定w、x、y、z、m均为int型变量,有如下程序段:
  w=1; x=2; y=3; z=4;
  m=(w  则该程序运行后,m的值是( D )。
  A) 4
  B) 3 
  C) 2
  D) 1
  25.有如下程序
  main( )
  { float x=2.0,y;
  if(x<0.0) y=0.0;
  else if(x<10.0) y=1.0/x;
  else y=1.0;
  printf(“%f”,y);
  }
  该程序的输出结果是( C )。
  A) 0.000000
  B) 0.250000
  C) 0.500000
  D) 1.000000
  26.有如下程序
  main( )
  { int a=2,b=-1,c=2;
  if(a)if(b<0) c=0;
  else c++;
  printf(“%d”,C);
  }
  该程序的输出结果是(A )。
  A) 0
  B) 1
  C) 2
  D) 3
  27.若有定义: float w; int a, b; 则合法的switch语句是( C )。
  A) switch(w)  
  B switch(x)
  {case 1.0: printf("*"); {case 1,2: printf("*");
  case 2.0: printf("**"); case 3: printf("**");
  } 无default语句 }
  C) switch(b)  
  D) switch(a+b);
  {case 1: printf("*"); {case 1: printf("*");
  default: printf(""); case 2: printf("**");
  case 1+2: printf("**"); default: printf("");
  } }
  28.若a、b、c1、c2、x、y均是整型变量,正确的switch语句是( D )。
  A) swich(a+b);  
  B) switch(a*a+b*b)
  {case 1:y=a+b; break; {case 3:
  case 0:y=a-b; break; case 1:y=a+b;break;
  } case 3:y=b-a;break;
  }
  C) switch a 
  D) switch(a-b)
  {case c1 :y=a-b; break; {default:y=a*b;break;
  case c2: x=a*d; break; case 3:case 4:x=a+b;break;
  default:x=a+b; case 10:case 11:y=a-b;break;
  } }
  29.有如下程序
  main( )
  {int x=1,a=0,b=0;
  switch(x)
  {
  case 0: b++;
  case 1: a++;
  case 2: a++;b++;
  }
  printf(“a=%d,b=%d”,a,b);
  }
  该程序的输出结果是( A )。
  A) a=2,b=1
  B) a=1,b=1
  C) a=1,b=0
  D) a=2,b=2
  30.当输入19、2、21时,以下程序的输出结果是( A )。
  main( )
  {int a,b,c,max;
  printf(“please input three numbers a,b,c:”);
  scanf(“%d,%d,%d”,&a,&b,&C);
  max=a;
  if(max  max=b;
  if(max  max=c;
  printf(“max is:%d”,max);
  }
  A) max is:21
  B) max is:19
  C) max is:42
  D) max is:40 [page]
  31.若输入B,以下程序的输出结果是( C )。
  main( )
  {char grade;
  scanf(“%c”,&grade);
  switch(grade)
  {
  case ‘A’:printf(“>=85.”);
  case ‘B’:
  case ‘C’:printf(“>=60.”);
  case ‘D’:printf(“<60.”);
  default: printf(“error.”);
  }
  }
  A) >=85.
  B) >=60.
  C) >=60.<60.error.
  D) error.
  32.当执行以下语句后的输出结果是( D )。
  int x=3, y=0;
  printf(“%d,%d”, -1>x> -10&&1y> -10&&1  A) 0 3
  B) 3 0
  C) 3 3
  D) 1 1
  33.执行x=5>1+2&&2||2*4<4-!0后,x的值为( C )。
  A) -1
  B) 0
  C) 1
  D) 5
  34.以下程序的输出结果为( C )。
  main( )
  {int a,b,c,x,y,z;
  a=10;b=2;
  c=!(a%b);
  x=!(a/b);
  y=(a=0);
  z=(a=0);
  printf(“c=%d, x=%d, y=%d, z=%d”, c, x, y, z);
  }
  A) c=0,x=1,y=1,z=0
  B) c=5,x=0,y=1,z=0
  C) c=1,x=0,y=0,z=1
  D) c=10,x=2,y=0,z=1
  35.下列运算符中,不属于关系运算符的是( D )。
  A) <
  B) >=
  C) ==
  D) !
  36.以下程序的输出结果是( B )。
  main( )
  {int a,b,d=241;
  a=d/100%9;
  b=(-1)&&(-1);
  printf(“%d, %d”, a, b);
  }
  A) 6,1
  B) 2,1
  C) 6,0
  D) 2,0
  37.设ch是char型变量,其值为A,且有下面的表达式:
  ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch
  上面表达式的值是( B )。
  A) A
  B) a
  C) Z
  D) z
  38.若k是int型变量,且有下面的程序片段:
  k= -3;
  if(k<=0) printf(“####”)
  else printf(“&&&&”)
  上面程序片段的输出结果是( D )。
  A) ####
  B) &&&&
  C) ####&&&&
  D) 有语法错误,无输出结果
  39.请读程序:
  main()
  {
  float x, y;
  scanf(“%f”, &x);
  if(x<0.0) y=0.0;
  else if((x<5.0)&&(x!=2.0))
  y=1.0/(x+2.0);
  else if(x<10.0) y=1.0/x;
  else y=10.0;
  printf(“%f”,y);
  }
  若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是( C )。
  A) 0.000000
  B) 0.250000
  C) 0.500000
  D) 1.000000
  40.请读程序:
  main()
  {
  int x=1, y=0, a=0, b=0;
  switch(x)
  {
  case 1:
  switch(y)
  {case 0:a++;break;
  case 1:b++;break;
  }
  case 2:
  a++; b++; break;
  }
  printf(“a=%d, b=%d”, a, b);
  }
  上面程序的输出结果是( A )。
  A) a=2,b=1
  B) a=1,b=1
  C) a=1,b=0
  D) a=2,b=2
  41.为表示关系x≥y≥z,应使用C语言表达式( A )。
  A) (x>=y)&&(y>=z)
  B) (x>=y)AND(y>=z)
  C) (x>=y>=z)   
  D) (x>=y)||(y>=z)
  42.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( D )。
  A) a<>0
  B) !a
  C) a=0
  D) a
  43.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( A )。
  main()
  {
  int x;
  scanf(“%d”, &x);
  if(x++>5) printf(“%d”, x);
  else printf(“%d”, x--);
  }
  A) 7和5
  B) 6和3
  C) 7和4
  D) 6和4
  44.以下程序的输出结果是( D )。
  main()
  {
  int a= -1, b=4, k;
  k=(++a<0)&&!(b--<=0);
  printf(“%d%d%d”, k, a, b);
  }
  A) 104
  B) 103
  C) 003
  D) 004
  45.设a为整型变量,不能正确表达数学关系10  A) 10  B) a==11||a==12||a==13||a==14
  C) a>10&&a<15
  D) !(a<=10)&&!(a>=15)
  46.假定所有变量均已正确说明,下列程序段运行后x的值是( B )。
  a=b=c=0;x=35;
  if(!a) x--;
  else if(b) ; if(C) x=3;
  else x=4;
  A) 34
  B) 4 来源:考
  C) 35
  D) 3
  47.设a=1, b=2, c=3, d=4,则表达式ad?a:d的结果是( D )。
  A) 4
  B) 3
  C) 2
  D) 1
  48.当a=1, b=3, c=5, d=4时,执行下面一段程序后,x的值为( B )。
  if(a  if(c  else
  if(a  if(b  else x=3;
  else x=6;
  else x=7;
  A) 1
  B) 2
  C) 3
  D) 6
  49.在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是( C )。
  main()
  {
  int s, t, a, b;
  scanf(“%d, %d”, &a, &b);
  s=1;t=1;
  if(a>0) s=s+1;
  if(a>b) t=s+t;
  else if(a==b) t=5;
  else t=2*s;
  printf(“t=%d”, t);
  }
  A) a>b
  B) a  C) 0  D) 0>a>b
  50.设int x=1, y=1;表达式(!x||y--)的值是(B )。
  A) 0
  B) 1
  C) 2
  D) -1
  51.若变量a、i已正确定义,且i已正确赋值,合法的语句是( B )。
  A) a==1
  B) ++i;
  C) a=a++=5;
  D) a=int(i);
  52.以下程序的输出结果为( C )。
  main()
  {
  int a=2, b=-1, c=2;
  if(a  if(b<0) c=0;
  else c++;
  printf(“%d”,C);
  }
  A) 0
  B) 1
  C) 2
  D) 3 [page]
  二 填空题
  1.若从键盘输入58,则以下程序输出的结果是 585858
  main()
  { int a;
  scanf(“%d”,&a);
  if(a>50) printf(“%d”,a);
  if(a>40) printf(“%d”,a);
  if(a>30) printf(“%d”,a);
  }
  2.下面程序的运行结果是 -1
  main()
  {
  int a=2, b=3, c;
  c=a;
  if(a>b) c=1;
  else if(a==b) c=0;
  else c=-1;
  printf(“%d”,C);
  }
  3.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。
  main()
  {
  int x, y, z, c;
  scanf(“%d %d %d”, &x, &y, &z);
  if( y>x ) { c=x; x=y; y=c;}
  if( z>x ) { c=x; x=z; z=c;}
  if( z>y ) { c=y; y=z; z=c;}
  printf(“ %d %d %d”, x, y, z);
  }
  4.如果运行时输入字符Q,则下面程序的运行结果是 Q
  main()
  {
  char ch;
  scanf(“%c”, &ch);
  ch=(ch>=‘A’&& ch<=‘Z’)? (ch+32):ch;
  ch=(ch>=‘a’&& ch<=‘z’)? (ch-32):ch;
  printf(“%c”, ch);
  }
  5.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 x==0
  6.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 x>5||x<-5
  7.下列程序段的输出结果是 passwarn
  int n='c';
  switch(n++)
  { default: printf("error");break;
  case 'a':case 'A':case 'b':case 'B':printf("good");break;
  case 'c':case 'C':printf("pass");
  case 'd':case 'D':printf("warn");
  }
  8.以下程序将两个数从小到大输出。
  main()
  {
  float a, b, t ;
  scanf( "%f %f" , &a, &b);
  if(a>b)
  { t=a;
  a=b ;
  b=t;
  }
  printf(“%5.2f, %5.2f”, a, b);
  }

  9.若输入8642,以下程序的输出结果为 place=4,每位数字为:8642
  main()
  {
  long int num;
  int gw, sw, bw, qw, ww, place;
  printf(“请输入一个0~99999之间的整数:”);
  scanf(“%ld”, &num);
  if(num>9999) place=5;
  else if(num>999) place=4;
  else if(num>99) place=3;
  else if(num>9) place=2;
  else place=1;
  printf(“place=%d,”, place);
  printf(“每位数字为: ”);
  ww=num/10000;
  qw=(num-ww*10000)/1000;
  bw=(num-ww*10000-qw*1000)/100;
  sw=(num-ww*10000-qw*1000-bw*100)/10;
  gw=num-ww*10000-qw*1000-bw*100-sw*10;
  switch(place)
  {case 5: printf(“%d, %d, %d, %d, %d”, ww, qw, bw, sw, gw); break;
  case 4: printf(“%d, %d, %d, %d”, qw, bw, sw, gw); break;
  case 3: printf(“%d, %d, %d”, bw, sw, gw); break;
  case 2: printf(“%d, %d”, sw, gw); break;
  case 1: printf(“%d”, gw); break;
  }
  }
  10.若输入1988,程序运行的结果为 1988年是闰年 ;若输入1989,则结果为 1989年不是闰年
  main()
  {int year, leap;
  scanf(“%d”, &year);
  if(year%4) leap=0;
  else if(year%100) leap=1;
  else if(year%400) leap=0;
  else leap=1;
  if(leap) printf(“%d年是闰年。”, year);
  else printf(“%d年不是闰年。”, year);
  }
  11.用以下程序把大写字母A~Z转换成对应的小写字母a ~ z,其他字符不转换。
  main()
  {char ch;
  scanf ( "%c",&ch );
  ch=( ch>='A'&&ch<='Z' )?ch+32:ch;
  printf(“char=%c”, ch );
  }
  12.条件“20 x>20&&x<30||x<=-100 。
  13.若已知a=10, b=20, 则表达式!a 1 。
  14.若已定义int a=25, b=14, c=19; 以下三目运算符(?:)所构成的语句的执行结果是
   ###a=26,b=13,c=19
  a++<=25&&b--<=2&&c++?printf(“***a=%d, b=%d, c=%d”, a, b, C): printf(“###a=%d, b=%d, c=%d”, a, b, C);
  15.以下两条if语句可合并成一条if语句为 if(a>b){y=2;printf("****y=%d",y);} else {x=1;printf("####x=%d",x);}
  if(a<=b) x=1;
  else y=2;
  if(a>b) printf(“**** y=%d”, y);
  else printf(“#### x=%d”, x);

考试宝典安装说明

宝典适用于手机、电脑、平板,您可安装客户端或在浏览器使用。

电脑版

手机版

网页版

考试宝典咨询
服务热线

TEL:029-88699698