内容发布更新时间 : 2025/11/1 7:07:55星期一 下面是文章的全部内容请认真阅读。
··
第4章 选择结构习题
1 选择题
1. 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2的值是()。
A.6 B.0 C.2 D.1
2. 设a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=a>b) && (n=c>d)后n的值为()。
A.1 B.2 C.3 D.4
3. 设x、y和z都是int类型变量,且x=3,y=4,z=5, 则下面的表达式中,值为0的表达式为
()。
A.’x’ && ’y’ B.x<=y
  C.x||y+z && y-z                      D.!((x 4.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。  A.缩排位置相同的if B.在其之前未配对的if  C.在其之前未配对的最近的if D.同一行上的if  5. 逻辑运算符两侧运算对象的数据类型()。   A.只能是0或1      B.只能是0或非0正数     C.只能是整型或字符型数据   D.可以是任何类型的数据  6. 以下关于运算符优先顺序的描述中正确的是()。    A.关系运算符<算术运算符<赋值运算符<逻辑与运算符     B.逻辑与运算符<关系运算符<算术运算符<赋值运算符     C.赋值运算符<逻辑与运算符<关系运算符<算术运算符   D.算术运算符<关系运算符<赋值运算符<逻辑与运算符 7. 下列运算符中优先级最高的是()。      A.<           B.&&          C.+            D.!= 8. 选择出合法的if语句(设int x,a,b,c;)()。     A.if(a=b) c++;   B.if(a=b) c++;     D.if(a=>b) c++;  9. 能正确表示“当x的取值在[-58,-40]和[40,58]范围内为真,否则为假”的表达式是()。   A.(x>= -58) && (x<= -40) && (x>=40) && (x<=58)     B.(x>= -58) || (x<= -40) || (x>=40) || (x<=58)      C.(x>= -58) && (x<= -40) || (x>=40) && (x<=58)     D.(x>= -58) | |(x<= -40) && (x>=40) || (x<=58)  10.判断char型变量s是否为小写字母的正确表达式是()。    A.’a’ <= s<=’z’                   B.(s>=’a’) & (s<=’z’)                                                                  ··      C.(s>=’a’) && (s<=’z’)             D.(’a’<=s) and (’z’>=s)  11.若希望当x的值为奇数时,表达式的值为“真”,x的值为偶数时,表达式的值为“假”。 则以下不能满足要求的表达式是()。    A.x%2==1                             B.!(x%2==0)   C.!(x%2)                              D.x%2  12.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。   A.0                                   B.语法错     C.1                                   D.“假” 13.指出下列程序段所表示的逻辑关系是()。  if(a x=10; } else   x=-10;  A.x???10??10a?b且c?d         a?b且c?d?10x?B.???10?10C.x????10D.x??a?b且c?d  a?ba?b且c?d  a?b且c?da?b且c?d  c?d?10??10??1?14.有一函数:y??0?1?x?0x?0   ,以下程序段中不能根据x值正确计算出y值的是()。 x?0A.if (x>0) y=1;  else  if (x==0) y=0;      else y= -1; B.y=0;     if (x>0) y=1;   else  if (x<0) y= -1; C.y=0;      if (x>=0)         if(x>0) y=1;    else y= -1; D.if (x>=0)      if (x>0) y=1;       else y=0;     else y= -1;  15.执行以下语句后,y 的值为()。  int x,y,z; x=y=z=0;                                                                  ··  ++x || ++y && ++z;  A.0              B.1             C.2             D.不确定值 16.已知int a=1,b=2,c=3; 以下语句执行后a,b,c的值是()。  if(a>b)  c=a; a=b; b=c;  A.a=1, b=2, c=3                       B.a=2, b=3, c=3 C.a=2, b=3, c=1                       D.a=2, b=3, c=2 17.请阅读以下程序:该程序()。  #include ”stdio.h” main()  { int x=-10, y=5, z=0;  if (x=y+z) printf(”***\\n” ); else      printf(”$$$\\n”); }  A.有语法错不能通过编译    B.可以通过编译但不能通过连接 C.输出***              D.输出$$$  18.以下程序的运行结果是()。  #include ”stdio.h” main() { int a=1;  if (a++>1) printf(”%d\\n”, a); else      printf(”%d\\n”, a--); }  A.0                 B.1           C.2               D.3 19.当a=1,b=2,c=4,d=3时,执行完下面一段程序后x的值是()。     if (a if (c   if (a    if (b A.1                B.2            C.3                D.4 20.执行以下程序段后,变量x,y,z的值分别为()。     int a=1,b=0, x, y, z;  x=(--a==b++)?--a:++b; y=a++; z=b;  A.x=0,y=0,z=0                      B.x= -1,y= -1,z= 1 C.x=0,y=1,z=0                      D.x= -1,y= 2, z= 1  21.若a、b、c、d、w均为int类型变量,则执行下面语句后的w值是()。  a=1;b=2;c=3;d=4; w=(a                                                                 ··  A.1              B.2              C.3               D.4  22.以下程序的输出结果是()。  #include ”stdio.h” main() {  int a=5, b=4, c=6, d;    printf(”%d\\n”, d=a>b? a>c?a:c :b); }  A.5             B.4               C.6               D.不确定 23.若a、b、c1、c2、x、y均为整型变量,正确的switch 语句是()。  A.switch (a+b);                    B.switch a  { case 1: y=a+b; break;               {  case c1: y=a-b; break; case 0: y=a-b;                        case c2: x=a*d; break;            break;                       default: x=a+b;   }                                 }  C.switch (a*a+b*b)                 D.switch(a-b)  { case 3:                          {  default: y=a*b; break; case 1: y=a+b; break;                 case 3: x=a+b; break;  case 3: y=b-a; break;                 case 10: case 11: y=a-b; break; }                                 }  24.执行下列程序,输入为3的数出结果是()。  #include ”stdio.h” main() {   int k;    scanf(”%d”, &k);  switch(k)   { case 1: printf(”%d\\n”, k++);  case 2: printf(”%d\\n”, k++);    case 3: printf(”%d\\n”, k++);    case 4: printf(”%d\\n”, k++);  break;          default: printf(”Full!\\n”);  } }  A.3           B.4              C.3                 D.4  5                    4  25.假定等级和分数有以下对应关系:  等级:A          分数:85——100 等级:B          分数:60——84 等级:C          分数:60以下  对于等级grade输出相应的分数区间,能够完成该功能的程序段是()。 A.switch (grade)   {  case ’A’ :printf(”85——100\\n”);  case ’B’ :printf(”60——84\\n”); case ’C’ :printf(”<60\\n”);      default:  printf(”grade is error!\\n”);   }                                                                  ··  B.switch (grade)   {  case ’A’ :printf(”85——100\\n”);                   break;    case ’B’ :printf(”60——84\\n”); case ’C’ :printf(”<60\\n”);      default:  printf(”grade is error!\\n”);   }  C.switch (grade)   {  case ’A’ :printf(”85——100\\n”);                  break;    case ’B’ :printf(”60——84\\n”);              break;  case ’C’ :printf(”<60\\n”);      default:  printf(”grade is error!\\n”);   }  D.switch (grade)   {  case ’C’ :printf(”<60\\n”);   break;  case ’B’ :printf(”60——84\\n”);           break;  default:  printf(”grade is error!\\n”);  break;  case ’A’ :printf(”85——100\\n”);  }  26.有如下程序,写出该执行结果()。  #include ”stdio.h” 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\\n”,y); }  A.0.000000      B.0.250000      C.0.500000     27.以下程序的运行结果是()。  #include ”stdio.h” main() {   int a=2,b= -1,c=2; if (a   printf(”%d\\n”,c); }  A.0             B.1             C.2          28.运行以下程序后,如从键盘上输入china#,则输出为()。D.1.000000    D.3