标签:
注:编译环境为Visual Studio 2012,答案仅供参考。
61.给一个数组,输出数组里超出所有元素平均值的元素的个数。比如:1、2、3、4、5,输出3.
#include <iostream>
using namespace std;
int overAvg(int a[],int n){
    int sum = 0, count = 0;
    for (int i = 0; i < n; i++)
    {
        sum += a[i];
    }
    int avg = sum / n;
    for (int i = 0; i < n; i++)
    {
        if (a[i] >= avg || (a[i] == avg && left == 0))
        {
            count++;
        }
    }
    return count;
}
int main()
{
    int a[] = {1,2,3,4,5};
    cout << overAvg(a,5) << endl;
    return 0;
}62.逆序链表输出。  
题目描述: 
将输入的一个单向链表,逆序后输出链表中的值。链表定义如下:  
typedef struct tagListNode  
{  
      int value;  
      struct tagListNode *next;  
}ListNode; 
要求实现函数: 
void converse(ListNode **head);  
【输入】head:    链表头节点,空间已经开辟好  
【输出】head:    逆序后的链表头节点 
【返回】无  
【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出 
#include <stack>
typedef struct tagListNode 
{ 
      int value; 
      struct tagListNode *next; 
}ListNode; 
void converse(ListNode **head){
    if (!head || !*head)
    {
        return;
    }
    ListNode *p = *head;
    stack<ListNode*> s;
    while (p != NULL){
        s.push(p);
        p = p->next;
    }
    *head = s.top();
    p = s.top();
    s.pop();
    while (!s.empty())
    {
        p->next = s.top();
        p = p->next;
        s.pop();
    }
    p->next = NULL;
}63.给定一个字符串,实现一个函数,按下述方式输出字符串: * 如果此字符的下一个字符和此字符不一样,原样输出此字符, * 否则先输出此字符,再输出此字符连续出现的次数(次数不大于9)。 * 例如,字符串ABBCCCDEDFFF,输出的结果为AB2C3DEDF3。 * * 不用考虑溢出问题,不能使用任何I/O函数
#include <string>
using namespace std;
void convert(const string &s1, string &s2){
    auto begin = s1.begin();
    while (begin != s1.end())
    {
        auto ahead = begin + 1;
        if (*ahead != *begin)
        {
            s2.push_back(*begin);
            begin++;
            continue;
        }
        while (ahead != s1.end() && *ahead == *begin)
        {
            ahead++;
        }
        int n = (ahead - begin) > 9 ? 9 : ahead - begin;
        s2.push_back(*begin);
        s2.push_back(n + ‘0‘);
        begin = ahead;
    }
}64.找出一个数组中满足2^N的元素
inline bool isRight(int n){
    return !(n & (n-1));
}
void print2(int a[], int n){
    for (int i = 0; i < n; i++)
    {
        if (isRight(a[i]))
        {
            cout << a[i] << " ";
        }
    }
}65.查找字符串中空格分隔的单词的最大长度
#include <iostream>
#include <string>
using namespace std;
int maxLength(const string &s){
    int max = 0;
    auto begin = s.begin();
    while (begin != s.end())
    {
        if (*begin == ‘ ‘)
        {
            begin++;
            continue;
        }
        auto ahead = begin + 1;
        while (ahead != s.end() && *ahead != ‘ ‘)
        {
            ahead++;
        }
        int length = ahead - begin;
        if (length > max)
        {
            max = length;
        }
        begin = ahead;
    }
    return max;
}
int main()
{
    string s;
    getline(cin,s);
    cout << maxLength(s) << endl;
    return 0;
}标签:
原文地址:http://blog.csdn.net/sps900608/article/details/52210090