注册 登录
编程论坛 C语言论坛

C语言循环判断

尔二 发布于 2020-12-24 23:28, 1719 次点击
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
运行之后就没有下文了
9 回复
#2
do8do8do82020-12-24 23:32
年轻人,这是死循环,你不讲武德,do  while是死循环
#3
风过无痕19892020-12-25 11:15
回复 楼主 尔二
程序代码:

#include<stdio.h>
int main()
{
    int i, n;
    printf("输入人数:");
    scanf("%d", &n);
    for(i = 1;i < n;i++)    // 报数得从 1 开始
    {
        if (i % 2 != 0)
        {
            printf("%d ", i);
        }
    }
    return 0;
}
#4
尔二2020-12-25 13:25
回复 2楼 do8do8do8
我少return值是吗
#5
apull2020-12-25 14:09
回复 4楼 尔二
你的do...while循环的i和n的值没有变,所以这个while会一直运行下去,成为死循环。
#6
do8do8do82020-12-25 15:23
回复 4楼 尔二
年轻人
题目是这样滴
假如有11个人 依次编号为:  1  2  3  4  5  6  7  8  9  10  11
                   --------------------------------------------
                   报数    1  2  1  2  1  2  1  2  1   2   1
            报1的编号为:  1     3     5     7     9       11
如果按照实际操作呢,挨个抡过去就行了,一次过,谁报1谁站出来。所以一个循环就可以了
而你用了两个循环 一个是 for  一个是do while. 不知道你那个do  while是不是把站出来的人 轮番揍一顿(如果是的话,有必要这么写)
但是一次过就行了,一次就行
所以  for(i=1;i<=11;i++)  就会得到 1 2 3 4 5 6 7 8 9 10 11的编号
再针对每个编号的处理   就是
     for(i=1;i<=11;i++)
     {
          if(i%2!=0) /*是1的站出来,因为只有报数1和2,那么可以理解为是奇数位的就站出来,根据奇数的特性,奇数除以2是非整除,由此得判断它是否为奇数*/
          printf("%d ",i);/*打印就是站出来的意思*/     
}
   这里是特列11,把11换成n 那就是你输入的n
#7
do8do8do82020-12-25 15:27
但是你的代码稍微改一下也可以

去掉do while
然后把 j=n/2;改成 j=n%2;
#8
do8do8do82020-12-25 15:31
把for(i=0;i<=n;i++) 改成for(i=1;i<=n;i++)  因为i就是编号,而且题目要求编号是从1开始,按题目来
#9
尔二2020-12-25 21:38
回复 8楼 do8do8do8
年轻人受教了
#10
尔二2020-12-25 21:38
回复 5楼 apull
我还是太菜了多谢指教
1