【发布时间】:2023-12-04 13:53:01
【问题描述】:
for(int i=0; i<len_arr; i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
if(i == len_arr)
printf("Number not found.\n");
这不起作用。因为 i 不能在循环外访问。
我想了两种方法来达到我想要的效果。
但我的问题是,还有其他更优雅的方式来实现效果吗?
方式一:
int i;
for(i=0; i<len_arr; i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
if(i == len_arr)
printf("Number not found.\n");
方式二:
for(int i=0; (i<len_arr) && (printf("Number not found.\n")); i++)
if(arr[i] == some_num){
printf("The idx of %d is: %d\n", some_num, i);
break;
}
【问题讨论】:
-
我会投票给 Way1。或者添加一个布尔标志,它不是那么优雅,但清楚地说明了你想要做什么。
-
你确定你的第二种方法有效吗?
-
第一个问题..为什么不创建自己的“for循环”范围。只是放括号。我错过了什么吗?
-
方式 2 对我来说看起来很优雅。
-
@UzumakiIchigo 只要您想在循环的每次迭代中打印
Number not found.,它就很优雅。条件需要是||,而不是&&;在尝试编写这样的聪明代码时很容易犯这样的错误。 @Jennya C 还是 C++?显然,两种语言在数组中查找元素的惯用方法不同。