执行以下C程序的输出是________。
# include
int total(int v)
{
static int count = 0;
while (v) {
count += v & 1;
v >>= 1;
}
return count;
}
void main()
{
static int x = 0;
int i = 5;
for (; i> 0; i--) {
x = x + total(i);
}
printf (“%d\n”, x) ;
}
(A) 23
(B) 24
(C) 26
(D) 27答案: (A)
说明:数字:5-0101、4-0100、3-0011、2-0010、1-0001
计数1s:2,3,5,6,7
总计:2 + 3 + 5 + 6 + 7 = 23
总数(i)= 23
因此,选项A是正确的
签出运行代码并附带注释:
#include
int total(int v)
{
static int count = 0;
while(v)
{
count += v&1;
v >>= 1;
}
//This count can be used to see number of 1s returned
//for every number i
//printf("%d", count);
return count;
}
void main()
{
static int x=0;
int i=5;
for(; i>0; i--)
{
//total gets added everytime with total number
//of digits in the given number i
x = x + total(i);
}
printf("%d\n", x);
}
替代解决方案:
该解决方案由parul sharma贡献
这个问题的测验