CCF计算机软件认证题目

10

贴上别人写的短小C++代码:

/****************************************************************************//* CCF软件能力认证考试模拟题 —— 出现次数最多的数皮皮 2014-8-30*//****************************************************************************/#include <assert.h>#include <iostream>#include <map>using namespace std;int main(){//assert( freopen("CCF\\mostOftenNum.in", "r", stdin) );int n, num;typedef map<int, int> intIntMap;intIntMap numCount;cin>>n;for(int i = 0; i < n; i++){cin>>num;numCount[num]++;}int max_num = INT_MIN, max = -1;for(intIntMap::iterator pos = numCount.begin(); pos != numCount.end(); pos++){//cout<<pos->first << " : " << pos->second << endl;if( pos->second > max || (pos->second == max && pos->first < max_num)){max = pos->second;max_num = pos->first;}}cout<< max_num << endl;//fclose(stdin);return 0;}贴上我写的C代码:

#include<stdio.h>#include<memory.h>#include<stdlib.h>//stdio.h stdlib.h是基本的头文件int main(){int count;int *array = NULL;int *array1 = NULL;FILE *file = freopen("input.txt", "r", stdin);if (!file)return 0;array = (int *)malloc(1001 * sizeof(int));array1 = (int *)malloc(10001 * sizeof(int));if (scanf("%d", &count) != EOF){memset(array, 0, 1001 * sizeof(int));memset(array1, 0, 10001 * sizeof(int));for (int i = 0; i < count; i++){scanf("%d", array + i);*(array1 + *(array + i)) += 1;}int cishu = -1;int value = 10000;for (int i = 0; i < count; i++){//printf("%d %d\n", *(array1 + *(array + i)), *(array + i));//if ( (*(array1 + *(array + i)) >= cishu) && (*(array + i) < value)) 这种写法考虑的情况有问题。if ((*(array1 + *(array + i)) > cishu) || ((*(array1 + *(array + i)) == cishu) && (*(array + i) < value))){cishu = *(array1 + *(array + i));value = *(array + i);}}printf("%d", value);}free(array);free(array1);return 0;}

,穷则思变,差则思勤!没有比人更高的山没有比脚更长的路。

CCF计算机软件认证题目

相关文章:

你感兴趣的文章:

标签云: