当前位置:首页 » 编程语言 » c语言是否有环
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言是否有环

发布时间: 2022-04-03 01:14:48

A. c语言素数环

#include"stdio.h"
int shu(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0) return 0;
return 1;
}

main()
{
int a,b,c,d,e,f;
for(a=1;a<=9&&a!=5;a+=2)
for(b=1;b<=9&&b!=5;b+=2)
for(c=1;c<=9&&c!=5;c+=2)
for(d=1;d<=9&&d!=5;d+=2)
for(e=1;e<=9&&e!=5;e+=2)
for(f=1;f<=9&&f!=5;f+=2)
{
if((shu(100000*a+10000*b+1000*c+100*d+10*e+f)==1)&&
(shu(100000*b+10000*c+1000*d+100*e+10*f+a)==1)&&
(shu(100000*c+10000*d+1000*e+100*f+10*a+b)==1)&&
(shu(100000*d+10000*e+1000*f+100*a+10*b+c)==1)&&
(shu(100000*e+10000*f+1000*a+100*b+10*c+d)==1)&&
(shu(100000*f+10000*a+1000*b+100*c+10*d+e)==1))
printf(" 最小的素数环为:%d", 100000*a+10000*b+1000*c+100*d+10*e+f);
goto loop;
}
loop:getchar();
}

B. 什么是有环的链表有什么特点怎麽用C语言创建

1、有环的链表指的是链表有环路,例如下面:
A->B->C->D->B,这样遍历的时候B->C->D->B就形成一个环路一直循环。
有环链表跟普通链表一样,只不过构造数据的时候会形成环路。

2、例程:

/*
结点1数据:VisualC++Windows
结点2数据:VisualC++6.0
结点3数据:VisualC++2010
结点4数据:C++PrimerPlus
结点5数据:Windows7
成功找到结点。
请按任意键继续...
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefstructmode{
chars[40];
//inttr;
structmode*next;
}*LinkList,*Node;
LinkListCreateList(intn){
LinkListhead;
Nodep,q;
head=p=(mode*)malloc(sizeof(structmode));
for(inti=0;i<n;i++){
q=(mode*)malloc(sizeof(structmode));
printf("结点%d数据:",i+1);
gets_s(q->s);
p->next=q;
p=q;
}
p->next=head;
returnhead;
}
boolFindNode(LinkListhead,char*s){
Nodep=head->next;
while(p!=head){
if(strcmp(s,p->s)==0)returntrue;
p=p->next;
}
returnfalse;
}
intmain(){
LinkListhead=CreateList(5);
if(FindNode(head,"Windows7"))printf("成功找到结点。 ");
elseprintf("没有找到指定数据的结点。 ");
return0;
}

C. c语言,无向图如何检测是否有环

遍历一遍,判断图分为几部分(假定为P部分,即图有 P 个连通分量)
对于每一个连通分量,如果无环则只能是树,即:边数=结点数-1
只要有一个满足 边数 > 结点数-1
原图就有环
将P个连通分量的不等式相加,就得到:
P1:E1=M1-1
P2:E2=M2-1
...
PN:EN>MN-1
所有边数(E) > 所有结点数(M) - 连通分量个数(P)
即: E + P > M 所以只要判断结果 E + P > M 就表示原图有环,否则无环.

实例代码如下:

http://www.cnblogs.com/xwdreamer/archive/2011/06/11/2297008.html

D. C语言 素数环问题

prime函数里,把条件判断x/y改为x%y
其它我没细看,有问题再告诉我吧。

E. C语言 建立一个有向图,判断该图是否存在环,如果不存在环,输出它的拓

1.拓扑排序:还有顶点未输出,但已经不存在没有前驱的顶点了2.深搜:从一个顶点出发存在搜回到自己的路径

F. 菜鸡求教C语言素数环有关问题

#include<math.h>
intmain(){
intm;//输入的整数
inti;//循环次数
intk;//m的平方根
printf("输入一个整数:");
scanf("%d",&m);
//求平方根,注意sqrt()的参数为double类型,这里要强制转换m的类型
k=(int)sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
//如果完成所有循环,那么m为素数
//注意最后一次循环,会执行i++,此时i=k+1,所以有i>k
if(i>k)
printf("%d是素数。 ",m);
else
printf("%d不是素数。 ",m);
return0;
}

G. C语言,如何判断有向图里的相同的环

/*
判断相同环的基本思路:
(1)长度相同
(2)对其中一个循环左移,次数为len-1,
如果循环左移后顺序相同,则为相同环
*/

intiMovleft(char*instr)
{
intlen;
chartmp;
if(instr==NULL)return-1;
len=strlen(instr);
tmp=instr[0];
memmove(instr,instr+1,len-1);
instr[len-1]=tmp;
instr[len]='';
return0;
}

/*
输入:如环0120只需要输入012即可,切记!!
返回:0-相等
*/
intisSame(char*str1,char*str2)
{
intlen,i,iOk;
char*tmp;//防止循环左移时修改str1的值
if(str1==NULL||str2==NULL)return-1;
if(strlen(str1)!=strlen(str2))return1;

len=strlen(str1);

//将str1值放入tmp,方便后续处理
tmp=malloc(len+1);
if(tmp==NULL)return-2;
memset(tmp,0,len+1);
strcpy(tmp,str1);

iOk=1;
for(i=0;i<len-1;++i)
{
if(iMovleft(tmp))break;
if(strcmp(tmp,str2)==0)
{
iOk=0;
break;
}
}

free(tmp);
returniOk;
}

H. C语言约瑟夫环问题

#include<stdio.h>

#defineN17//人数
#defineM11//出局人号码

voidmain()
{
inta[N],i,call_n=0,out_n=0;
for(i=0;i<N;i++)a[i]=0;
i=0;
while(1){//循环报数
if(a[i]==0){//如果健在
if(out_n==(N-1))break;//如果仅剩一人
call_n++;//报数
call_n%=M;//最大为M,到了M就从0开始
if(call_n==0){
a[i]=1;//出局标记
out_n++;
printf("%d",i+1);//显示出局人号码
}
}
i++;i%=N;//循环转向下一人
}
printf(" 最后剩余者的编号是:%d ",i+1);
}