//原题#include Main() //Main()-> main(){float x=10,y=5;
switch(x)
/*swich不能用与float类型,可以强制转成int后使用,后请用大括号 括起来*/
case 1 x++;
/*注意每个case x后都有冒号*/ deault x+=y;
// 原题default拼错了,还有后面有个冒号 case “2” y- -;
/*引号请用英文状态下的, - -中间请不要有空格,case 不能用于字符串,所以这里的引号没必要*/case 3: x- -;
// - -中间请不要有空格 printf(“x=%d,y=%d”,x,y)
//原题这里少了个 分号,引号请用英文状态下的
//要输出float类型请用%f不用%d
}//修改后的程序如下#include main(){float x=10,y=5;
/*定义2个float型的变量x,y并符初值,分别是10和5,隐式转换(int->float)*/
switch((int)x)
/*把float型的x强制转换成int行传入swicth参数中*/ { case 1: x++;
/*如果x等于1则x++,但并不跳出swicth,目前这里因x不等于1。所以x++不会执行,此时x仍是10*/ default: x+=y;
/*如果x都不匹配任何一个case,则x=x+y,根据下面的程序,的确要执行这个
所以,此时,x=10+5=15,y=5,但因没有break,所以程序继续执行下一个case*/ case 2: y--;
/*由于上面没有break,所以要执行y--,之后y由5变成4*/ case 3: x--;
/*同样由于上面没有break,所以要执行x--,之后x由15变成14*/}
printf("x=%f,y=%f",x,y);/*因为用float输出,所以结果为
x=14.000000,y=4.000000*/
}
|