下面是一个带有默认else条件的Python质数程序。我想用C语言重现这段代码,但我没有让它像Python那样工作:
for ix, num_float in enumerate(numbers):
num = int(num_float)
result = 0
if num > 1:
for i in range(2,num):
if (num % i) == 0:
result = 0
out_array.append(result)
break
else:
result = num
out_array.append(result)
else:
result = 0
out_array.append(result)在Python中,如果(a)输入数字( num )是2或更小,或者(b)输入数字(Num)达到范围2,num的末尾而没有找到质数,则默认(最终) else条件将触发,这将触发break语句。
我用C语言重现了这段代码;它编译并运行,它与预期的输出非常匹配,但它们并不相同。它不会写入默认条件。
for (int i = 0; i < numbers_length; i++){
num = (int64_t)numbers[i];
int range_ctr;
if (num > 1){
for (range_ctr = 2; range_ctr < num; range_ctr++){
if ((num%range_ctr) == 0){
result = 0;
list_of_results[list_of_results_ctr] = result;
list_of_results_ctr++;
break; }
else if ((num%range_ctr) != 0){
result = num;
list_of_results[list_of_results_ctr] = result;
list_of_results_ctr++; }
else {
result = 0;
list_of_results[list_of_results_ctr] = result;
list_of_results_ctr++; }
}
}
}所以我的问题是,我如何才能像上面描述的那样,用C语言编写与Python相同的缺省条件?
谢谢。
发布于 2020-10-04 03:09:26
在没有标准的C方法来模拟Python中的默认"else“条件的情况下,下面是我在C中可以使用的方法:
for (int i = 0; i < numbers_length; i++){
num = (int64_t)numbers[i];
int found = 0;
int range_ctr;
if (num > 1){
for (range_ctr = 2; range_ctr < num; range_ctr++){
if ((num%range_ctr) == 0){
result = 0;
list_of_results[list_of_results_ctr] = result;
list_of_results_ctr++;
found = 1;
break; }
else if ((num%range_ctr) != 0){
result = num;
list_of_results[list_of_results_ctr] = result;
list_of_results_ctr++; }
}
if (found == 0){
result = 0;
list_of_results[list_of_results_ctr] = result;
list_of_results_ctr++; }
}
}我添加了一个名为"found“的标志,并将默认条件移出了for循环。
感谢所有回复的人。
https://stackoverflow.com/questions/64187317
复制相似问题