switch 哪有问题啊??

来源:百度知道 编辑:UC知道 时间:2024/06/30 19:23:08
/*请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n
>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。
例如:w值为5923,则函数返回923;w值为923则函数返回23。
*/
#include <stdio.h>
int fun(unsigned w)
{
switch(w)
{
case w>=10000000:w%=10000000;break;
case w>=1000000:w%=1000000;break;
case w>=100000:w%=100000;break;
case w>=10000:w%=10000;break;
case w>=1000:w%=1000;break;
case w>=100:w%=100;break;
case w>=10:w%=10;break;

}

return w;
}
main()
{
int w;
scanf("%d",&w);
printf("%d",fun( w));
}

case标签必须是常量表达式(constantExpression),如果需要在运行时计算case标签的值,必须使用if语句。

你的case是一个条件判断,应该用if语句的
照你的思路改了一下

#include <stdio.h>
unsigned fun( unsigned w )
{
if(w>=10000) return w%10000;
if(w>=1000) return w%1000;
if(w>=100) return w%100;
return w%10;
}

void main()
{
unsigned w;
scanf("%d",&w);
if(w<10) printf("data error!");
else
printf("the result :%u\n", fun(w));
}