69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
int main(void)
{
int s,l=0,y=0;
char c;
do
{
scanf("%c",&c);
if ((c>='a')&&(c<='z')) s+=c-96;
if ((c>='A')&&(c<='Z')) s+=c-64;
}while(c!='\n');
while(s!=0)
{
if(s%2==0) l++;
else y++;
s=s/2;
}
printf("%d %d\n",l,y);
return 0;
}
这是我的程序,都过了,希望能帮到你#include<stdio.h>
#include<string.h>
#include <ctype.h>
#define MAX_STR_LEN 128
int get_char_value(const char *str, int len);
void count_bits(unsigned int num, int *arr);
int main()
{
char str[MAX_STR_LEN];
int bits[2] = {0};
int val;
fgets(str, MAX_STR_LEN, stdin);
val = get_char_value(str, strlen(str));
printf("val = %d\n", val);
count_bits(val, bits);
printf("0: %d, 1: %d\n", bits[0], bits[1]);
return 0;
}
int get_char_value(const char *str, int len)
{
int i = 0, sum = 0;
while (i < len) {
if (islower(str[i]))
sum += str[i] - 'a' + 1;
else if (isupper(str[i]))
sum += str[i] - 'A' + 1;
i++;
}
return sum;
}
void count_bits(unsigned int num, int *arr)
{
int i = 31;
while (i > 0 && (num & (1<<i)) == 0)
i--;
arr[1]++;
for (; i > 0; i--)
if ((num & (1 << i)))
arr[1]++;
else
arr[0]++;
}
参考一下吧