#include <conio.h> #include <stdio.h> /*操作提示:按s,x键分别向上,向下选择,按enter键确认操作。*/ /*效果修饰函数:*/ void xiush(int hang,int lie,int geshu,char zfu[],int seq,int seb) {int xunhx=0; gotoxy(lie,hang); textcolor(seq);textbackground(seb);clreol(); for(xunhx=1;xunhx<=geshu;xunhx++) printf("%s",zfu); } /*在第hang行lie列,显示geshu个zfu,前景色为seq,背景色为seb.*/ /*对文件进行初始化:*/ int shanchu(int v[],int i,int shu) {int j=0; if(i<1||i>shu) { printf("删除数据失败!\t建议位置参数为1-%d\n",shu); return 0;} for(j=i-1;j<shu;j++) v[j]=v[j+1]; v[shu]=-11; return 1;} /*插入数据元素*/ int charu(int v[],int i,int b,int shu) {int j; if (i<1||(i-1)>shu) {printf("插入数据失败!\t建议位置参数为1-%d\n",shu); return 0;} for(j=shu;j>i-1;j--) v[j]=v[j-1]; v[i-1]=b; return 1; } /*主程序*/ int a[100],wzhih=10,wzhil=30,wzhih1=10; void main() {char anj='',shujux[5][16]={"1.插入数据","2.删除数据","3.查找数据","关于程序操作提示","退出程序"},tshix[5][25]={"添加一些新的数据","对数据进行删除操作","根据条件查找数据","查看程序操作提示及程序Bug","退出程序<感谢您的使用>"}; int n=0,xunha=0,n1=0,t=1,j,i,b,flag,chazhao,geshu,shu=21; chushi: clrscr(); printf("随机产生数据...\n"); for(j=0;j<100;j++) {if (!(j>20)) a[j]=101+j; else a[j]=-11;} jiemian: clrscr(); wzhih=10;wzhih1=10;wzhil=30;n=0;n1=0; xiush(3,1,80,"|",1,0); xiush(5,1,1,"欢迎使用顺序表综合操作0B",5,0); xiush(7,1,50,"-",2,0); xiush(8,1,1,"按s,x键分别向上,向下选择,回车键确认执行.例外请注意您的键盘是否是小写状态",3,0); printf("\n\t\t\t您想:\n"); xiush(17,30,50,"-",2,0); xiush(18,30,1,"",2,0); xiush(19,30,1,"考虑您不考虑的问题!",15,0); xiush(23,1,80,"|",1,0); for (xunha=10;xunha<=14;xunha++) xiush(xunha,wzhil,1,shujux[xunha-10],15,0); do {if (anj=='s'||anj=='x') {if(anj=='s') t=-1; if(anj=='x') t=1; n1=n;n=n+t;wzhih1=wzhih;wzhih=wzhih+t; if(n<0){n=4;n1=0;wzhih=14;wzhih1=10;} if(n>4){n=0;n1=4;wzhih=10;wzhih1=14;} xiush(wzhih,wzhil,1,shujux[n],1,0); xiush(wzhih1,wzhil,1,shujux[n1],15,0); gotoxy(1,20); printf("提示:"); xiush(20,7,1,tshix[n],2,0); } anj=getch(); }while(anj!=13);
if (n==0) /*插入数据*/ {charu: clrscr(); printf("共有%d个数据可供操作.\n",shu); printf("插入数据前的线性表是:\n"); for(j=0;j<shu;j++) {if (a[j]!=-11) printf("%8d",a[j]); if ((j+1)%9==0) printf("\n");} chongxincharu: printf("\n请您先输入插入的位置I[1个数据]:"); scanf("%d",&i); cf1:printf("\n请您再输入要插入的数据B[1个数据]:"); scanf("%d",&b); if (b==-11) {printf("对不起,不能够插入-11这个数据.因为这个数据程序已经标记为特殊."); goto cf1;} flag=charu(a,i,b,shu); if(flag) { shu+=1; printf("插入数据后的线性表是:\n"); for(j=0;j<shu;j++) {if (a[j]!=-11) printf("%8d",a[j]); if ((j+1)%9==0) printf("\n");} printf("\n现在共有%d个数据.\n",shu); printf("\t完成操作!\n"); printf("\n\t\t您现在想:"); printf("\n\t\t 2,返回主程序进行选择"); printf("\n\t\t 其它键继续插入数据"); anj=getch(); if (anj=='2') goto jiemian;else goto charu; } else if (flag==0) goto chongxincharu;}
if (n==1) /*删除数据*/ { shanchu: clrscr(); printf("共有%d个数据可供操作.\n",shu); printf("删除数据前的线性表是:\n"); for (j=0;j<shu;j++) {if (a[j]!=-11) printf("%8d",a[j]); if ((j+1)%8==0) printf("\n");} chongxinshanchu: printf("\n请输入删除数据的位置I[1个数据]:"); scanf("%d",&i); flag=shanchu(a,i,shu); if (shu<=1) {shu=21; for(j=0;j<100;j++) {if (!(j>20)) a[j]=101+j; else a[j]=-11;}} if (flag) {shu-=1; printf("删除数据后的线性表是:\n"); for(j=0;j<shu;j++) {if (a[j]!=-11) printf("%8d",a[j]); if ((j+1)%8==0) printf("\n");} printf("\n现在共有%d个数据.\n",shu); printf("\t完成操作!\n"); printf("\n\t\t您现在想:"); printf("\n\t\t 1,继续删除数据"); printf("\n\t\t 2,返回主程序进行选择"); anj=getch(); if (anj=='2') goto jiemian; else goto shanchu; } else if (flag==0) goto chongxinshanchu; }
if (n==2) { /*查找数据*/ {int chazhao,geshu=0,j=0,deng=0,xiao=0,da=0; chongxinchazhao:clrscr(); printf("\n\n\t输入要查找的数据元素[1个数据]:"); scanf("%d",&chazhao); if (chazhao==-11){printf("不允许使用-11这个数据!(按任意键继续)\n");getch();goto chongxinchazhao;} if (chazhao>32767||chazhao<-32768) {printf("元素范围要小于32767大于-32768(按任意键继续).\n");getch();goto chongxinchazhao;} clrscr(); printf("\n\n\t正在从数据中查找%d元素...\n\n",chazhao); for (j=0;j<shu;j++) {if (a[j]==chazhao) deng+=1; if (a[j]>chazhao) da+=1; if (a[j]<chazhao) xiao+=1; if ((j+1) %9==0) printf("\n");else printf("%8d",a[j]); } printf("\n共有%d个元素!\n",shu); printf("查找结果:\n"); printf("\t等于%d的元素个数:%d\n\t小于%d的元素个数:%d\n\t大于%d的元素个数:%d\n",chazhao,deng,chazhao,xiao,chazhao,da); printf("\n\t完成操作!"); printf("\n\t\t您现在想:"); printf("\n\t\t 2,返回主程序进行选择"); printf("\n\t\t 继续查找数据"); anj=getch(); if (anj=='2') goto jiemian; else goto chongxinchazhao; }} if (n==3) {/*关于程序操作提示及BUG*/ clrscr(); xiush(2,5,1,"3V 设计[]",10,0); xiush(3,1,80,".",15,0); printf("\n[本程序为演示设计.其中数据为系统随机产生,无须用户输入.]\n"); printf("[插入数据最大极限为:100.]\n"); printf("[删除数据最大极限为:插入数据个数]\n"); printf("[程序支持3项查找.]\n"); printf("[按2键返回,其它键继续进行操作]\n"); printf("程序Bug:插入数据大于32767或者小于-32768时,插入的数据为系统给出的数据.\n"); printf("\t当您输入在进行插入数据操作时,\n\t若输入数据个数或类型不符合程序要求则程序会出现错误.\n"); printf("\t若输入一个数据后并加有其它非数字字符(如*),程序将出现致命错误!\n\t\t您可以按Ctrl+C键来退出程序.\n"); printf("\t没有输入数据就按回车键确认,程序将出现致命错误!\n"); printf("\t在进行相关操作时如插入,删除等.在返回时主界面会出现混乱,\n\t您只要看系统提示进行操作就行了.\n"); printf("\t在执行相关操作后,程序的一些字符颜色会有些改变.\n"); xiush(20,1,80,".",15,0); xiush(21,1,1,"按任意键返回...(非控制键Ctrl等)",7,0); getch(); goto jiemian; } if (n==4) ; }
|