有点不懂memset函数的用法,下面这个程序里memset起了什么作用
输入ZIML,不断另L=(Z*I+L)%M,直到L的值回到最初输入的值,统计循环次数#include<stdio.h>#include<string.h>constint...
输入ZIML,不断另L=(Z*I+L)%M,直到L 的值回到最初输入的值,统计循环次数
#include <stdio.h>
#include <string.h>
const int N = 10010;
int flag[N];
int main()
{
int Z,L,I,M;
int cas = 1;
while(scanf("%d%d%d%d",&Z,&I,&M,&L) != EOF) {
if(Z==0 && L==0 && I==0 && M==0)
break;
memset(flag,0,sizeof(flag)); /////////////////这边的memset不懂
int cut = 0;
int tmp = L;
while( ++cut )
{
tmp = (Z * tmp + I) % M;
flag[tmp]++; ////////////////////
if(flag[tmp]==2) //////////////////为什么到这里可以退出循环
break;
}
printf("Case %d: %d\n",cas++,cut-1);
}
return 0;
} 展开
#include <stdio.h>
#include <string.h>
const int N = 10010;
int flag[N];
int main()
{
int Z,L,I,M;
int cas = 1;
while(scanf("%d%d%d%d",&Z,&I,&M,&L) != EOF) {
if(Z==0 && L==0 && I==0 && M==0)
break;
memset(flag,0,sizeof(flag)); /////////////////这边的memset不懂
int cut = 0;
int tmp = L;
while( ++cut )
{
tmp = (Z * tmp + I) % M;
flag[tmp]++; ////////////////////
if(flag[tmp]==2) //////////////////为什么到这里可以退出循环
break;
}
printf("Case %d: %d\n",cas++,cut-1);
}
return 0;
} 展开
2018-03-31
展开全部
memset(flag,0,sizeof(flag)); //初始化flag数组, 全部元素置为0
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询