使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。补充函数convert(long s,long*str),使之从低位开始取出长整型变量s中奇数位上的数,依次存放在数str中。 例如,当s中的数为:7654321时,

admin2019-05-29  38

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。补充函数convert(long s,long*str),使之从低位开始取出长整型变量s中奇数位上的数,依次存放在数str中。
    例如,当s中的数为:7654321时,str中的数为:7531。
    注意:请勿改动主函数。
1  #include<iostream.h>
2  void convert(long s,long *str)
3  {
4
5  }
6  void main()
7  {
8  long s,res;
9   cout<<’’Please enter s:’’<<end1;
10    cin>>s;
11    convert(s,&res);
12    cout<<’’The result is:’’<<res<<end1;
13    return;
14  }

选项

答案1 long s1=10; 2 *str=s%10;//先取个位数 3 while(s>0) 4 { 5 s=s/100; //每次除以100, 6 *str=s%10*s1+*str; //取除以100后的个位数,str增加1位 7 s1=s1*10; 8 }

解析 函数convert(long s,long *str)的功能是从低位开始取出长整型变量S中奇数位上的数,依次存放在str中,即取S的个位数、百位数、万位数……,先取个位数,然后每次取奇数位的数相当于s每次除以100后的个位数,因此可用循环来实现。
    (1)由审题分析可知,奇数位即为个位数、百位数、万位数……,取个位数比较简单,s%10便得到了个位数。获取百位数可由s/100后,再和10取余得到,同样万位数可由s/10000,再和1(取余得到,从百位数开始后面的奇数位都是在上次的基础上再除以100后再取余数,因此可利用循环。
    (2)在循环外先取S的个位数,然后进入循环,s=s/100,获取除以100的个位数方法为s%10,这个数是*str的高一位,乘以它所在*str中的位置的权值,然后和以前的值相加便得到这次*str值,如此循环,直到s为0为止。
转载请注明原文地址:https://kaotiyun.com/show/I68p777K
0

相关试题推荐
最新回复(0)