请编写一个函数unsigned fun (unsigned w) w 是一个大于 10的无符
问题详情
请编写一个函数unsigned fun (unsigned w),w 是一个大于 10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后 n-1位的数作为函数值返回。
例如:w值为5923,则函数返回923;若w值为923,则函数返回23。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
试题程序:
include<conio. h>
include<stdio. h>
unsigned fun(unsigned w)
{
}
main()
{
unsigned x;
clrscr ();
printf("Enter a unsigned integer
number: ");
scanf ("%u",&x);
printf("The original data is:%un",x);
if (x<10)
printf ("Data error! ");
else
printf ("The result :%un", fun(x) );
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:unsigned fun (unsigned w){if(w>=10000)return w%10000; /*求出n位整数w的后n-1位的数*/if(w>=1000)return w%1000;if(w>=100)return w%100;if(w>=10)return w%10;}
unsigned fun (unsigned w){if(w>=10000)return w%10000; /*求出n位整数w的后n-1位的数*/if(w>=1000)return w%1000;if(w>=100)return w%100;if(w>=10)return w%10;} 解析:我们首先应该明白无符号整数的定义形式,若它大于10000(5位)时,将10000对它求余则结果为后4位;当它大于1000(4位)时,将1000对它求余则结果为后3位,花此类推。特别注意这里所有if()的顺序不能颠倒。