一些C语言题目,求高手帮忙!!!

有定义:float w;int a,b;则合法的switch语句是:(为什么选B?A错在哪里?)
A.switch(w)
{case 1.0:printf("*\n");
case 2.0:printf("**\n");}
B.switch(b)
{case 1:printf("*\n");
default:printf("\n");
case 1+2:printf("**\n");}

2.char arr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
(这语句的意思是这样吗?:把‘y' ,'o' ,'u' 依次赋给arr[0][0] arr[0][1] arr[0][2]。把'm','e',依次赋给arr[1][0] arr[1][1])

swich支持char 和int ,不支持float

arr可以理解为二维指针,你的字符串是一维的,类型不一样的,可以通过编译,但是会有警告的

arr[1]指向开头arr[1][0] //你的对的

虽然a和a[0]的地址是一样的,运算的结果可能也是对的,但是C语言的相等是指类型+数字相等才是真正的相等,你这样写以后会后悔的
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-06
1.switch后面的参数只能是int型还有char型,w是float型,所以A错。
2.这样理解是对的,扩展来说strcpy(arr,"you")和strcpy(arr[0],"you")是一样的,因为arr是二维数组的首地址,和arr[0]的地址是一致的。
第2个回答  2013-01-06
A中结构不完整呀
你定义的是 float w w除了取1.0 2.0 以外还能去其他的数啊 所以你要再加个case default
第3个回答  2013-01-06
w是float型 switch中用整型变量 所以A错了 后面的理解是对的
相似回答