帮忙修改一个C++程序,求给定的十进制整数N对应的2进制数中1的个数,附加要求如下:

输入:第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数。输出:N行,每行输出对应一个输入。#include<stdio.h>#include<std... 输入:第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数。输出:N行,每行输出对应一个输入。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,x;
char s[33];
scanf("%d", &n );
itoa( n, s, 2 );
x=0;
for( i=0;s[i];i++ )
if ( s[i]=='1' )
x++;
printf("%d\n", x );
return 0;
}
展开
 我来答
White_MouseYBZ
2016-10-05 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6517万
展开全部
#include "stdio.h"
#include "stdlib.h"
int main(void){
    int i,j,x,N,*p;
    char s[33];
    printf("Input N(int 0<N)...\nN=");
    if(scanf("%d",&N) && N>0){
        if(((p=(int *)malloc(sizeof(int)*N))==NULL)){
            printf("Application memory failure...\n");
            exit(0);
        }
        for(i=0;i<N;scanf("%d",p+i++));
        printf("\n");
        for(i=0;i<N;i++){
            itoa(p[i],s,2);
            for(x=j=0;s[j];x+=s[j++]-'0');
            printf("%d\n", x );
        }
        free(p);
    }
    else
        printf("Input error, the program exits.\n");
    return 0;
}
百度网友2018359
2016-10-05 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1417万
展开全部
	int i=0,n;
scanf("%d",&n);
int *s=(int*)malloc(sizeof(int)*n);
for(i=1;i<=n;i++)
{
scanf("%d",&s[i-1]);
}
for(i=0;i<n;i++)
{
int count=0;
while(s[i]>0)
{
if(s[i]%2!=0) //是否是奇数,是,表示末尾位为1
{
count++;
}
s[i]=s[i]>>1; //向右移一位
}
printf("\n%d",count);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
速冻族人
推荐于2017-10-21 · TA获得超过108个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:94.1万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,i,x=0,num=0;
scanf("%d", &N );
int input[N];//如果编译器支持变长数组用这个,不支持替换成 int input[512];
for(i=0;i<=N-1;++i){
scanf("%d",&input[i]);
}
for( i=0;i<=N-1;++i ){
x=input[i];
num=0;
while(x){
x=x&(x-1);
num++;
}
printf("%d\n", num);
}
return 0;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dreaming追梦
2016-10-05 · TA获得超过586个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:298万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,num,i,j,count=0;
    char s[33];
    int result[30];
    scanf("%d", &n );
    for (i = 0; i < n; ++i)
    {
        scanf("%d",&num);
        itoa(num,s,2);
        for(j = 0; s[j] != '\0'; j++)
        {
            if(s[j] == '1') count++;
        }
        result[i] = count;
        count = 0;
    }
    for(i = 0; i < n; i++)
    {
        printf("%d\n",result[i]);
    }
    return 0;
}
追问
我试了下你的代码,但是存在编译错误如下:
In function ‘int main()’:
error: ‘itoa’ was not declared in this scope
itoa(num,s,2);

怎么修改?
追答
那就不要用itoa了,itoa不标准,直接除2算二进制好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-10-21
展开全部
源代码

语言: G++ 用户名: 12345678lyy 题号: 1037

#include <iostream>
using namespace std;
float power(float a,int n)
{
if (n==1)return a;
else return a*=power(a,n-1);
}
int main()
{
float a;
int n;
cin>>a>>n;
float i=power(a,n);
cout<<<<i<<endl;
cout<<n<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式