C++数位相关问题
编写具有如下原型的函数:int f(unsigned long x, int n, int& Lxn);
它负责将整数x的第n位(从左边数第n位,n>0)的数值放到引用Lxn之中(将作为结果返回到主调函数的对应实参变量中),并将倒数第n位(从右边数第n位,n>0)的数值作为函数结果返回去。并编制主函数对它进行调用以验证其正确性。
例如,当x=123456789,n=7时,执行语句“Rxn=f(x, n, Lxn);”将使返回的Lxn为7,并使Rxn变为3;而执行语句“Rxn=f(12345, 6, Lxn);”将使Lxn与Rxn都变为为0(超出数的“长度”即总位数时返回0)。
(一) 需求分析:
该程序要解决的问题是编制int f(unsigned long x, int n, int& Lxn) 函数,它的意思如上说明,将整数x的第n位(从左边数第n位,n>0)的数值放到引用Lxn之中,并将倒数第n位(从右边数第n位,n>0)的数值作为函数结果返回去。
输入的值为long 型的整数,然后通过修改void main()中的函数Rxn=f(x, n, Lxn);的n的值来验证其正确性。
(二) 概要分析:
解决这个程序的关键所在是要得到这个数的长度(多少位),f 函数的意思是把整数x的第n位的数值放到引用Lxn之中,并将倒数第n位的数值作为函数结果返回去。
程序的流程图如下:
(三) 详细设计:
程序中还用到了%和/的使用,因此在程序中又编制了关键的问题是f 函数的编制
(四) 调试分析:
在调试程序时,由于之前经过严格的数学推导,没有发生错误
(五) 用户使用说明:
用户根据程序的提示输入一个整型数,以及想要求数的位数。
(辣) 测试结果:
(七)源程序:(见上传程序13.cpp)
(八)编程体会:
通过这个程序我了解了如何去求解问题,可以根据问题的目标来,在去设定其它的可以用到的函数。
/*************************************************
Copyright (C), 2008
File name: 软件设计普通题 13(13.cpp)
Author: 计06-1 高战
Description:
Others: ....
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
1.main() 完成各种提示与主操作输入输出
2.for 循环
3.f(unsigned long x,int n,int &Lxn) 变换函数
History:
<author> <time> <version > <desc>
*****************************************************/
#include<iostream>
using namespace std;
int main(){
int c=1,e,d,m,Lxn=0;
int f(unsigned long x,int n,int &Lxn); /*查找函数的声明*/
while(c){
cout<<"请输入整数"<<endl;
cin>>m;
cout<<"第几位进行变换"<<endl;
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/ }
return 0;
}
int f(unsigned long x,int n,int &Lxn) /*查找函数的定义*/
{ int a,q=0,t,w;
a=x;
t=x;
while(a){
a=a/10;
q++;
}
if(n>q)
return 0;
else
{for(int i=1;i<n;i++)
{ x=x/10;
a=x%10;
}
for( i=1;i<q-n+1;i++)
{ t=t/10;
w=t%10;
}
Lxn=w;
return a;1826