您现在的位置是:首页 > 技术文章网站首页技术文章

[C/C++]经典算法 二(面试题)

  • WangYe
  • 2020-09-06 12:20:19
  • 380 次阅读
经典算法面试题二

题目一

    一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个, 到第十天的时候发现还有一个,求第一天共摘了多少桃子;

#include <iostream>
using namespace std;

int main()
{
    int i, s, n = 1;
    for (i = 1; i < 10; i++)
    {
        s = (n + 1) * 2;
        n = s;
    }
    cout << "第一天共摘了" << s << "个桃子" << endl;
}

题目二

    一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同;

#include <iostream>
using namespace std;

int main()
{
    long ge, shi, qian, wan, x;
    cin >> x;

    wan = x / 10000;
    qian = x % 10000 / 1000;
    shi = x % 100 / 10;
    ge = x % 10;

    if (ge == wan && shi == qian)    /*个位等于万为并且十位等于千位*/
    {
        cout << "This number is a huiwen" << endl;
    }
    else {
        cout << "This number is not a huiwen" << endl;
    }
}

题目三

    迭代法求一个数的平方根;

#include <iostream>
#include <math.h>
using namespace std;
#define Epsilon 1.0E-6 /*控制解的精度*/

int main()
{
    float a, x0, x1;
    cout << "请输入要求的数:";
    cin >> a ;
    x0 = a / 2;
    x1 = (x0 + a / x0) / 2;

    while (fabs(x1 - x0) >= Epsilon)
    {
        x0 = x1;
        x1 = (x0 + a / x0) / 2;
    }
    cout << x1 << endl;
}

题目四

打印以下:

    *
   ***
 ******

********
 ******
  ***
   *

程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列;

#include <iostream>
using namespace std;

int main()
{
    int a[7] = {1,3,6,8,6,3,1};
    int b[7] = {3,2,1,0,1,2,3};
    int i, k, j;
    for (k = 0; k < 7; k++)
    {
        for (j = 0; j < b[k]; j++)
        {
            cout << " ";
        }
        for (i = 0; i < a[k]; i++)
        {
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}


文章评论 (0)



Top