switch函数和if语句的相关练习题
1. 以下程序的执行结果是 (-1)
  main()
  { int x=100,a=10,b=20,v1=5,v2=0;
    if(a<b)
      if(b!=15)
          if(!v1)/*得0所以x=1不执行*/
            x=1;
        else
          if(v2)/* 得0所以x=10不执行,所以x在if语句中没有赋值*/   
x=10;
                x=-1;
    printf(“%d”,x); }
2. 以下程序的输出结果是  8,8,10         
main()
{ int x=10,y=9;
  int a,b,c;
  a=(--x==y++)?--x:++y;/*a=x=8,y=10*/
  b=x++;/*b=x=8,x=9*/
c=y;/*b=8,c=10*/
  printf(“%d,%d,%d”,a,b,c); }
3. 以下程序输入3时,输出结果是  34       
main()
{ int k;scanf(“%d”,&k);
  switch(k)
  {  case 1:printf(“%d”,k++);
      case 2:printf(“%d”,k++);
      case 3:printf(“%d”,k++);/*输出本身的值3,但是k已经变成4*/
      case 4:printf(“%d”,k++); break; /*输出本身的值4,但是k已经变成5*/
      default :printf(“FULL!”); }
  printf(“\n”); }
4. 以下程序的执行结果是  10       
    main( )
{ int a=-1,b=1,k;
  if((++a<0)&&!(b--<=0))
/*if(++a<0)为假, 后面短路,与运算前面为假,则这个表达式就为假,且a=0,b因为短路了没有赋值,所以b还是它本身的值*/
    printf(“%d%d\n”,a,b);
else
printf(“%d%d\n”,b,a); }
5. 以下程序的运行结果是__1,1______。
main()
{int x,y,z;
x=1;y=2;z=3;
(x=y--<=x)||(x=y!=z);
/* (x=y--<=x): 2<x为真1 x=1为真,后面短路,或运算前面为真,则这个表达式就为真,在语句 (x=y--<=x)中,x=1,y=1,后面因为短路没有赋值 */
printf(“%d,%d”,x,y);
}
6. 以下程序的运行结果是__1,0________。
main()
{  int x,y,z;
x=1;y=1;z=0;
x=x||y&&z;
/*x为1,后面短路,x=1*/
printf(“%d,%d”,x,x&&!y||z);
/* !y 为0, x为1, 所以x&&!y 为0,00为0*/
}
7. 以下程序的运行结果是_F___。
main()
{if(2*2==5<2*2==4)/*4==5<4==4*/
printf(“T”);
else
printf(“F”);}
8,输入一个整数,判别它是否能被3整除,若能整除,打印YES;不能打印NO。出程序中的错误。
main
{  flaot  n;
printf(“please input n:  ”);
scanf(“%d”, n);
  if(n%3!=0)
    printf (“n=%d  YES\n”,n)  ;
    else ;
printf (“n=%d  NO\n”,n)  ;
}
正确的程序如下:
#include<>
main()
{ int n;
printf("please input n:  ");
scanf("%d", &n);
  if(n%3==0)
    printf ("YES\n")  ;
    else printf ("NO\n");
}
9,以下程序是求3个数中的最大值,改正错误 。
    int main
  {  int x,y,z,max
scanf(“%d,%d”,&x,&y,&z);
      max=x;
if(max>y)max=y;
if(max<z)max=z; printf(“最大值是:%d”max);}
正确的程序如下:
#include<>
main()
{ int x,y,z,max;
scanf("%d,%d,%d",&x,&y,&z);
      max=x;
  if(max<y)max=y;
  if(max<z)max=z;
  printf("最大值是:%d",max);
}
10,出以下程序中的错误
  int main
  {  int g;
      printf(“Enter a mark: ”,g);
scanf(“%d”,g);
      switch( g/10);
  case 10:
case 9:printf(“A\n”);break;
case 8:printf(“B\n”);break;
case 7:printf(“C\n”);break;
case 6:printf(“D\n”);break;
default  :printf(“E\n”); }
  }
正确的程序如下:
#include<>
main()
{  int g;
      printf("Enter a mark: ");
scanf("%d",&g);
      switch( g/10)
  {case 10:
case 9:printf("A\n");break;
case 8:printf("B\n");break;
case 7:printf("C\n");break;
case 6:printf("D\n");break;
default:printf("E\n"); }
  }
11,编程:分别用switch和if语句编程实现:
            -1  (x<0)
      y =    0  (x=0)
            1  (X>0) 
Switch语句:
#include<>
main()
{  int x,y;
    printf("Enter x: ");
    scanf("%d",&x);
    switch(x)
switch函数用法举例  {case 0:y=0;break;
  default:switch(x>0)
  { case 0: y=-1;break;
    case 1: y=1;}
  }
printf(“%d”,y);
}
  If语句:
#include<>
main()
{  int x,y;
    printf("Enter x: ");
    scanf("%d",&x);
    if(x>0) y=1;
    if(x==0) y=0;
    if(x<0) y=-1;
printf("%d",y);}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。