Chinaunix首页 | 论坛 | 博客
  • 博客访问: 614917
  • 博文数量: 148
  • 博客积分: 5184
  • 博客等级: 大校
  • 技术积分: 1402
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-14 17:16
文章分类

全部博文(148)

文章存档

2012年(21)

2011年(27)

2010年(30)

2009年(21)

2008年(40)

2007年(9)

我的朋友

分类: C/C++

2008-07-30 21:12:55

3V C程序设计_顺序表的操作
 
C程序源代码:

#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) ;
}

 
运行效果,不过,由于使用XP系统,所以中文显示是个问题;这个程序是毕业设计搞的,当时是98、2000系统,运行效果可以见中文:)
 
阅读(1871) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~