执行以下 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) ;
}
(一) 23
(乙) 24
(三) 26
(四) 27答案:(一)
说明:数字:5-0101、4-0100、3-0011、2-0010、1-0001
计数 1 : 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 提供
这个问题的测验