鱼C论坛

 找回密码
 立即注册
查看: 1022|回复: 12

[已解决]循环结构:i的值无变化

[复制链接]
发表于 2021-10-30 12:46:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int i,num,sum=0;
        _Bool flag=1;
        for(num=3;num<=10000;num++)
        {
                printf("n=%2d",num);
                for(i=2;i<=num/2;i++)
                {
                        printf("i=%2d",i);
                        if(num%i==0)
                        {
                                flag=0;
                                break;
                        }
                        printf("flag=%d",flag);
                }
                if(flag)
                {
                        sum++;
                }
                
        }

        printf("10000以内共有%d个素数",sum);
}
我将每个循环的num,i和flag的值打印出来检查,我虽然打了i++,但是每个i都是2,完全没有变过,而且num=3的情况i也没有打印出i,我想问问各位大佬这个循环出了什么问题?
最佳答案
2021-10-30 13:27:23
        楼主试试这个代码
#include<stdio.h>
int main()
{
        int i,num,sum=0 ;
        int flag=1      ;
        for(sum =0 , num = 3 ; num <= 10000 ; num ++){
                for(flag = 1 , i = 2 ; i <= num /2 ; i ++) {
                        if(num % i == 0) {
                                flag = 0 ;
                                break    ;
                        }
                }
                if(flag) sum ++          ;
        }
        printf("10000以内共有%d个素数",sum);
}
        编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
10000以内共有1228个素数
D:\00.Excise\C>
        这是我修改的你的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-30 13:09:00 | 显示全部楼层
i的值在变啊

而且你在哪写了判断条件?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:15:50 | 显示全部楼层
嘉岳呀 发表于 2021-10-30 13:09
i的值在变啊

而且你在哪写了判断条件?


哪个的判断条件,是num的,i的,还是flag的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 13:16:32 | 显示全部楼层
而且num=3的情况i也没有打印出i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 13:17:05 | 显示全部楼层
而且这个代码好像接近死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 13:17:59 | 显示全部楼层
本帖最后由 jackz007 于 2021-10-30 13:19 编辑

        每个 num 都必须对 flag 进行初始化。
        第9行,也就是这一句
                for(i=2;i<=num/2;i++)
        改为:
                for(flag = 1 , i = 2 ; i <= num / 2 ; i ++)
        试试看呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:19:58 | 显示全部楼层
嘉岳呀 发表于 2021-10-30 13:17
而且这个代码好像接近死循环

这道题是小甲鱼c语言作业break和continue那一讲的第二题,它要求我要求出10000之内的素数,所以数据量就会大点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:21:51 | 显示全部楼层

num=3的情况经过if后不就会接着执行printf语句吗,但是num=3的情况是没有执行printf的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:23:32 | 显示全部楼层
嘉岳呀 发表于 2021-10-30 13:09
i的值在变啊

而且你在哪写了判断条件?

i的值后面是在变的但是我想问的是num=3时i为什么还是2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-30 13:27:23 | 显示全部楼层    本楼为最佳答案   
        楼主试试这个代码
#include<stdio.h>
int main()
{
        int i,num,sum=0 ;
        int flag=1      ;
        for(sum =0 , num = 3 ; num <= 10000 ; num ++){
                for(flag = 1 , i = 2 ; i <= num /2 ; i ++) {
                        if(num % i == 0) {
                                flag = 0 ;
                                break    ;
                        }
                }
                if(flag) sum ++          ;
        }
        printf("10000以内共有%d个素数",sum);
}
        编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
10000以内共有1228个素数
D:\00.Excise\C>
        这是我修改的你的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:30:52 | 显示全部楼层
jackz007 发表于 2021-10-30 13:27
楼主试试这个代码

        编译、运行实况:

是的,你改的那个答案是对的,我想问下我这个代码还有什么问题?因为距离答案还差1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:33:29 | 显示全部楼层
jackz007 发表于 2021-10-30 13:27
楼主试试这个代码

        编译、运行实况:

我在for语句内赋值flag是因为我的if语句那将flag的值改了所以才需要重新赋值,是吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-30 13:35:42 | 显示全部楼层
jackz007 发表于 2021-10-30 13:27
楼主试试这个代码

        编译、运行实况:

我解决了,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 19:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表