鱼C论坛

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

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

[复制链接]
发表于 2013-12-9 21:08:27 | 显示全部楼层 |阅读模式

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

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-9 21:24:04 | 显示全部楼层
求解哪里错了???:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-9 22:15:01 | 显示全部楼层
终于做出来了代码贴上
#include<stdio.h>
#include<windows.h>
void main()
{
        int temp[80],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-1]=i;
        j=n;       
        while(j>=1)
        {
                for(i=0;i<n;i++)
                {
                        if(temp[i]!=0) 
                            k++;
                        if(k==3)
                        {
                                temp[i]=0;
                                j--;
                                k=0;
                        }
                        if(temp[i]!=0&&k==1&&j==1)t=temp[i];
                }
        }
        printf("%d号\n",t);
        system("pause");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-9 22:49:44 | 显示全部楼层
uihiuhkhiuhkhiuhgfytuuuuyutu
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 10:57:03 | 显示全部楼层
这个程序运行不了在于后面结尾处少了一个},程序设计是错误的,得不出结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-10 11:39:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-10 11:42:42 | 显示全部楼层
风涯 发表于 2013-12-10 10:57
这个程序运行不了在于后面结尾处少了一个},程序设计是错误的,得不出结果。

能不能说下哪里错了!!谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 13:22:42 | 显示全部楼层
MARK:shock:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 15:31:23 | 显示全部楼层
12月30日 发表于 2013-12-10 11:42
能不能说下哪里错了!!谢谢

完成图2.jpg 完成图.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)就是这样了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 15:42:36 | 显示全部楼层
还有这部分
again:printf("请输入总人数n:");
        scanf("%d",&n);
        if(n<=0)
      goto again;
是判断输入的是否正确,如果不正确就goto跳转到标志again出执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 23:09:10 From FishC Mobile | 显示全部楼层
这样写试试
#include<stdio.h>
main()
{
        int temp[80],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-1]=i;
        
         
        while(j>=1)
                {
                    for(i=0;i<n;i++)
                     {
                       if(temp[i]!=0)
                         k++;                                                                         if(temp[i]!=0&&k==1&&j==1)
                          {
                                  t=temp[i];
                                  break;
                          }
                       if(k==3)
                          {
                            temp[i]=0;
                             j--;
                             k=0;
                           }
                        if(i==n)
                         i=0;
                       }
                }
        printf("%d号\n",t);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-11 15:57:49 | 显示全部楼层
52621587 发表于 2013-12-10 23:09
这样写试试
#include
main()

谢谢帮忙:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 15:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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