一·问题要求
输入n个号码,一个号码不能是另一个的前缀才有效。
123  123456  789 不是有效号码,因为123 是123456的前缀
123  452    12589是有效的。
二 代码
/*输入n个电话号码(10位以内),判断号码是否有效,即判断某个号码是否是另一个的前缀。若是输出no,不是输出yes.
  123  12 458 就不是有效号码,123 456 789 是有效号码*/
#include<stdio.h>
#include<string.h>    //strlen()的头文件
#include<stdlib.h>    //system的头文件
int main()
{
int n,i,j,k=0,m1,m2,h,f=0;
printf("输入n的值:\n");
scanf("%d",&n);
getchar();          //这里有个回车键字符,需要吸收。否则会存入到a[0]中。
char a[n][11];
printf("输入n个电话号码:\n");
for(i=0;i<n;i++)
gets(a[i]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
  {
      m1=strlen(a[i]);system的头文件
      m2=strlen(a[j]);
     
      printf("m1=%d  m2=%d\n",m1,m2);
     
      if(m1<m2)
      m2=m1;
    k=0;            //每循环一次k要归零。
      for(h=0;h<m2;h++)
    {
    if(a[i][h]==a[j][h])
        k++;
    }
      if(k==m2)
        f=1;
 
  }
 
  if(f==0)
  printf("YES\n");
  else
  printf("N0\n");
 
  system("PAUSE"); //在vc6.0中自动生成可读性文件,在devcpp中暂停一下看//结 果。
  return 0;
   
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。