欢迎来到天天文库
浏览记录
ID:18158218
大小:79.50 KB
页数:17页
时间:2018-09-14
《程序设计:可执行的源程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序源代码1.八皇后#include#includeconstintN=20;intq[N];intcount=0;voidprint(intn){count++;inti;printf("第%d个解",count);for(i=1;i<=n;i++)printf("(%d,%d)",i,q[i]);printf("");}intplace(intk,intj){inti=1;while(i2、3、(abs(q[i]-j)==abs(k-i)))return0;i++;}return1;}voidquee4、n(intk,intn){intj;if(k>n)print(n);elsefor(j=1;j<=n;j++)if(place(k,j)){q[k]=j;queen(k+1,n);}}voidmain(){intn;pintf("皇后问题(n<20)n=");scanf("%d",&n);if(n>20)printf("n值太大,不能求解");else{printf("%d皇后问题求解如下:",n);queen(1,n);printf("");}}2.通讯录#include#include#include#i5、nclude#defineMAXSIZE20//电话薄记录数量#defineMAX_SIZE20//人名的最大长度#defineHASHSIZE53//定义表长#defineSUCCESS1#defineUNSUCCESS-1#defineLENsizeof(HashTable)typedefintStatus;typedefcharNA[MAX_SIZE];typedefstruct{//记录NAname;NAtel;NAadd;}Record;typedefstruct{//哈希表Record*elem[HASHSIZE];//数据元素存储基址in6、tcount;//当前数据元素个数intsize;//当前容量}HashTable;Statuseq(NAx,NAy){//关键字比较,相等返回SUCCESS;否则返回UNSUCCESSif(strcmp(x,y)==0)returnSUCCESS;elsereturnUNSUCCESS;}StatusNUM_BER;//记录的个数voidgetin(Record*a){//键盘输入各人的信息printf("输入要添加的个数:");scanf("%d",&NUM_BER);inti;for(i=0;i7、:",i+1);scanf("%s",a[i].name);printf("请输入%d个记录的电话号码:",i+1);scanf("%s",a[i].tel);printf("请输入第%d个记录的地址:",i+1);scanf("%s",a[i].add);//gets(str2);??????}}voidShowInformation(Record*a)//显示输入的用户信息{inti;for(i=0;i8、.tel,a[i].add);}voidCls(Record*a){printf("*");system("cls");}longfold(NAs){//人名的折叠处理char*p;longsum=0;NAss;strcpy(ss,s);//复制字符串,不改变原字符串的大小写strupr(ss);//将字符串ss转换为大写形式p=ss;while(*p!=' ')sum+=*p++;printf("sum====================%d",sum);returnsum;}intHash1(NAstr){//哈希函数longn;intm;n=fold(str9、);//先将用户名进行折叠处理m=n%HASHSIZE;//折叠处理后的数,用除留余数法构造哈希函数returnm;//并返回模值}intHash2(NAstr){//哈希函数longn;intm;n=atoi(str);//把字符串转换成整型数.m=n%HASHSIZE;returnm;//并返回模值}Statuscollision(intp,int&c){//冲突处理函数,采用二次探测再散列法解决冲突inti,q;i=c/2+1;while(i
2、
3、(abs(q[i]-j)==abs(k-i)))return0;i++;}return1;}voidquee
4、n(intk,intn){intj;if(k>n)print(n);elsefor(j=1;j<=n;j++)if(place(k,j)){q[k]=j;queen(k+1,n);}}voidmain(){intn;pintf("皇后问题(n<20)n=");scanf("%d",&n);if(n>20)printf("n值太大,不能求解");else{printf("%d皇后问题求解如下:",n);queen(1,n);printf("");}}2.通讯录#include#include#include#i
5、nclude#defineMAXSIZE20//电话薄记录数量#defineMAX_SIZE20//人名的最大长度#defineHASHSIZE53//定义表长#defineSUCCESS1#defineUNSUCCESS-1#defineLENsizeof(HashTable)typedefintStatus;typedefcharNA[MAX_SIZE];typedefstruct{//记录NAname;NAtel;NAadd;}Record;typedefstruct{//哈希表Record*elem[HASHSIZE];//数据元素存储基址in
6、tcount;//当前数据元素个数intsize;//当前容量}HashTable;Statuseq(NAx,NAy){//关键字比较,相等返回SUCCESS;否则返回UNSUCCESSif(strcmp(x,y)==0)returnSUCCESS;elsereturnUNSUCCESS;}StatusNUM_BER;//记录的个数voidgetin(Record*a){//键盘输入各人的信息printf("输入要添加的个数:");scanf("%d",&NUM_BER);inti;for(i=0;i7、:",i+1);scanf("%s",a[i].name);printf("请输入%d个记录的电话号码:",i+1);scanf("%s",a[i].tel);printf("请输入第%d个记录的地址:",i+1);scanf("%s",a[i].add);//gets(str2);??????}}voidShowInformation(Record*a)//显示输入的用户信息{inti;for(i=0;i8、.tel,a[i].add);}voidCls(Record*a){printf("*");system("cls");}longfold(NAs){//人名的折叠处理char*p;longsum=0;NAss;strcpy(ss,s);//复制字符串,不改变原字符串的大小写strupr(ss);//将字符串ss转换为大写形式p=ss;while(*p!=' ')sum+=*p++;printf("sum====================%d",sum);returnsum;}intHash1(NAstr){//哈希函数longn;intm;n=fold(str9、);//先将用户名进行折叠处理m=n%HASHSIZE;//折叠处理后的数,用除留余数法构造哈希函数returnm;//并返回模值}intHash2(NAstr){//哈希函数longn;intm;n=atoi(str);//把字符串转换成整型数.m=n%HASHSIZE;returnm;//并返回模值}Statuscollision(intp,int&c){//冲突处理函数,采用二次探测再散列法解决冲突inti,q;i=c/2+1;while(i
7、:",i+1);scanf("%s",a[i].name);printf("请输入%d个记录的电话号码:",i+1);scanf("%s",a[i].tel);printf("请输入第%d个记录的地址:",i+1);scanf("%s",a[i].add);//gets(str2);??????}}voidShowInformation(Record*a)//显示输入的用户信息{inti;for(i=0;i8、.tel,a[i].add);}voidCls(Record*a){printf("*");system("cls");}longfold(NAs){//人名的折叠处理char*p;longsum=0;NAss;strcpy(ss,s);//复制字符串,不改变原字符串的大小写strupr(ss);//将字符串ss转换为大写形式p=ss;while(*p!=' ')sum+=*p++;printf("sum====================%d",sum);returnsum;}intHash1(NAstr){//哈希函数longn;intm;n=fold(str9、);//先将用户名进行折叠处理m=n%HASHSIZE;//折叠处理后的数,用除留余数法构造哈希函数returnm;//并返回模值}intHash2(NAstr){//哈希函数longn;intm;n=atoi(str);//把字符串转换成整型数.m=n%HASHSIZE;returnm;//并返回模值}Statuscollision(intp,int&c){//冲突处理函数,采用二次探测再散列法解决冲突inti,q;i=c/2+1;while(i
8、.tel,a[i].add);}voidCls(Record*a){printf("*");system("cls");}longfold(NAs){//人名的折叠处理char*p;longsum=0;NAss;strcpy(ss,s);//复制字符串,不改变原字符串的大小写strupr(ss);//将字符串ss转换为大写形式p=ss;while(*p!=' ')sum+=*p++;printf("sum====================%d",sum);returnsum;}intHash1(NAstr){//哈希函数longn;intm;n=fold(str
9、);//先将用户名进行折叠处理m=n%HASHSIZE;//折叠处理后的数,用除留余数法构造哈希函数returnm;//并返回模值}intHash2(NAstr){//哈希函数longn;intm;n=atoi(str);//把字符串转换成整型数.m=n%HASHSIZE;returnm;//并返回模值}Statuscollision(intp,int&c){//冲突处理函数,采用二次探测再散列法解决冲突inti,q;i=c/2+1;while(i
此文档下载收益归作者所有