今天去面试碰到个这样的题
提供100个字节空间,往里面存数据,如果7位都是0,就结束,然后以字符形式输出里面的内容
他说要用2个计数器 一个到7了再回到1 一个磊加
大侠们帮忙看看啊!
[解决办法]
int filldata(void){ char *buf[100]; int zc = 0; int i; char c; for(i=0; i<100; ++i) { c = rand()&255;/* 或者自己输入数字 */ buf[i] = c; if((0==c) { if(++zc>=7) { break; } } else { zc = 0; } }}
[解决办法]
int fuck(void)
{
char *buf[100];
int zc = 0;
int i, j;
char c;
for(i = 0; i < 100; i++){
c = rand() & 255;
buf[i] = c;
for(j = 0; j < 8; j++){
if((buf[i] & 0x1) == 0){
if(++zc == 7){
break;
}
}
else{
zc = 0;
}
}
if(j < 8){
break;
}
}
return 0;
}
[解决办法]
他那个7位是不是bit的意思?看看这么写对不?
void filldata(){ char array[100]; int *a; int zeronum=0; int c; int i; int len=0; while(len<100){ c=rand()%128; a=&c; for(i=0;i<8;i++){ if((*a>>i&1)==0) zeronum++; if((*a>>i&1)!=0) zeronum=0; if(zeronum>=7){ array[len]='\0'; goto result;} } array[len]=(char)*a; ++len; }result: cout<<array<<endl; }