1、下面函数用于打印传入的参数,比如:
print_cpu_util(10000,"xx");
print_cpu_util(3333,"xy");
输出的效果是:
100.0 % xx
33.33 % xy
请完成下面代码空格部分
#define COL_MAX 81
void print_cpu_util(int util,char*task_name)
{
charbuf[COL_MAX];
snprintf(buf,COL_MAX,"%d.%d %% %s",util/100,util%100,task_name);
printf("%s\n",buf);
}
2、小朋友被罚抄写““这句500遍,小朋友连复制黏贴都想免掉,于是写下了下面的代码,请补齐空格部分。
int main(){
int i;
for(i=-1;i<499;i++)
{
printf("Iwill not throw paper airplanes in class. \n");
}
return 0;
}
3、以下程序运行后,输出的结果是:jim
char *id_to_name(int index)
{
char names[][10]={"bob","bill","jim","karl"};
return names[index];
}
int main(){
printf(id_to_name(2));
return 0;
}
4、以下程序运行后,输出的结果是:-9,请补齐空格处代码
int test(int arg)
{
return 0-arg;
}
int callback(int func(int),int arg)
{
return func(arg);
}
int main(){
printf("%d",callback(test,9));
return 0;
}
5、以下程序片段运行后,输出的结果是:1314
char a[]="hello world\r\n";
printf("%d%d\n",strlen(a),sizeof(a));
6、以下程序运行后,输出的结果是:12
#define INC(data) data++
int main(){
int a[]={1,2};
int *b;
INC(*b);
printf("%d%d",a[0],a[1]);
return 0;
}
7、以下程序运行后,输出的结果是:4
int main(){
struct xmsg_s
{
int type;
int msg[];
};
printf("%d",sizeof(struct xmsg_s));
return 0;
}
8、以下程序运行后,输出的结果是:123
#define printf_postfix(str) do{\
char *name;\
name= &str[3]; \
printf("%s",name);\
}while(0)
int main(){
char name1[]="abc123";
printf_postfix(name1);
return 0;
}
9、请补齐以下代码,使其输出34
#define PRINT_CLINE()printf("%d",__LINE__-6);
int main(){
PRINT_CLINE();
PRINT_CLINE();
return 0;
}
10、下面代码输出: 71
printf("%d%d",sizeof("\x01\x0\x0\x0\x0\x0"),strlen("\x01\x0\x0\x0\x0\x0"));
11、枚举类型定义,多个标识符用 逗号 运算符间隔。
12、IEEE规定MAC地址的第一个bit(LSB)等于1,表示组播地址,否则为单播。
那么请写一个宏定义用于判断传入的6字节mac地址是否是组播地址:
#define IS_MCAST(mac) (mac[0]&1)==0?0:1
并使下面测试代码输出:10
int main(){
printf("%d%d",IS_MCAST("\x01\x0\x0\x0\x0\x0"),IS_MCAST("\xfe\xff\xff\xff\xff\xff"));
return 0;
}
13、
#define BITS_PER_LONG (sizeof(long)*8)
#define BIT_WORD(nbits) (nbits/BITS_PER_LONG)
#define BITMAP_FIRST_WORD_MASK(start)(~0ul<<((start)%BITS_PER_LONG))
#define BITMAP_LAST_WORD_MASK(nbits) \
(((nbits)%BITS_PER_LONG) ?(1ul<<((nbits)%BITS_PER_LONG))-1:~0ul)
void bitmap_set(unsigned long *map,intstart,int nbits)
{
unsigned long *p;
const int size =start +nbits;
int bits_to_set;
unsigned long mask_to_set;
p=map+BIT_WORD(start);
bits_to_set=BITS_PER_LONG-start;
mask_to_set=BITMAP_FIRST_WORD_MASK(start);
while(nbits-bits_to_set>=0)
{
printf("%x%x %d %d\n",*p,mask_to_set,bits_to_set,nbits);
*p|=mask_to_set;
nbits-=bits_to_set;
bits_to_set=BITS_PER_LONG;
mask_to_set=~0ul;
p++;
}
if(nbits)
{
mask_to_set=BITMAP_LAST_WORD_MASK(nbits);
*p|=mask_to_set;
}
}
使下面测试代码,在32位x86机器上运行结果是:c0000000 000000ff 00000000
int main(){
unsigned long bitmap[3];
memset(bitmap,0,sizeof(bitmap));
bitmap_set(bitmap,30,10);
printf("%x%x %x",bitmap[0],bitmap[1],bitmap[2]);
return 0;
}