当前位置:文档之家› 数据结构串的比较

数据结构串的比较

上机5
设计strcmp(s,t)算法,实现两个串和的比较
代码:
#include<stdio.h>
#include<string.h>
#include<conio.h>
typedef struct{定义串结构
char ch[20];
int length;
}Hstring;
void main()
{Hstring m,n;
{if(m.ch[i]!=n.ch[j])取两个串当中第一个不相同的字符
{p=m.ch[i];q=n.ch[j];
break; }j++;}
}
else
{for(j=0;j<y;j++)
{if(m.ch[i]!=n.ch[j])
{p=m.ch[i];q=n.ch[j];
break; }i++;
}}
ifgt;y))
}
getch();
}
小结:本程序是先输入两个任意字符串(不超过20个),然后将其依次逐个比较其中的字符,
找出第一个不同的字符,进行比较,得出字符的大小,即就是两字符串的大小,运行结果如下:
程序的问题:我在定义字符串结构是,定义有length这个整形变量,留作方便去字符串的长度,和确定字符的位置。可是当我调用他的时候,却发现length里面不是我所想要的值(他是一个不正常的值,应该是内存中的随机初始值)。由于我发现用gets函数比较方便,当我在获取字符串的同时,length没有办法为其赋值,所以我就没有用length而是用strlen函数代替了他的功能。
int i=0,j=0,x,y ;
long p=0,q=0;
printf("input_1:");输入两个字符串
gets(m.ch);
printf("input_2:");
gets(n.ch);
x=strlen(m.ch);y=strlen(n.ch);获取串的长度
if(x>y)长度比较
{for(i=0;i<x;i++)
{printf("%s",m.ch);printf(" is biger !") ;判断,并输出
}
else if(q>p||(p==q&&x<y))
{
printf("%s",n.ch);printf(" is biger !");}
else if(x==y&&i==x&&j==y)
{printf("%s",m.ch);printf(" is equal to ");puts(n.ch) ;
相关主题