/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char s1[80],s2[80];
int i,flag=1,resu;
printf("Please input s1 and s2:\n");
gets(s1);
gets(s2);
for(i=0;;i++)
{
if(s1[i]>s2[i])
{
printf("%d",s1[i]-s2[i]);
flag=0;
break;
}
if(s1[i]<s2[i])
{
printf("%d",s1[i]-s2[i]);
flag=0;
break;
}
if(s1[i]==s2[i]=='\0')
{
resu=0;
printf("%d",resu);
}
}
if(flag)
{
resu=0;
printf("%d",resu);
}
}
//这是我写的一行代码,该程序的功能是比较两个字符串s1和s2的大小,若s1大于s2输出一个正数,等于则输出0,小于则输出一个负数,不要用strcpy函数,输出的正数或负数的绝对值必须为相比较的两个字符串相应字符的ASCII码的差值,例如‘A’与‘C’相比就输出-2;输入and和and,输出应为0.但是当我输入and和and时,输出为-43,这是为何?求大神帮助。
C语言程序运行时出现问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答
- phoenixylf 2013-09-10 01:13关注
因为你在for循环当中,比较字符串的最后一个'\0'的时候,没有跳出循环,导致会比较数组中后面一些无效字符。所以结果可能为-43或其他的。当你比较到最后一个字符都为'\0',此时就应该结束循环,字符串的比较结果就为0;所以只要在循环里面那个比较最后一个字符的时候加一个break就可以了。结束循环不需要在判断flag的值,因为在循环中都已经将比较的结果处理完毕了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能
- ¥15 jmeter脚本回放有的是对的有的是错的
- ¥15 r语言蛋白组学相关问题
- ¥15 Python时间序列如何拟合疏系数模型
- ¥15 求学软件的前人们指明方向🥺
- ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
- ¥20 双层网络上信息-疾病传播
- ¥50 paddlepaddle pinn