c语言算法问题解释一下圈出的地方

2020-11-25 11:10:50 字数 5494 阅读 2538

1楼:祜风

第一句:读入输入数据temp

第二句:统计temp输入的个数,b[temp]记录的是temp的个数,每多一个,就自加一次

第三句:记录出现次数最多的temp的次数

2楼:听不清啊

读入一个整数,再给该数的计数加1。如计数比最多的数还多,就更新最多数。

c语言 3个人围成一圈报数问题,报道3的人出圈,劳烦各位解释一下,下面的程呗

3楼:bbk临兵

就是将每一个人的信息保存在二维数组的一个维中。每个人的信息包含2部分,一部分是他的编号(即最开始他站的位置,作为二维数组的第一维),另一部分就是他是否还在圈中的标记(1表示在,0表示不在)。

index变量就是用来遍历每一个人的。array[index]就是编号为index的一个人。array[index][1]就是编号为index的人的状态(是否还在圈中)。

count用于记录圈中的当前人数。

当圈中还有1个人以上时,就用if(array[index][1]==1)找到一个还在圈中的人,得到他的index,他报数,temp就加1,当temp为3时,表示这个人报的是3,将他出圈(array[index][1]=0

),将圈中人数减1(count--),并将temp置0,剩下的人重新从1开始报数。index=(index+1+n)%n语句找到下一个人,然后接着循环判断这个人是不是在圈中。。。如此反复。

但是你这个程序似乎没有对出圈顺序进行输出。

c语言出圈问题

4楼:匿名用户

首先理解题意

设有n个人围坐一圈并按顺时针方向从1到n编号。

从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。

现要求按出圈次序,给出这n个人的顺序表p。

木易版答案:

void josegh(void)

{ int i,j,s1,w;

s1=s;

for(i=1; i<=n; i++)

p[i-1]=i;

for(i=n; i>=2; i--)

{ s1=(s1+m-1)%i;

if(s1==0) s1=i;

w=p[s1-1];

for(j=s1; j=2; i--),找出出圈人的“编号”s1。

对应的算法是通过求余得到的!s1=(s1+m-1)%i;

③将刚出圈人的编号先寄存在暂存变量中。

④将刚出圈的人之后至原队列最后一个未出圈的人依次在数组中前移一位。对应的**是:for(j=s1; j=0; i--)

形式二:

第1个出圈的编号存放在p[0]中,第2个出圈的编号存放在p[1]中,直至第n个出圈的编号存放在p[n-1]中。

对应的void writedat(void) 函数中的循环语句是for(i = 0 ; i <= n - 1 ; i++)

上面答案是形式一的答案。

若遇到形式二,考生须在原有答案的基础上再增加两个循环以使循序颠倒过来!

for(i=0,j=n-1;i=0;i++,j--) /*也可改为for(i=0,j=n-1;i

q[j]=p[i];

for(i=0;i

p[i]=q[i];

②由于求余的作用,当报数人正好到最后一个人时s1为0,故要有if(s1==0) s1=i;

③根据题意,开始时莫忘设置s1=s;

c语言问题求解如图谢谢 迭代算法 能帮忙解释一下每行程序吗

5楼:

#include

int str_find_right(char s[ ], char x)

int main()

c语言插入数据算法。谁能帮我解释一下每行都是什么意思。越详细越好。

6楼:

#include "stdio.h"

#define maxlen 100

typedef structseq; //定义一个数据结构

int sqlempty(seq *l) //判断数组是否满

void sqlinsert(seq *l,int i,int x) //插入运算

else if(i<1||(i>l->last+2)) //i代表插入位置,不能小于1也不能比数组长度+1大

else

for(i=0;ilast+1;i++) //输出所有元素

printf("%d ",l->data[i]);

}main()

c语言求高手告诉一种循环赛问题的算法并解释一下

7楼:乱de步

char game(int r,int n)

因为你的题

目要求不明确,所以把算法给你,你自己再题目要求写个main函数调用算法就行了

8楼:匿名用户

最简单的枚举,但当数字太大就要超时了

给我解释一下c语言递归函数?

9楼:匿名用户

递归算法:是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

递归算法的特点

递归过程一般通过函数或子过程来实现。

递归算法:在函数或子过程的内部,直接或者间接地调用自己的算法。

递归算法的实质:是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。

递归算法解决问题的特点:

(1) 递归就是在过程或函数里调用自身。

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

递归算法所体现的“重复”一般有三个要求:

一是每次调用在规模上都有所缩小(通常是减半);

二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);

三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。 例子如下:

描述:把一个整数按n(2<=n<=20)进制表示出来,并保存在给定字符串中。比如121用二进制表示得到结果为:“1111001”。

参数说明:s: 保存转换后得到的结果。

n: 待转换的整数。

b: n进制(2<=n<=20)

void

numbconv(char *s, int n, int b)

/* figure out first n-1 digits */

numbconv(s, n/b, b);

/* add last digit */

len = strlen(s);

s[len] = "0123456789abcdefghijklmnopqrstuvwxyz"[n%b];

s[len+1] = '\0';

}void

main(void)

exit(0);}

10楼:匿名用户

额,抽象的说就是解决一个问题时重复使用一个动作,那么就可以用递归的方式来解决,告诉电脑重复做这个动作就行.结合看一些递归算法的简单程序,应该好懂些.

11楼:申冰洁隐祺

分析一下fac()是如何执行的。假设读入的n=3。

首先,main()函数中的y=fac(3),引起第1次函数调用。进入函数后实参n=3,应执行计算3*fac(2)

为了计算fac(2),引起对fac()函数的第2次调用(递归调用),重新进入函数fac(),实参n=2,应执行计算2*fac(1)。

为了计算fac(1),引起对函数fac()的第3次调用(递归调用),重新进入函数,实参n=1,应执行计算1*fac(0)。

为了计算叫fac(0),引起对函数fac()的第4次调用(递归调用),重新进入函数,实参n=0,此时执行f=1和return(f),完成第4次调用,回送结果fac(0)=1,返回到第3次调用层。

计算执行f=1*fac(0)和return(f),完成第3次调用,回送结果fac(1)=1

返回到第2次调用层。

计算执行f=2*fac(1)和return(f)。完成第2次调用,回送结果fac(2)=2,返回到第1次调用层。

计算执行f=3*fac(2)和return(f).完成第1次调用,回送结果fac(3)=6,返回到土函数。

12楼:匿名用户

先看看下面的例子:

void fun(int i)

printf("%d\n",i);

}intmain()

后如下:好理解

了吧void fun(int i)

printf("%d\n",i/4);

}printf("%d\n",i/2);

}printf("%d\n",i);

}这样一展开,是不是清晰多了

c语言一个算法问题,有**说明和文字说明 20

13楼:匿名用户

#include

typedefunsignedlonguint32;

uint32getbit(uint32number,uint32bit)

{return(number&(0x0001<运行结果:

14楼:匿名用户

#include

intmain();

intn;

scanf("%d",&n);

printf("第%d个二进制的值是%d\n",n,a[(n-1)>>5]>>(32-(n%32))&1);

return0;}

c语言经典递归法算法的疑问:(必须用递归算法做出来哦) 题目请看问题补充

15楼:匿名用户

#include

int jos(int n, int k); // n表示总共有多少人, k表示报数的第几个数退出

int main(void)

int jos(int n,int k)

return x;}/*

请输入总人数和间隔数(中间以空格隔开)

37 5

获胜者是:1

press any key to continue*/

谁能解释一下这个程序C,谁能帮忙详细解释一下这个C语言程序~~要详细的哦~

1楼 匿名用户 p int malloc sizeof int 申请一段大小为sizeof int 的空间 并把该段空间的起始地址赋值给p fut int s int p 2 3 参数s定义为类型int 即指向指针类型的指针 或者叫二级指针用 s就是对其元素进行赋值 2楼 帅的都想毁容 p int ...

谁能用最通俗易懂的语言解释一下“唯识”

1楼 匿名用户 所谓 唯识学 ,就是佛认为,太阳只是众生心识中的幻相 ,如果您大量吃安眠药成为植物人那么太阳就不存在了。这是不是对唯识学的最简单的诠释 2楼 匿名用户 发现 唯识 总被提到, 3楼 匿名用户 发现佛学太阳春白雪加唧唧歪歪了 4楼 匿名用户 来了这两天,我都成了糊都糊都酱紫了 谁能用通...

哪位能用通俗的语言解释一下超越数的意思

1楼 匿名用户 简单说来,不能表示成任何一个整系数多项式方程的根的实数就是超越数。 实数可以分为代数数和超越数,代数数都是某个整系数多项式方程 类似x n ax n 1 b 0,所有系数都是整数 的根。不管它多复杂,只要满足这个条件就是代数数。 例如, 5 5 是代数数。因为设x 5 5 ,那么x ...