有点不懂memset函数的用法,下面这个程序里memset起了什么作用

输入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;
}

第1个回答  2018-03-31
memset(flag,0,sizeof(flag)); //初始化flag数组, 全部元素置为0本回答被网友采纳
相似回答