问题 问答题

请编写一个函数unsigned short fun(unsigned short s)。其中s是一个大于10的无符号整数,若s是一个n(n≥2)位整数,函数求出s的n位数之和作为函数的返回值。 例如,s值为4315,则函数返回13。s值为13函数,则返回4。注意:部分源程序已存在文件PROC15.cpp中。 请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。 文件PROC15.cpp的内容如下: //PROC15.cpp #include<iostream> using namespace std; unsigned short fun(unsigned short s); int main() { unsigned short a; cout<<"Enter a unsigned short integer number:"; cin>>a; if(a<10)cout<<"Data error!"; elsecout<<"The result: "<<fun(a)<<end1; return 0; } unsigned short fun(unsigned short s) { //* * * * * * }

答案

参考答案:

解析:函数fun()的定义如下: unsigned short fun(unsigned short s) { int a[5],i,sum=0; for(i=0;i<5;i++) { a[i]=(iht)(s/10000); s=s%1000000*10; sum+=a[i]; } return (sum); } fun()函数的功能是将一个数的各位值相加并返回相加的值。所以本题的重点是如何将各位上的数字求出来。本题可以采用穷举法计算,也可用类型转换法,即将这个数分别除以10000、1000、100、10(这是因为unsigned short类型的数不管在16位系统还是32位系统中,它总是占2个字节,其最大值为5位数65535),然后转化为int类型相加即可。

问答题
填空题