码迷,mamicode.com
首页 > 编程语言 > 详细

百家姓排序(C++)

时间:2015-07-05 09:34:10      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:百家姓排序   百家姓   生成文件   

百家姓的一部分:
{
赵 钱 孙 李 周 吴 郑 王 冯 陈 褚 卫 蒋 沈 韩 杨 朱 秦 尤 许
何 吕 施 张 孔 曹 严 华 金 魏 陶 姜 戚 谢 邹 喻 柏 水 窦 章
云 苏 潘 葛 奚 范 彭 郎 鲁 韦 昌 马 苗 凤 花 方 俞 任 袁 柳
酆 鲍 史 唐 费 廉 岑 薛 雷 贺 倪 汤 滕 殷 罗 毕 郝 邬 安 常
乐 于 时 傅 皮 卞 齐 康 伍 余 元 卜 顾 孟 平
}
#include <fstream>
typedef basic_fstream<char, char_traits<char> > fstream;



#include <fstream>
#include <string>
#include <iostream>
using namespace std;


#define MAXNAMES 1000


void input(string nm[],int n)
{
    for(int i=0; i!=n; i++)
    {
        cin>>nm[i];
    }
}


void output(string nm[],int n)
{
    ofstream out("names.txt");  //创建一个文件,存放姓名


    for(int i=0; i<n; i++)
    {
        cout<<nm[i]<<endl;
        out<<nm[i]<<endl;//调用库函数 <fstream>
    }
    out.close();//关闭Names.txt文件
}


int analyze(char x)
{
    int i;
    string firstNm= " 赵钱孙李周吴郑王冯陈褚		            卫蒋沈韩杨朱秦尤许何吕施张孔					曹严华金魏陶姜戚谢邹喻柏水窦					章云苏潘葛奚范彭郎鲁韦昌马苗 					凤花方俞任袁柳酆鲍史唐费廉岑 					薛雷贺倪汤滕殷罗毕郝邬安常乐 					于时傅皮卞齐康伍余元卜顾孟平 ";
 
 
    for(i=0; firstNm[i]!=x; i++);
    return i;
}


void sort(string nm[],int n)
{
	string temp;
	for(int i=0; i<n-1; i++)
	{
		for(int j=i+1; j<n; j++)
		{
			if(analyze(nm[i][0])>analyze(nm[j][0])) //判断姓氏先后,进行排序
			{
				temp=nm[i];
				nm[i]=nm[j];
				nm[j]=temp;
			}
		}
	}
	}


int main()
{
    string names[MAXNAMES];
	int n;
	cout<<"请输入姓名个数:";
	cin>>n;
    input(names,n);
    sort(names,n);
    cout<<"After sort"<<endl;
    output(names,n);
    system("pause");
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

百家姓排序(C++)

标签:百家姓排序   百家姓   生成文件   

原文地址:http://blog.csdn.net/fujinlong520/article/details/46758969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!