PTA B1057.c 数零壹

t11383 2017-11-19 01:45:51



麻烦大家帮忙看一下,不知道还有什么测试点没通过,帮我优化一下,谢谢大家!
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43893389 2019-01-08
  • 打赏
  • 举报
回复
char str[100001];
chenyvye 2017-11-28
  • 打赏
  • 举报
回复
#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;
}
这是我的程序,都过了,希望能帮到你
赵4老师 2017-11-22
  • 打赏
  • 举报
回复
fgets代替gets要注意去掉最末尾的'\n'
自信男孩 2017-11-22
  • 打赏
  • 举报
回复
#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]++;
}
参考一下吧
t11383 2017-11-21
  • 打赏
  • 举报
回复
给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串“PAT (Basic)”,其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个0、4个1。 输入格式: 输入在一行中给出长度不超过105、以回车结束的字符串。 输出格式: 在一行中先后输出0的个数和1的个数,其间以空格分隔。 输入样例: PAT (Basic) 输出样例: 3 4 这是题目要求,谢谢你提的建议哦
自信男孩 2017-11-20
  • 打赏
  • 举报
回复
建议楼主贴出程序需求和测试用例。 程序可以优化的地方是太大的数组建议定义成全局变量;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧