int i=0,count1=0,count2=0; while(s[i]!='\0') { count1++; } i=0; while(t[i]!='\0') { count2++; } if(count1<count2)return t; return s;这串代码比较字符串大小有问题吗
时间: 2023-12-04 15:05:22 浏览: 8
这段代码的比较字符串大小的逻辑有些问题。它只是比较了两个字符串的长度,如果第一个字符串的长度小于第二个字符串的长度,则返回第二个字符串,否则返回第一个字符串。但是,字符串的大小应该按照字典序进行比较,而不仅仅是根据长度。
可以考虑使用strcmp()函数来比较两个字符串的大小,如下所示:
```
if(strcmp(s, t) < 0)
return s;
else
return t;
```
这样就能按照字典序比较两个字符串的大小了。
相关问题
int i=0; while(i<25) i+=3; count<<i;
这段代码有一个错误。"count<<"是一个左移操作符,应该用"cout<<"代替,才能输出结果到控制台。另外,这段代码会一直执行下去,因为没有什么能使while循环停止,所以需要在循环内部加上一个停止条件。正确的代码如下所示:
```
#include <iostream>
using namespace std;
int main() {
int i=0;
while(i<25) {
i+=3;
}
cout<<i;
return 0;
}
```
输出结果为:27
Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i = 0; i <= num; i++) { int count = 1; int tmp = i; while (count != 0) { count++; tmp = tmp / 10; } tmp = i; int sum = 0; while (tmp != 0) { sum += Math.pow(tmp % 10,count); tmp /= 10; } if(sum == i) { System.out.println(i); } }这个代码有啥问题
这段代码还是判断每个数是否为阿姆斯特朗数的代码。但是在第一个while循环中,判断条件不正确。当tmp除以10的商为0时,应该停止循环,但是判断条件是count不等于0,这是不正确的。应该改为当tmp大于0时,继续循环,当tmp等于0时,停止循环。修改后的代码如下:
```
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i <= num; i++) {
int count = 1;
int tmp = i;
while (tmp > 0) {
count++;
tmp = tmp / 10;
}
tmp = i;
int sum = 0;
while (tmp != 0) {
sum += Math.pow(tmp % 10,count);
tmp /= 10;
}
if(sum == i) {
System.out.println(i);
}
}
```
这样修改后,就可以正确地判断每个数是否为阿姆斯特朗数了。