使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕, 并且每输出一个3位数就换一行。 程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。 试题程序: include<iostream.h> voidfun(intN[4]) { } intmain() intN[4

题目

使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕, 并且每输出一个3位数就换一行。 程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。 试题程序: include<iostream.h> voidfun(intN[4]) { } intmain() intN[4]={1,2,3,0}; fun(N): return0; }


相似考题
更多“使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数f ”相关问题
  • 第1题:

    使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。 (1)funl(intn)求出n的阶乘,必须使用递归调用。 (2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //必须使用递归 intfunl(intn) { } //不能使用递归 intfun2(intn) { } voidmain { inti; cout<<"请输入一个整数:"<<endl; cin>>i; cout<<"输入数字的阶乘是:"<<funl(i)<<endl; cout<<"输入数字的阶乘是:"<<fun2(i)<<endl; return; }


    正确答案:
    //必须使用递归
    jntfunl(intn)
    {
    if(n<=0)
    return0;
    if(n==1)
    return1;
    returnn*funl(n-1);
    };
    //不能使用递归
    intfun2(intn)
    {
    if(n<=0)
    retturn0;
    intres=1:
    for(inti=1;i<=n;i++)
    {
    res*=i;
    }
    returnres;
    }
    【解析】本题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,则返回n*funl(n-1),意思是返回n乘以n-1的阶乘;如果等于1,则返回1。这样递归下去就能最终得出n的阶乘。非递归算法可以先建立一个累乘变量,并初始化为1,然后循环遍历1~n,将遍历的数累乘到变量中即可。

  • 第2题:

    使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是一个4位长的整数,用每位数字加上3然后除以9的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,然后返回得到的密码。 程序输出结果为 1864 2075 注意:不能修改其他部分的代码。 试题程序: include<iostream.h> include<cmath> intfun(intn) { } intmain() { inti=1357: cout<<fun(i)<<endl; i=2468; cout<<fun(i)<<endl: return0; }


    正确答案:
    inti,a[4],t;
    a[0]=n%10;//取整型n的第1位数字
    a[1]=n%100/10;//取整型n的第2位数字
    a[2]=n%1000/100;//取整型n的第3位数字
    a[3]=n/1000;//取整型n的第4位数字
    for(i=0;i<=3;i++)//每位数字加3,取余
    {
    a[i]+=3;
    a[i]%=9;
    }
    t=a[0];//根据加密算法交换
    a[0]=a[3];
    a[3]=t;
    t=a[1];
    a[1]=a[2];
    a[2]=t;
    returna[3]*1000+a[2]*100+a[1]*10+a[0];
    //重组,返回加密数字
    【解析】本题首先取得要加密整数的每一位数字,并存
    入数组。根据加密算法,利用循环实现每位数字加3,再除以9取余。根据加密算法进行数字交换,最后重组,返回密码。

  • 第3题:

    请教:2016年计算机二级C++基础练习三简答题9如何解答?

    使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)返回1,2,3,…,n的和。其中n大于0。

    程序要求使用递归实现上述功能。

    注意:不能修改程序的其他部分,只能补充sum函数。

    试题程序:

    #include

    #include

    intsum(intn)

    {

    }

    voidmain()

    {

    cout<<"1+2+3+…+100="<

    endl;

    return;

    }


    【答案】

      return(n==1)?1:n+sum(n-1);

      【解析】本题主要考查三目运算符?:的使用和递归函数的编制。程序功能是计算前n个自然数的和,n为参数。程序的运算过程如下,不是一般性,假设n为3,首先执行sum(3),因为3不等于1,所以return语句返回的值为3+sum(3-1),然后执行sum(3-1)即sum(2),2不等于1,所以return语句返回的值为2+sum(2-1),然后执行sum(2-1)即sum(1),因为1等于1,所以return语句返回的值为1,即问号后的值,所以最终结果为3+2+1=6,而题中n为100,所以结果为5050。

  • 第4题:

    使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。使sum(intn)能计算所有n的因子之和(不包括1和自身)。 注意:不能修改程序的其他部分,只能补充sum函数。 试题程序: include<iostream.h> intsum(intn) { } voidmain { cout<<sum(10)<<endl; cout<<sum(200)<<endl; cout<<sum(400)<<endl; return; }


    正确答案:
    intall=0:
    for(inti=2;i<n;i++)
    {
    if(n%i==0)
    {
    all+=i:
    }
    }
    returnall;
    【解析】为了实现计算所有n的因子之和且不包含1和自身,在函数中定义一个变量all来保存求和结果,并为最终结果在函数结束时返回。在循环中逐个寻找n的因子,为了在计算中排除掉1和n本身,因此循环变量i的变化范围为2~(n-1)。如果n%i==0,说明i是n的因子,因此将i加到all上。

  • 第5题:

    使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intn),使其实现以下功能:当i等于3时,则打印如下内容。 A AA AAA 注意:不能修改程序的其他部分,只能修改fun函数。 试题程序: include<iostream.h> voidfun(intn) { } voidmain { intn; cout<<"请输入打印的行数:"<<endl; cin>>n; if(n<1) { cout<<"输入的行数必须大于0"<<endl; return; } fun(n); return; }


    正确答案:
    inti;
    for(i=0;i<n;i++)//外层循环,要打印的行数
    {
    intj;
    for(j=0;j(n-i-1;j++)//循环打印空格
    {
    cout<<'';
    }
    for(;j<n;j++)//循环打印A
    {
    cout<<"A":
    }
    cout<<endl;//打印每一行的回车符
    }
    【解析】本题利用外层循环打印每一行。内层循环分为
    打印空格和打印A。打印空格由第一个位置到第n-i-1。打印A,是由打印完空格开始一直到行结束。在外循环中打印每一行的结束符。