问答题 请编写一个函数unsigned proc(unsigned u),u是一个大于10的无符号整数,若u是n(5≥n≥2)位的整数,则函数求出u的后n-1位的数作为函数值返回。
例如,u值为1234,则函数返回234;若u值为234,则函数返回34。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
unsigned proc(unsigned u)
{
}
void main()
{
unsigned x;
system("CLS");
printf("Enter a unsigned integer
number: ");
scanf("%u", &x);
printf("The original data is: %u/n", x);
if(x<10)
printf("Data error!");
else
printf("The result: %u/n", proc(x));
}
【正确答案】
【答案解析】unsigned proc(unsigned u)
{
if(u>=10000) //此时u为五位,则返回其后的四位
return u%10000;
if(u>=1000) //此时u为四位,则返回其后的三位
return u%1000;
if(u>=100) //此时u为三位,则返回其后的两位
return u%100;
if(u>=10) //此时u为两位,则返回其后的一位
return u%10;
} [解析] 要返回无符号整数的后n-1位,首先要判断无符号整数的位数,然后通过求余来实现。