小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗? 输入 第一行输入一个整数N,表示测试数据的组数(1<N<1000) 每组测试数据只有一行,是一个整数M(

#include<stdio.h>

int main()

{

int n;

int m;

int i;

int num=0;

int a[32];

scanf("%d",&n);

while(n--)

{

scanf("%d",&m);

i=-1;

while(m!=0)

{

i++;

a[i]=m%2;

m=m/2;

}

num=0;

for(;i>-1;i--)

{

//    printf("%d",a[i]);

if(a[i]==1)

{

num++;

}

}

/*for(;i>-1;i--)

{

//    num=0;

if(a[i]==1)

{

num++;

}

}*/

printf("%d\n",num);

}

return 0;

}

时间: 2024-12-23 11:58:47

小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗? 输入 第一行输入一个整数N,表示测试数据的组数(1<N<1000) 每组测试数据只有一行,是一个整数M(的相关文章

公约数和公倍数 描述 小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。 输入第一行输入一个整数n(0&lt;n&lt;=10000),表示有n组测试数据; 随后的n行输入两个整数i,j(0&lt;i,j&lt;=32767)。输出输出每组测试数据的最大公约数和最小公倍数

#include <stdio.h>int main() { int n,i,j,a,b,t,k; scanf("%d",&n); for(k=0;k<n;k++) { scanf("%d %d",&i,&j); a=i,b=j; if(b%a==0) printf("%d %d\n",a,i*j/a); else{ for(t=1;t!=0;) { t=a%b; a=b; b=t; } printf(&

描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。 输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。 输出 对于每组输入数据,输出一行,字符中间用一个空格分开。

#include<stdio.h>#include<string.h>int main() { int N; int i,j,t; char a[4]; char m; scanf("%d",&N); getchar(); while(N--) { gets(a); j=strlen(a); for(i=0;i<j;i++) { for(t=0;t<j-1-i;t++) { if(a[t]>a[t+1]) { m=a[t]; a[t]=

ACM 4描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,

#include<stdio.h> #include<string.h> int main() { int n; int i,j; char a[4]; int t; char m; scanf("%d",&n);getchar(); while(n--) { gets(a); j=strlen(a); for(i=0;i<j;i++) { for(t=0;t<j-1-i;t++) { if(a[t]>a[t+1]) { m=a[t];

描述 有一个整型偶数n(2&lt;= n &lt;=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出。 输入 第一行有一个整数i(2&lt;=i&lt;30)表示有 i 组测试数据; 每组有一个整型偶数n。 输出 第一行输出所有的奇数 第二行输出所有的偶数

#include<stdio.h>int main( ) { int i,n,q,p; scanf("%d",&i); while(i--) { scanf("%d",&n); for(q=1;q<n;q+=2) printf("%d ",q); printf("\n"); for(p=2;p<=n;p+=2) printf("%d ",p); printf(&quo

ACM457现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。输入 第一行只有一个整数m(m&lt;=10),表示测试数据组数。

#include<stdio.h> #include<string.h> int main() { int n; int i,j; char a[102]; scanf("%d",&n); getchar(); while(n--) { gets(a); j=strlen(a); for(i=0;i<j;i++) { if(a[i]>=65 && a[i]<=90) { a[i]=a[i]+32; } else { a[

刚学java的小白想问个关于读取键盘输入数字的问题

import java.util.*; public class Main { public static void main(String[] args) { Main main= new Main(); Menu start = new Menu(); main.checkId(); System.out.println("欢迎.."); Scanner sc = new Scanner(System.in); int select = sc.nextInt(); switch(s

当确定输入组数,不确定每组输入个数时的输入处理 (C代码)

int main() 46 { 47 int T; 48 for(scanf("%d ",&T);T;T--) 49 { 50 n=0; 51 char ch; 52 while((ch=getchar())!='\n') 53 { 54 if(ch==' ') 55 continue; 56 a[n++]=ch-'0'; 57 } 58 return 0; 64 }

c编程:输入一个数字n,则n代表n行,每行输入2个数字a,b计算每行的a+b问题。

输入 第一行输入要计算的数据组数 n 接下来的 n 行,每行包含两个数a和b 输出 每行输出一组数据中a+b的值 样例输入 2 1 2 4 0 样例输出 3 4 代码: #include<stdio.h> int main() { int n; int i,j;//循环变量i,j int a,b;//每行的两个整数a,b int sum[10]={0};//存储每行的和a+b scanf("%d",&n); for(i=0;i<n;++i) { scanf(&

(小说)那些年,那些事——一个程序员的奋斗史

转自:http://blog.csdn.net/x283930450/article/details/9072223 第01章    段伏枥,一个瘦小,矮小,根本和“帅”这个字粘不上任何关系的普通人 .名字的来源在于其多读了几年书的老爹,总抱着有一天要出书出名乃至于名流千古的 美好理想,但可惜现实总是给予他无情的而又现实的打击,于是就将理想寄望于自己的 儿子,起了个“伏枥”的名,寓意为“老骥伏枥,志在千里”,表达自己不到黄河不死 心的良好的愿望.     只可惜段伏枥这家伙完美地遗传了来自于老爹