12月30日 发表于 2013-12-9 21:08:27

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出

#include<stdio.h>
main()
{
        int temp,n,i,j,k=0,t;
        printf("输入n:");
        scanf("%d",&n);
        if(n<=0) return 0;
        for(i=1;i<=n;i++)
                temp=i;
        j=n;
        if(j==1)
                {       
                        printf("1号\n");
                        return 0;
                }       
        while(j>=2)
                {
                        for(i=0;i<n;i++)
                                {
                                        if(temp!=0)
                                                        k++;
                                        if(temp!=0&&k==1&&j==1)
                                                {t=temp;break;}
                                        if(k==3)
                                                {
                                                        temp=0;
                                                        j--;
                                                        k=0;
                                                }
                                        if(i==n-1) i=0;
                                }
                }
        printf("%d号\n",t);
}

12月30日 发表于 2013-12-9 21:24:04

求解哪里错了???:loveliness:

轻拿轻放 发表于 2013-12-9 22:15:01

终于做出来了代码贴上#include<stdio.h>
#include<windows.h>
void main()
{
        int temp,n,i,j,k=0,t;
again:printf("请输入总人数n:");
        scanf("%d",&n);
        if(n<=0)
      goto again;
        for(i=1;i<=n;i++)
           temp=i;
        j=n;      
        while(j>=1)
        {
                for(i=0;i<n;i++)
                {
                        if(temp!=0)
                          k++;
                        if(k==3)
                        {
                                temp=0;
                                j--;
                                k=0;
                        }
                        if(temp!=0&&k==1&&j==1)t=temp;
                }
        }
        printf("%d号\n",t);
        system("pause");
}

wangjachun 发表于 2013-12-9 22:49:44

uihiuhkhiuhkhiuhgfytuuuuyutu

风涯 发表于 2013-12-10 10:57:03

这个程序运行不了在于后面结尾处少了一个},程序设计是错误的,得不出结果。

12月30日 发表于 2013-12-10 11:39:59

轻拿轻放 发表于 2013-12-9 22:15 static/image/common/back.gif
终于做出来了代码贴上

谢谢{:1_1:}

12月30日 发表于 2013-12-10 11:42:42

风涯 发表于 2013-12-10 10:57 static/image/common/back.gif
这个程序运行不了在于后面结尾处少了一个},程序设计是错误的,得不出结果。

能不能说下哪里错了!!谢谢

pcfate 发表于 2013-12-10 13:22:42

MARK:shock:

轻拿轻放 发表于 2013-12-10 15:31:23

12月30日 发表于 2013-12-10 11:42 static/image/common/back.gif
能不能说下哪里错了!!谢谢

轻拿轻放 发表于 2013-12-10 15:39:52

如果是少了一个}你加上去试试就可以,你设计的逻辑没有错,可能就是
if(j==1)
                {      
                        printf("1号\n");
                        return 0;
                }      
      while(j>=2)
错误而已 ,我拿下来就是这里的printf("1号\n");和后面的printf("%d号\n",t);冲突;我是把这一部分删除了并且把判断条件改成while(j>=1)就是这样了。

轻拿轻放 发表于 2013-12-10 15:42:36

还有这部分
again:printf("请输入总人数n:");
      scanf("%d",&n);
      if(n<=0)
      goto again;
是判断输入的是否正确,如果不正确就goto跳转到标志again出执行

52621587 发表于 2013-12-10 23:09:10

这样写试试
#include<stdio.h>
main()
{
      int temp,n,i,j,k=0,t;
      printf("输入n = ");
      scanf("%d",&n);
      if(n<=0)
      return 0;
      j = n;
      if(j==1)
      {
              printf("%d号\n",j);
              return 0;
      }
         for(i=1;i<=n;i++)
                temp=i;
      
         
      while(j>=1)
                {
                  for(i=0;i<n;i++)
                     {
                     if(temp!=0)
                         k++;                                                                         if(temp!=0&&k==1&&j==1)
                        {
                                t=temp;
                                break;
                        }
                     if(k==3)
                        {
                            temp=0;
                           j--;
                           k=0;
                           }
                        if(i==n)
                         i=0;
                     }
                }
      printf("%d号\n",t);
}

12月30日 发表于 2013-12-11 15:57:49

52621587 发表于 2013-12-10 23:09 static/image/common/back.gif
这样写试试
#include
main()


谢谢帮忙:handshake
页: [1]
查看完整版本: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出