c语言 报数 算法-请各位前辈看一下我这个程序错在哪里

问题描述

请各位前辈看一下我这个程序错在哪里

这个程序是一组人循环报数,报到3的退出,求最后剩下的那个人是第几号,改了好多次都调试不成功。所以来请教各位前辈们。谢谢。
//报数,报到3的退出,求最后剩下的成员序数

#include

void function(int *a, int n)
{
int i = 0, k = 1;

while (n > 1)
{
    while (1)
    {
        if ( (a[i] != '') && (k != 3) && (a[i] != 0) )
        {
            i++;
            k++;
        }//end-if
        else break;
    }//end-while

    if (a[i] == '') i = 0;
    else if (a[i] == n+1) i++;
         else if (k == 3)
              {
                  a[i] = n;
                  k = 1;
                  i++;
                  n--;
              }
}

}

/*-----------------------------------------------------------*/
int main(void)
{
int a[100];
int i, n;

printf("amount : ");
scanf("%d", &n);

for (i = 0; i < n; i++)  a[i] = 1;

function(a, n);

for (i = 0; i < n; i++)
{
    printf("The remaining amount is %d.n", a[i]);
}

return 0;

}


解决方案

看不明白 你写的程序不对 
for (i = 0; i < n; i++) a[i] = 1; 这个是数组里面全是1,成员全是1,后面在用的时候就不明白了 
你可以直接写一个循环 让=3的a【i】的后面的往前提(for 循环 镶嵌 ) 我想到的是这些 你试试吧

解决方案二:

看不懂你的想法。
想了一个方法。写出一个结构
struct person{
int num; //表示自己报的数
bool islive; //表示自己是否还活着,默认true,数到数字含3的都设置成false
}
int Lastnum = 1; //从1开始数 每次数到一个不含3的数,都修改Lastnum值为新值

bool check( person * p ){ …… } 定义方法检测 是否所有person 的islive 都是false,若是return true,否则 return false;

只有的那个check返回true时候,Lastnum的值是你要的值

解决方案三:

void function(int *a, int n)
{
int i = 0, k = 1;

while (n > 1)
{
while (1)
{
if ( (a[i] != '') && (k != 3) && (a[i] != 0) )
{
i++;
k++;
}//end-if
else break;
}//end-while

if (a[i] == '') i = 0;
else if (a[i] == n+1) i++;
     else if (k == 3)
          {
              a[i] = n;
              k = 1;
              i++;
              n--;
          }

}
}
void main()
{
int a[100];
int i, n;

printf("amount : n");
scanf("%d", &n);

for (i = 0; i < n; i++)  a[i] = 1;

function(a, n);

for (i = 0; i < n; i++)
{
    printf("The remaining amount is %d.n", a[i]);
}

}
我并不知道你的程序运算出来的结果是否正确,这个能运行


解决方案四:

http://blog.csdn.net/xianfajushi/article/details/24846979

时间: 2024-08-04 05:55:06

c语言 报数 算法-请各位前辈看一下我这个程序错在哪里的相关文章

请各位大虾,看一下我的程序错在哪儿? 不能运行呀,急呀, 我刚自学asp.net

问题描述 <%@PageLanguage="VB"Debug="true"%><scriptrunat="server">subpage_load(senderasobject,easeventargs)dimrowasinteger=0dimrownumasinteger=convert.toint32(rows.value)dimcellnumasinteger=convert.toint32(cols.value)d

C语言 计算器问题(请大神看一下)

问题描述 C语言 计算器问题(请大神看一下) 123+213-67*34+345/23*45*(34+34-345+245+567)=359 183 可我的程序等于-363067 代码如下 #include#include#include#define MAXZISE 1000struct oper{ char name; int priority; int opnum;};typedef struct oper OPERATOR;OPERATOR opStack[MAXZISE];int OT

代码-麻烦各位前辈看一下我这个C语言程序,找不出错误。

问题描述 麻烦各位前辈看一下我这个C语言程序,找不出错误. 我要对一个数组的数字进行排序,代码是这样的: //声明:该程序中输入的数据不能重复! #include int imin(const int va[], int n) // find the min of va[] { int i, min; min = va[0]; for (i = 0; i < n; i++) { if (min > va[i]) min = va[i]; } return min; } int imax(con

c语言-C语言寻找矩阵鞍点问题麻烦看看我的算法哪里有问题

问题描述 C语言寻找矩阵鞍点问题麻烦看看我的算法哪里有问题 我写了个算法,但是不知道为什么运行不出结果. 麻烦看看我的算法错在了哪里(请不要更换我的算法). 解决方案 /*寻找行里面最大的值所在列,找到后再看该元素是不是所在列的最小值,如果是则找到,否则下一行接着找,弱到最后一行都没有则没有鞍点*/ for(i = 0; i < n; i++) { max = a[i][0]; //记录行里面的最大值 column = 0; //记录行最大值所在列号 //找行最大值的列号 for(j = 1;

c语言-请高手看一段C程序代码不知道哪里出错了

问题描述 请高手看一段C程序代码不知道哪里出错了 解决方案 另外printf你又拼错了. 解决方案二: 第14行 应为printf 解决方案三: 你的那个所谓的山寨编译器,也不知道有没有windows.h,估计没有. 建议你使用VC++ 解决方案四: 这本书其实我也看过,作者自己做了一个所谓的开发环境,其实用的是GNU C++,它并不包含windows的api函数的头和库. 解决方案五: 出错信息呢,贴出来呗 解决方案六: 你第14行的 printf 写错了 解决方案七: 第14行的printf

c语言扫雷算法有问题求助

问题描述 c语言扫雷算法有问题求助 自己写了个控制台的扫雷 输入坐标然后显示地图 但是输入某些坐标的时候卡住不动了 不知道是陷入死循环还是什么问题 求大神解答 已考虑无雷区自动翻开的死循环 可能是双击时陷入死循环 但看不出是不是这个问题 不知道怎么修改代码 #include #include #include #include #define len 20 //边数 int mine[len+2][len+2] = {0}; //+2是为了在计算周围一圈雷数时不必分四周顶点边界区域,不越界 in

百度新推出绿萝算法 站长们怎么看

想必大家都看到了百度新推出的绿萝算法公告,从公告上看,百度之所以绿萝算法上线,是为了进一步打击买卖链接行为.而对于百度新推出的绿萝算法,各位站长们是怎么看的呢? 百度新推出绿萝算法 站长们怎么看 北京站长:我觉得百度新推出绿萝算法还是不错的,因为最大的好处,其实可以大大降低那些垃圾的信息.网络中很多的垃圾的信息,对于网民来说是非常不符合用户体验的,对于百度这一做法,是为了提高用户体验度,以增强大家对网络的信赖度,而且,对于网站来说,用户才是真正的上帝,seo的最终目的说白了就是为了让更多的用户来

验证码-c语言,学生信息管理系统。看不懂错误提示??

问题描述 c语言,学生信息管理系统.看不懂错误提示?? #include #include #include #include #include #define N 100 typedef struct student { int num; //学号,姓名,年龄,性别,出生年月,地址,电话, char name[18]; char sex; int age; int y, m; int tel; char add[30]; char mail[20]; int res; int stu; } S

C语言--有木有大神帮帮看看我的折半法代码,已经自己研究了好长时间,还是弄不出来???

问题描述 C语言--有木有大神帮帮看看我的折半法代码,已经自己研究了好长时间,还是弄不出来??? #include #include #define M 3 void inputName(char name[][121],double money[]); void ouput(char name[][121],double money[]); void sortPay(char name[][121],double money[]); void sortName(char name[][121]