鱼C论坛

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

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

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

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

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

x
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,num,sum=0;
  5.         _Bool flag=1;
  6.         for(num=3;num<=10000;num++)
  7.         {
  8.                 printf("n=%2d",num);
  9.                 for(i=2;i<=num/2;i++)
  10.                 {
  11.                         printf("i=%2d",i);
  12.                         if(num%i==0)
  13.                         {
  14.                                 flag=0;
  15.                                 break;
  16.                         }
  17.                         printf("flag=%d",flag);
  18.                 }
  19.                 if(flag)
  20.                 {
  21.                         sum++;
  22.                 }
  23.                
  24.         }

  25.         printf("10000以内共有%d个素数",sum);
  26. }
复制代码

我将每个循环的num,i和flag的值打印出来检查,我虽然打了i++,但是每个i都是2,完全没有变过,而且num=3的情况i也没有打印出i,我想问问各位大佬这个循环出了什么问题?
最佳答案
2021-10-30 13:27:23
        楼主试试这个代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,num,sum=0 ;
  5.         int flag=1      ;
  6.         for(sum =0 , num = 3 ; num <= 10000 ; num ++){
  7.                 for(flag = 1 , i = 2 ; i <= num /2 ; i ++) {
  8.                         if(num % i == 0) {
  9.                                 flag = 0 ;
  10.                                 break    ;
  11.                         }
  12.                 }
  13.                 if(flag) sum ++          ;
  14.         }
  15.         printf("10000以内共有%d个素数",sum);
  16. }
复制代码

        编译、运行实况:
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 10000以内共有1228个素数
  4. 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行,也就是这一句
  1.                 for(i=2;i<=num/2;i++)
复制代码

        改为:
  1.                 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 | 显示全部楼层    本楼为最佳答案   
        楼主试试这个代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,num,sum=0 ;
  5.         int flag=1      ;
  6.         for(sum =0 , num = 3 ; num <= 10000 ; num ++){
  7.                 for(flag = 1 , i = 2 ; i <= num /2 ; i ++) {
  8.                         if(num % i == 0) {
  9.                                 flag = 0 ;
  10.                                 break    ;
  11.                         }
  12.                 }
  13.                 if(flag) sum ++          ;
  14.         }
  15.         printf("10000以内共有%d个素数",sum);
  16. }
复制代码

        编译、运行实况:
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 10000以内共有1228个素数
  4. 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-5-14 03:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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