C语言习题,求高手指教

比较两个字符串s1和s2,如果s1>s2,输出一个正数,小于输出一个负数,其中输出的正数负数值为两个字符串相应位置字符的ASCII码差值,当两个字符串完全一样时,则认为s... 比较两个字符串s1和s2,如果s1>s2,输出一个正数,小于输出一个负数,其中输出的正数负数值为两个字符串相应位置字符的ASCII码差值,当两个字符串完全一样时,则认为s1=s2。
我用的比较函数,还有gets()puts()写到半截到输出时就不知道杂写了。我刚学没多久,您费心了!
展开
 我来答
百度网友b452582
2010-10-30 · TA获得超过2581个赞
知道小有建树答主
回答量:953
采纳率:100%
帮助的人:322万
展开全部
题目叙述的有问题啊,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");
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式