zoukankan      html  css  js  c++  java
  • 乐视模拟编程题

      这几道题都是以前遇到过的,看似比较简单,但也有一些细节AC不过! 注意1.cin.ignore()的用法。2.最后空格的处理。3,4.质因数的循环求解,质数的判断。

    1.//输入字符串,统计某一字符出现的次数
    
    #include<iostream>
    using namespace  std;
    #include<string>
    
    int main()
    {
        string str;
        while (getline(cin,str))
        {
            char ch;
            int times = 0;
            cin >> ch;
            for (int i = 0; i < str.size();i++)
            {
                if (str[i]==ch)
                {
                    times++;
                }
            }
            cout << times<<endl;
        }
        return 0;
    }  //AC 70%
    
    
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        string str;
        while (getline(cin, str))
        {
            char s;
            cin >> s;
            int count = 0;
            for (int i = 0; i < str.size(); i++)
            {
                if (s == str[i])
                    count++;
            }
            cout << count << endl;
            cin.ignore();
        }
    }
    
    //下面有问题
    //while (getline(cin, str))
    //cin >> s
    //循环的时候会出问题,第二次循环读不出s,后面加上一个cin.ignore()就好了,给所有出现此问题的人。。
    
    
    2.//计算字符串最后一个单词的字符数
    
    #include <string>
    #include <iostream>
    using namespace std;
    int main()
    {
        //cout << "请输入字符串:";
        string str;
        int count = 0;
        getline(cin, str);
        for (int i = str.size()-1; i >=0; i--)
        {
    
            if (str[i] == ' ')
                break;
            else
                count++;
        }
        cout << count << endl;
        //    cout << str.size();
        return 0;
    }
    
    // C++
    //有些同学的答案没考虑到末尾有空格的情况,对于末尾有空格的都输出为0了。
    //“hello world     ”依然输出5.
    
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        string s;
        while (getline(cin, s)){
            int n = 0, flag = 1;
            for (int i = s.length() - 1; i >= 0; --i){//倒着计算
                if (flag && s[i] == ' '){//如果末尾有空格,先清除末尾空格
                    continue;
                }
                else if (s[i] != ' '){
                    flag = 0;
                    ++n;
                }
                else{
                    break;
                }
            }
            cout << n << endl;
        }
        return 0;
    }
    
    
    3.//输出某一正整数的所有公因数
    //质数因子
    
    #include<iostream>
    using namespace std;
    int main()
    {
        int N;
        while (cin>>N)
        {
            int i = 2;
            while (N!=1)
            {            
                if (N%i==0)
                {
                    N = N / i;
                    cout << i << " ";
                    continue;
                }
                i++;    
            }
            cout << endl;
        }
        return 0;
    }
    
    4.//质因数的个数
    
    
    #include<iostream>
    using namespace std;
    int main()
    {
        int N;
        while (cin >> N)
        {
            int i = 2;
            int n = 0;
            while (N != 1)
            {
                if (N%i == 0)
                {
                    N = N / i;
                    //cout << i << " ";
                    n++;
                    continue;
                }
                i++;
            }
            cout << n << endl;
        }
        return 0;
    }
    
    
    //////////////////////////////////////////////////////////////////////////
    #include <iostream>
    #include <math.h>
    using namespace std;
    int main()
    {
        int n;
        int count = 0;
        while (cin >> n)
        {
            count = 0;
            int i = 2;
            while (i <= sqrt(n))
            {
                while (n % i == 0)
                {
                    n = n / i;
                    count++;
                    if (n == 1)
                        break;
                }
                i++;
            }
            if (n > sqrt(n))  //考虑n是否存在大于sqrt(n)的质因数,如果存在,最多存在一个,因为两个大于sqrt(n)的数相乘大于n   //本身就是大的质数
                count++;
            cout << count << endl;
        }
    }
    //////////////////////////////////////////////////////////////////////////
    #include<iostream>
    #include<cmath> 
    using namespace std;
    
    //是否本身就是为质数
    int isprime(int n){    
        if (n == 1 || n == 2 || n == 3){
            return 1;
        }
        for (int i = 2; i <= sqrt(n); i++){
            if (n%i == 0){
                return 0;
            }
        }
        return 1;
    }
    
    int judge(int n){
        for (int i = 2; i < sqrt(n); i++){
            if (isprime(i)){
                if (n%i == 0){
                    return judge(n / i) + 1;
                }
            }
        }
        return 1;
    }
    
    int main(){
        int n;
        while (cin >> n){
            cout << judge(n) << endl;
        }
        return 0;
    }
  • 相关阅读:
    CentOS 6.5 伪分布式 安装 hadoop 2.6.0
    单例模式的思想简介
    最有二叉树 哈夫曼树
    二叉树2
    二叉树1
    栈与队列
    线性表
    字符串模式匹配KMP算法
    数据结构(四) 查找 排序
    数据结构(三) 图
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5582594.html
Copyright © 2011-2022 走看看