bool InputSeqList(SeqList *L) { int i; for (i = 0;; i++) { scanf_s("%c", &(L->data[i])); if (L->data[i] == 'end') break; L->length++; } return true; }
时间: 2024-03-07 07:50:49 浏览: 20
这段代码也是用来输入顺序表的,但是同样有一些问题。
首先,scanf_s()函数的参数应该是一个指针,但是代码中传入的是&(L->data[i]),这是正确的。
其次,输入的终止条件应该是输入的字符串为"end",但是代码中使用的是'L->data[i] == 'end'',这也是不正确的。应该使用strcmp()函数来比较输入的字符串和"end"是否相同。
最后,应该在输入完最后一个字符串后再将顺序表的长度加1,否则会出现错误的长度。
正确的代码应该是这样的:
```
bool InputSeqList(SeqList *L) {
int i;
for (i = 0;; i++) {
scanf_s("%s", &(L->data[i]));
if (strcmp(L->data[i], "end") == 0)
break;
L->length++;
}
return true;
}
```
相关问题
bool InputSeqList(SeqList *L) { int i; for (i = 0;; i++) { scanf_s("%c", L->data[i]); L->length++; if (L->data[i] == 0) break; } return true; }
这段代码是用来输入顺序表的,但是有一些问题。
首先,scanf_s()函数的参数应该是一个指针,但是代码中传入的是L->data[i],这是不正确的。
其次,输入的终止条件应该是输入的字符为'\0',但是代码中使用的是0,这也是不正确的。
最后,应该在输入完最后一个字符后再将顺序表的长度加1,否则会出现错误的长度。
正确的代码应该是这样的:
```
bool InputSeqList(SeqList *L) {
int i;
for (i = 0;; i++) {
scanf_s("%c", &(L->data[i]));
if (L->data[i] == '\0')
break;
L->length++;
}
return true;
}
```
把这段代码翻译成java语言(源语言为c++)#include <iostream> #include <cmath> using namespace std; bool isPerfectSquare(int num) { for(int i = 1; i * i <= num; i++) { if(i * i == num) { return true; } } return false; } int main() { int num = 0; for(int i = 1000; i <= 9999; i++) { int t = 0; int p = i; while(p != 0) { int x= p % 10; t = t * 10 + x; p /= 10; } if(isPerfectSquare(abs(t - i))) { num++; } } cout << num; return 0; }
以下是将C++代码翻译成Java的代码:
import java.lang.Math;
public class Main {
public static boolean isPerfectSquare(int num) {
for(int i = 1; i * i <= num; i++) {
if(i * i == num) {
return true;
}
}
return false;
}
public static void main(String[] args) {
int num = 0;
for(int i = 1000; i <= 9999; i++) {
int t = 0;
int p = i;
while(p != 0) {
int x = p % 10;
t = t * 10 + x;
p /= 10;
}
if(isPerfectSquare(Math.abs(t - i))) {
num++;
}
}
System.out.println(num);
}
}