资源描述:
《24-100221-按百家姓对姓名排序最新》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、编号:24河北工业大学计算机软件技术基础(VC)课程设计报告学院机械学院班级姓名______学号________成绩______一、题目:按百家姓将姓名排序(24)二、设计思路1、总体设计1)分析程序的功能:本程序是为了实现按百家姓对姓名排序2)系统总体结构:主要思路是:xingsort.cpp(按姓“赵、钱、孙、李”对姓名进行排序)namesort,cpp(按名对姓名排序)main.cpp(主函数,输入、输出姓名,并对其他函数进行调用a.h(头文件,包括调用函数的声明)。2、各功能模块的设计:主要由三
2、功能模块组成。具体是:(1)a.h:在其中声明函数(2)main.cpp:通过循环控制变量,对学生成绩进行输入和输出,以及选择结构的使用,实现不同函数功能的调用。(3)xing.cpp:按姓进行排序。(4)namesort.cpp:按名字进行排序。3、设计中的主要困难及解决方案1)困难1:从字符串中取出第一个字按姓排序。解决方案:汉字在数组中存储占两个字节,把字符串的前两个元素赋给一个数组,并把这个数组的最后一个元素赋为’ ’,即可得到姓,然后即可按顺序排列。2)困难2:对多文件的使用,即主函数和各个
3、函数分别存放在不同的.cpp文件中。解决方案:在头文件中进行声明,不能进行赋值运算,直接在主函数中进行赋值。4、你所设计的程序最终完成的功能第6页/共6页编号:241)对输入的姓名按百家姓进行排序。2)准备的测试数据如下:李丽赵括孙福赵冬梅赵国良赵雪赵迎专赵倩赵璐佳钱潮钱朋钊钱现冲钱心孙君啸孙巍孙亚星李彧李福德李景洋李彦航运行结果:第6页/共6页编号:24三、程序清单(1)a.h文件清单:intgetxing(chara[]);voidxingsort(charname[20][10],charname
4、_sort[20][10],intn,int&k1,int&k2,int&k3,int&k4);voidnamesort(chara[20][10],intm,intn);(2)main.cpp文件清单:#include#include#include#include"a.h"voidmain(){constN=20;charxm[N][10];cout<<"请输入20个姓名:"<<'';for(inth=0;h5、getline(xm[h],10);//输入姓名charxm_sort[20][10];inti,k1,k2,k3,k4;xingsort(xm,xm_sort,20,k1,k2,k3,k4);//按姓名排序if(k1>1){namesort(xm_sort,0,k1);}if(k2>1){namesort(xm_sort,k1,k1+k2);}if(k3>1){namesort(xm_sort,k1+k2,k1+k2+k3);}if(k4>1){namesort(xm_sort,k1+k2+k3,k1
6、+k2+k3+k4);}//按名对姓名排序cout<<"排序后的结果:"<<'';for(i=0;i<20;i++)第6页/共6页编号:24cout<#include#include#include"a.h"voidxingsort(charxm[20][10],charxm_sort[20][10],intn,int&k1,in
7、t&k2,int&k3,int&k4){inti,j,k;k1=0;k2=0;k3=0;k4=0;charxmsort1[20][10],xmsort2[20][10],xmsort3[20][10],xmsort4[20][10];chard[3];for(i=0;i<20;i++){for(j=0;j<2;j++)d[j]=xm[i][j];d[j]=' ';//把姓取出来if(strcmp(d,"赵")==0)k=1;elseif(strcmp(d,"钱")==0)k=2;elseif(strc
8、mp(d,"孙")==0)k=3;elseif(strcmp(d,"李")==0)k=4;//使相应的姓对应相应的数字if(k==1){for(j=0;j<10;j++)xmsort1[k1][j]=xm[i][j];k1++;}elseif(k==2){for(j=0;j<10;j++)xmsort2[k2][j]=xm[i][j];k2++;}elseif(k==3){for(j=0;j<10;j++)xmsort3[k3][j]=xm