内河船舶驾驶室图片:帮我答对分全给你

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 14:43:19
调试下面的程序,改正错误,说明该程序的正确输出结果及功能。

#include <stdio.h>
Main()
{
float x=10,y=5;
switch(x)
case 1 x++;
deault x+=y;
case “2” y- -;
case 3: x- -;
printf(“x=%d,y=%d”,x,y)
}
都不对啊 都说一个错的

(1):自加或自减的必须是变量,不能给它初始化。
(2):switch中的语句必须有{}。
修改如下:
Line 1 Col 12 In
#include <stdio.h>
main()
{
float x,y;
scanf("%f,%f",&x,&y);
switch(x)
{
case 1: x++;
case 2: y--;
case 3: x--;
default: x+=y;
}
printf("x=%d,y=%d",x,y);
}

修改后
#include <stdio.h>

Main()
{
int x=10,y=5;
switch(x)
{
case 1:
x++;
break;
case 2:
y--;
break;
case 3:
x--;
break;
deault:
x+=y;
}
printf(“x=%d,y=%d”,x,y);
}

结果为:15 5
不过程序中间应该还有其它的方法,大概就这样子吧!

#include <stdio.h>

int main()
{
int x=10,y=5;
switch(x)
{
case 1: x++;
default: x+=y;
case '2':y--;
case 3: x--;
}
printf("x=%d,y=%d",x,y);
return 0;
}
x=14 y=4

错了,大家看清楚,除了语法的错误,
是没有break的,别给人家乱加break.

所以修改掉语法错误,答案为:x=14,y=4

//原题
#include <stdio.h>
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 <stdio.h>
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*/

}

我来总结一下
#include <stdio.h>

Main()
{
float x=10,y=5;
switch(int(x))
{
case 1:x++;break;
case 2:y--;break;
case 3:x--;break;
default:x+=y;
}
printf(“x=%f,y=%f”,x,y);
}
/*default 和 case 的次序不影响结果*/
/*case后一定要用break返回不然下面case还会继续执行;*/