请编写一个函数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:%u\n",x); if (x<10) printf ("Data error! "); else printf ("The result :%u\n", 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; } 我们首先应该明白无符号整数的定义形式,若它大于10000(5位)时,将10000对它求余则结果为后4位;当它大于1000(4位)时,将1000对它求余则结果为后3位,花此类推。特别注意这里所有if()的顺序不能颠倒。