一,写程序
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。。n保证是int范围内的一个整数。
-
student. a am I I'm a Freshman and I like JOBDU!
-
I am a student. JOBDU! like I and Freshman a I'm
#include <stdio.h>
#include <stdlib.h>
static int getnum(int src)
{
int n=0;
for(int i=0;i<32;i++)
{
if(src & 0x01 == 1)
{
n++;
}
src=src>>1;
}
return n;
}
int main() //main()函数不可以是static
{
int n,i,test;
while(scanf("%d",&n) != EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&test);
int m = getnum(test);
printf("%d\n",m);
}
}
return 0;
}
二,一个句子按照单词反转
-
样例输入:
-
样例输出:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int strlen_chr(char *src)
{
int j=0;
while(*(src+j) != '\0')
{
j++;
}
return j;
}
int main()
{
char src[50000];
char out[50000];
scanf("%[^\n]",src);
int i;
int j=0;
if(src == NULL)
{
return 0;
}
int len=strlen_chr(src);
*(src+len) = '\0';
i = len;
while(i >0)
{
char temp[30];
int h = 0;
while((*(src+i-1) != ' ') &&(i>0))
{
*(temp+h)=*(src+i-1);
h++;
i--;
}
*(temp+h)='\0';
int len_temp=strlen_chr(temp);
int g=len_temp;
while(g>0)
{
out[j]=*(temp+g-1);
j++;
g--;
}
while((*(src+i-1) == ' ')&&(i>0))
{
out[j]=*(src+i-1);
j++;
i--;
}
out[j]='\0';
}
printf("%s\n",out);
return 0;
}