每天一题(牛客网)做会一百道题不如做透一道题,不怕百招会就怕一招绝!!!

前言:成功没有快车道,幸福没有高速路。所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持,今天小编带大家做一道关于C语言的题(题目来源牛客),内容精华(gets()函数和getchar()函数)相信大家咱看完,都有不小的收获!!

作者:旧梦拾遗186

专栏:C语言编程----小比特成长日记

每天一题(牛客网)做会一百道题不如做透一道题,不怕百招会就怕一招绝!!!_第1张图片 

 

每日励志:

成功没有快车道,幸福没有高速路。所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持 

目录

一.试题名称:

二.试题题目:

a)题目描述:

b)输入描述:

c)输出描述:

d) 示例1

三.解决方法:

解法1(一个字符一个字符的输入):

a)代码:

b1)结果

b2)结果:

解法2(输入字符串):

a)代码:

 b)结果:


一.试题名称:

竞选社长

二.试题题目:

a)题目描述:

假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.

b)输入描述:

一行,字符序列,包含A或B,输入以字符0结束。

c)输出描述:

一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。

d) 示例1

输入:

ABBABBAAB0

输出:

B

三.解决方法:

本题的解题思路大致是通过定义变量充当(计数器 ),在通过循环语句判断语句改变计数器的值,最后通过计数器的值判断'A'和'B',谁出现的次数多

输入时有两种做法,一种是一个字符一个字符的输入,一种是一串字符的输入。

解法1(一个字符一个字符的输入):

a)代码:

#include
int main()
{
    
    int ch=0;
    int c=0;
    int b=0;
    while(((ch=getchar())!='0')&&(ch!=EOF))
    {
        if(ch=='A')
        {
            c++;
        }
        if(ch=='B')
        {
            b++;
        }
    }
    if(c>b)
    {
        printf("A");
    }
    else if(b>c)
    {
        printf("B");
    }
    else{
        printf("E");
    }
    return 0;
}

注意:

每天一题(牛客网)做会一百道题不如做透一道题,不怕百招会就怕一招绝!!!_第2张图片

这里的getchar()1.读取的是字符。

                          2.返回的是字符的ascii值,不会超过一个字节

                          通过百度了解一下ascii值

ASCII它是一种7位编码,但它存放时必须占全一个字节,也即占用8位。 ASCII编码是由美国国家标准委员会制定的一种包括数字、字母、通用符号、控制符号在内的字符编码集。

                          3.读取失败会返回EOF--->-1(int 型)  

                          4.这里getchar()的返回值理论上可以是int型也可以是char型,但是当读取失败                             时会返回-1所以返回int型更合理

b1)结果

通过判断语句如果字符'A'的计数器>字符'B'的计数器,则字符'A'的数量多于字符'B',输出字符'A',反之亦然,若计数器相等输出字符'E'。

或者:

#include
int main()
{
    
    int ch=0;
    int count=0;
    while(((ch=getchar())!='0')&&(ch!=EOF))
    {
        if(ch=='A')
        {
            count++;
        }
        if(ch=='B')
        {
            count--;
        }
    }
    if(count>0)
    {
        printf("A");
    }
    else if(count<0)
    {
        printf("B");
    }
    else{
        printf("E");
    }
    return 0;
}

b2)结果:

通过判断语句如果计数器>0,则字符'A'的数量多于字符'B',输出字符'A',反之亦然,若计数器等于零输出字符'E'。

解法2(输入字符串):

a)代码:

#include
int main()
{
    
    char str[100]={0};
    gets(str);
    int count=0;
    int i=0;
    while(str[i]!='0')
    {
        if(str[i]=='A')
        {
            count++;
        }
        if(str[i]=='B')
        {
            count--;
        }
        i++;
    }
    if(count>0)
    {
        printf("A");
    }
    else if(count<0)
    {
        printf("B");
    }
    else{
        printf("E");
    }
    return 0;
}

注意:1.这里的get()接收的是地址

         2.先用gets()接收你要输入的字符串,注意字符串要存到数组中,并将数组名当作地址传给get()函数。

每天一题(牛客网)做会一百道题不如做透一道题,不怕百招会就怕一招绝!!!_第3张图片

 b)结果:

通过判断语句如果计数器>0,则字符'A'的数量多于字符'B',输出字符'A',反之亦然,若计数器等于零输出字符'E'。

每天一题(牛客网)做会一百道题不如做透一道题,不怕百招会就怕一招绝!!!_第4张图片

今天小编带大家做了一道c语言的题目,相信看完的小伙伴都有自己的收获,如果大家觉得小编写的不错,希望三连加关注哦,小编会继续努力,推出优质博文。 

你可能感兴趣的:(C语言刷题巩固与提升,大数据,开发语言,c语言,编辑器,青少年编程)