给定char *变量name1,name2和name3,编写一个代码片段,为变量max指定最大值(假设所有三个值都已声明并且已分配值)。
我已经尝试并提出了这个:
if ((strcmp(name1,name2)>0)&&(strcmp(name1,name3)>0)){
max=name1;
}
else if ((strcmp(name2,name1)>0)&&(strcmp(name2,name3)>0)){
max=name2;
}
else if((strcmp(name3,name1)>0)&&(strcmp(name3,name2)>0)){
max=name3;
}
else if(strcmp(name3,name1)==0){
max=name1,name3;
}
else if (strcmp(name2,name1)==0){
max=name2,name1;
}
else if (strcmp(name2,name3)==0){
max=name2,name3;
}
else{
max=name1,name2,name3;
}
但是,我收到此错误您的代码不正确。你没有处理这种情况 两个或多个字符串相等的地方。
...解决
答案 0 :(得分:1)
strcmp
返回0
我会留下你找出你没有处理它的原因。
修改强>
鲍勃和爱丽丝已经10岁了 什么是最大年龄?提示:它不是未定义的......它是10。
答案 1 :(得分:1)
注意: strcmp
不进行数字比较!
那是
strcmp("10","2")
返回一个负值,表示"2"
大于"10"
,这几乎肯定是不你想要的。
您可能希望在比较之前将字符串转换为某种数字。考虑使用sprintf
或atoi
或atof
或strtod
。