C语言习题,求高手指教
比较两个字符串s1和s2,如果s1>s2,输出一个正数,小于输出一个负数,其中输出的正数负数值为两个字符串相应位置字符的ASCII码差值,当两个字符串完全一样时,则认为s...
比较两个字符串s1和s2,如果s1>s2,输出一个正数,小于输出一个负数,其中输出的正数负数值为两个字符串相应位置字符的ASCII码差值,当两个字符串完全一样时,则认为s1=s2。
我用的比较函数,还有gets()puts()写到半截到输出时就不知道杂写了。我刚学没多久,您费心了! 展开
我用的比较函数,还有gets()puts()写到半截到输出时就不知道杂写了。我刚学没多久,您费心了! 展开
展开全部
题目叙述的有问题啊,S1,S2两个字符串中的每个字符在内存存储的都是字符对应的内码(即ASCII码),所以每个对应位置的两个字符之间都存在ASCII码的差值,题目要求的是那个字符的差值?还是所有字符的差值?
两个字符之间的ASCII差值只要用对应的两个字符型变量相减即可得到。
是的就是要比较字符串,两个字符串存放在两个字符数组当中,按对应位置进行字符的比较:
#include<stdio.h>
main()
{
char s1[256],s2[256];
int len1,len2,maxl,i;
scanf("%s %s",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
maxl=len1>len2?len1:len2;
for(i=0;i<maxl;i++)
{ if( s1[i]!=s2[i] )
{ printf("%d\n",s1[i]-s2[i]); break; } /* != */
}
if(i==len1 && len1!=len2) /*s1较短,s2大*/
printf("%d\n",(-1)*s2[i]);
else
{ if(i==len2 && len1!=len2) /*s2较短,s1大*/
printf("%d\n",s1[i]);
else
if(i==maxl && len1==len2) printf("相等\n");
}
}
两个字符之间的ASCII差值只要用对应的两个字符型变量相减即可得到。
是的就是要比较字符串,两个字符串存放在两个字符数组当中,按对应位置进行字符的比较:
#include<stdio.h>
main()
{
char s1[256],s2[256];
int len1,len2,maxl,i;
scanf("%s %s",s1,s2);
len1=strlen(s1);
len2=strlen(s2);
maxl=len1>len2?len1:len2;
for(i=0;i<maxl;i++)
{ if( s1[i]!=s2[i] )
{ printf("%d\n",s1[i]-s2[i]); break; } /* != */
}
if(i==len1 && len1!=len2) /*s1较短,s2大*/
printf("%d\n",(-1)*s2[i]);
else
{ if(i==len2 && len1!=len2) /*s2较短,s1大*/
printf("%d\n",s1[i]);
else
if(i==maxl && len1==len2) printf("相等\n");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询