写一个函数,实现两个字符串的比较。即实现strcmp函数,s1=s2时返回0,s1!=s2时返回二者第一个不同字符的ASCII值。


 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main(){  5     setvbuf(stdout,NULL,_IONBF,0);  6     char s1[255],s2[255];  7     int strcmp(char *,char *);  8     int result;  9 
10     printf("1st string:"); 11  gets(s1); 12     printf("2nd string:"); 13  gets(s2); 14     result=strcmp(s1,s2); 15     printf("The comparing result is %d.",result); 16 
17     return EXIT_SUCCESS; 18 } 19 
20 int strcmp(char *p1,char *p2){ 21     int i; 22     int result; 23 
24     result=0;                        //先假设两个字符串相等,比较结果为0
25     for(i=0;*(p1+i)&&*(p2+i);i++)    //比较两个字符串中的对应字符都不为\0的情况
26  { 27         if(*(p1+i)!=*(p2+i)) 28  { 29             result=*(p1+i)-*(p2+i); 30             break; 31  } 32  } 33     
34     //若两个字符串的长度不相等,但有字符的部分是完全相同的,退出上述循环后,result还是0
35     if(result==0) 36         result=*(p1+i)-*(p2+i); 37     return result; 38 }

下面是谭浩强的答案,比较简单。我还是不能灵活运用while语句

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main(){  5     setvbuf(stdout,NULL,_IONBF,0);  6     char s1[255],s2[255];  7     int strcmp(char *,char *);  8     int result;  9 
10     printf("1st string:"); 11  gets(s1); 12     printf("2nd string:"); 13  gets(s2); 14     result=strcmp(s1,s2); 15     printf("The comparing result is %d.",result); 16 
17     return EXIT_SUCCESS; 18 } 19 
20 int strcmp(char *p1,char *p2){ 21     int i=0; 22     int result; 23 
24     while(*(p1+i)==*(p2+i)) 25         if(*(p1+i++)=='\0') 26             result=0; 27     result=*(p1+i)-*(p2+i); 28     
29     return result; 30 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2时,返回值为0;若s1≠s2,返回它们二者第1个不同字符的ASCII码差值(如"BOY"与"BAD" 10.17写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为: int strcmp(char * p1,char * p2) 设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1≠s2时,返回它们两者的第一个不同字符的ASCII码差值(如”BOY”与”BAD”,第二个字母不同,”O”与”A”之差为79-65=14);如果s1>s2,则输出正值; 8、将两个字符串s1,s2进行比较,如果s1>s2,则输出一个正数。如果s1 = s2,输出零。如果s1 < s2, 输出一个负数,不用strcmp函数,输出的正数或者负数的绝对值应该是比较两字符串相应字符的ascii码的差值。 编写一个程序,将连个字符串s1和s2比较,如果s1 > s2,输出一个整数;若s1 = s2,输出0;若s1 < s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,"A"和“C”相比,由于"A" < "C",应输出负数,同时由于‘A’与‘C’的ASCII码差值为2,因此应输出"-2" 编写一个程序,将两个字符串s1和s2比较,如果s1 > s2,输出一个整数;若s1 = s2,输出0;若s1 < s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2 动态规划:给出两个字符串s1和s2,返回其中最大的公共子串 C语言:求n(n<10000)以内的所有四叶玫瑰数。-将字符串s1和s2合并形成新的字符串s3,先取出1的第一个字符放入3,再取出2的第一个字符放入3, 7、将字符串数组s2中全部字符复制到字符数组s1中,不用strcpy函数 编写一个程序,将一个字符串s2插入到字符串s1中,其起始插入位置为n。 **输入格式要求:"%d" 使用gets()接收字符串s1和s2 提示信息:"main string:" "sub string:" "site of begining:(<=%d)" **输出格式要求:"After instert:%s\n" 程序运行示例如下:
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM