首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中模拟Python的for-else语句

如何在C++中模拟Python的for-else语句
EN

Stack Overflow用户
提问于 2020-10-04 01:57:13
回答 1查看 56关注 0票数 0

下面是一个带有默认else条件的Python质数程序。我想用C语言重现这段代码,但我没有让它像Python那样工作:

代码语言:javascript
复制
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语言重现了这段代码;它编译并运行,它与预期的输出非常匹配,但它们并不相同。它不会写入默认条件。

代码语言:javascript
复制
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相同的缺省条件?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-04 03:09:26

在没有标准的C方法来模拟Python中的默认"else“条件的情况下,下面是我在C中可以使用的方法:

代码语言:javascript
复制
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循环。

感谢所有回复的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64187317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档