Sorting/Searching类的题目.
总体挺简单.
题目要求统计每个国家出现的次数.
一开始我以为国家就是题目开头的五个..边写边纳闷..怎么那么简单...
后来看到输出中有个上面没有的England.....╮(╯▽╰)╭
我的思路是把国家放到一个二维数组word里(话说这招屡试不爽啊..),再开一个数组num,存放国家的数目.
另外开一个数组temp,读取每句话中的国家,并和word里的国家对比.如果有相同的,那个国家对应的num数目+1,否则就增加一个国家.
全部输入好之后用冒泡法排序,排序的同时也对num数组做相应的调换.
没看到要用字典序输出..WA了两次(┬_┬).
#include <stdio.h> #include <string.h> int Getcont(char temp[], int &numofcont); char cont[3000][100]; int num[3000] = {0}; int main() { //reopen("input.txt", "r", stdin); memset(cont, 0, sizeof(cont)); char temp[200]; int numofcont = 0; int n; scanf("%d", &n); getchar(); int i, j; for (i = 0; i < n; i++) { memset(temp, 0, sizeof(temp)); gets(temp); //获取整个句子 int key = Getcont(temp, numofcont); //取得国家的标号,同时统计国家数 num[key]++; } //排序 for (i = 0; i < numofcont; i++) { for (j = i + 1; j < numofcont; j++) { if (strcmp(cont[i], cont[j]) > 0) { char str[100]; int tempnum; strcpy(str, cont[j]); tempnum = num[j]; strcpy(cont[j], cont[i]); num[j] = num[i]; strcpy(cont[i], str); num[i] = tempnum; } } } for (i = 0; i < numofcont; i++) printf("%s %d\n", cont[i], num[i]); return 0; } int Getcont(char temp[], int &numofcont) { int i; char buf[50]; memset(buf, 0, sizeof(buf)); //char *c; //获取传入句子的国家信息 for (i = 0; temp[i] != ' '; i++) buf[i] = temp[i]; for (i = 0; i < numofcont; i++) { if (strcmp(buf, cont[i]) == 0) { return i; } } if (i == numofcont) //如果找不到就新建一个国家 { sprintf(cont[numofcont], "%s", buf); numofcont++; return i; } }