当前位置:编程学习 > C/C++ >>

用C语言编写这个程序?

比较两个字符串S和T大小的函数strcomp(char *s,char *t),要求s小于t时返回-1,s等于t返回0,s大于t时返回1,在主函数中任意输入4个字符串,求最小字符串。不能用strcmp;
答案:你好:

       下边是程序代码,我已运行过,完全可以满足你的要求,希望对你有帮助!如果不符合你的要求,你可以追问.

#include <stdio.h>
#include <string.h>
int strcomp(char *s,char *t)
{
while(*s&&*t&&*s==*t)
{
    s++;t++;
}
if(*s-*t>0)
    return 1;
if(*s-*t==0)
    return 0;
if(*s-*t<0)
    return -1;
}
main()
{
    int i,j,k,l,m,n,b;
    char str1[20],str2[20],str3[20],str4[20];
    printf("请输入第一个字符串:");
    gets(str1);
    printf("请输入第二个字符串:");
    gets(str2);
    printf("请输入第三个字符串:");
    gets(str3);
    printf("请输入第四个字符串:");
    gets(str4);
    i=strcomp(str1,str2);
    j=strcomp(str1,str3);
    k=strcomp(str1,str4);
    m=strcomp(str2,str3);
    n=strcomp(str2,str4);
    b=strcomp(str3,str4);
    if(i<0&&j<0&&k<0)
    printf("%s\n",str1);
    else if(m<0&&n<0)
    printf("%s\n",str2);
    else if(b<0)
    printf("%s\n",str3);
    else
    printf("%s\n",str4);
    getch();
}

我用指针编写的:

#include <iostream>
using namespace std;
int main()
{
int n=0,judge;
char text1[20],text2[20];           
char *s=NULL,*t=NULL;             
s=text1;                       
t=text2;                      
cout<<"Please input two strings:"<<endl;
cin>>text1;
cin>>text2;
for(*s=text1[0],*t=text2[0];*s!='\0',*t!='\0';s++,t++)  
{if(*s==*t)                   //判断两字符是否相等
   n=0;                        
   else if(*s>*t)           
   {judge=1;cout<<judge<<endl;n=1;break;}  
   else
   {judge=-1;cout<<judge<<endl;n=-1;break;}
}
   if(n==0)
   {judge=0;cout<<judge<<endl;}
}

int Mystrcmp(char *s,char *t){//有空指针返回2,其实用异常处理更好,_try{..}...if((!s)||(!t))  return 2;if((0==*s)&&(0==*t))return 0;if(0==*s)return -1;if(0==*t)return 1;return Mystrcmp(++s,++t);}

上一个:c语言如何能掌握?
下一个:什么是程序的C语言

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,