牛客网C基础题目练习1

目录

题目1:竞选社长

题目2:最高分数

题目3:判断是元音还是辅音

题目4:判断是不是字母

题目5:字母大小写转换

题目1:竞选社长

💭法1:使用字符串数组

代码实现:

int main()
{
    char arr[100]={0};
    scanf("%s",arr);
    int count1 = 0;
    int count2 = 0;
    int sz = sizeof(arr)/sizeof(arr[0]);
    for(int i = 0;i<sz;i++)
    {
        if(arr[i]=='A')
        {
            count1++;
        }
        else if(arr[i]=='B')
        {
            count2++;
        }
        else if(arr[i]=='\0')
        {
            break;
        }
    }
    if(count1==count2)
    {
        printf("E\n");
    }
    else if(count1>count2)
    {
        printf("A\n");
    }
    else 
    {
        printf("B\n");
    }
    return 0;
}

💭 法2:使用gets函数获取字符串

int main()
{
    char buf[100]={0};
    gets(buf);
    int count1 = 0;
    int count2 = 0;
    int i = 0;
    while(buf[i]!='\0')
    {
        if(buf[i]=='A')
            count1++;
        if(buf[i]=='B')
            count2++;
        i++;
    }
    if(count1==count2)
    {
        printf("E\n");
    }
    else if(count1>count2)
    {
        printf("A\n");
    }
    else 
    {
        printf("B\n");
    }
    return 0;
}

💭 法3:只定义一个变量来统计票多少

代码实现:

int main()
{
    char buf[100]={0};
    gets(buf);
    int flag = 0;
    int i = 0;
    while(buf[i]!='\0')
    {
        if(buf[i]=='A')
            flag++;
        if(buf[i]=='B')
            flag--;
        i++;
    }
    if(flag==0)
    {
        printf("E\n");
    }
    else if(flag>0)
    {
        printf("A\n");
    }
    else 
    {
        printf("B\n");
    }
    return 0;
}

💭 法4:逐个字符读取

代码实现:

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

题目2:最高分数

💭 法1:定义整型变量存储数据

代码实现:

int main()
{
    int n1 = 0;
    int n2 = 0;
    int n3 = 0;
    while(~scanf("%d %d %d",&n1,&n2,&n3))
    {
        int max = n1>n2?n1:n2;
        max=max>n3?max:n3;
        printf("%d\n",max);
    }
    return 0;
}

💭 法2:定义数组存储数据

代码实现:

int main()
{
    int num[3]={0};
    while(~scanf("%d %d %d",&num[0],&num[1],&num[2]))
    {
        int max = 0;
        int i = 0;
        for(i=0;i<3;i++)
        {
            if(num[i]>max)
            {
                max = num[i];
            }
        }
        printf("%d\n",max);
    }
    return 0;
}

题目3:判断是元音还是辅音

💭 法1 常规解题

代码实现:

int main()
{
    int ch = 0;
    char vowel[20]="AaEeIiOoUu";
    int i = 0;
    while((ch=getchar())!=EOF)
    {
        getchar();//读取回车字符
        for(i=0;i<10;i++)
        {
            if(ch==vowel[i])
            {
                printf("Vowel\n");
                break;
            }
        }
        if(i==10)
        {
            printf("Consonant\n");
        }
    }
    return 0;
}

💭 法2:使用strchr库函数,判断一个字符串里面是否出现该字符

如果存在返回该字符在字符串中的地址,如果不存在返回空指针。

代码实现:

#include <stdio.h>
#include <string.h>
int main()
{
    int ch = 0;
    char vowel[20]="AaEeIiOoUu";
    int i = 0;
    while((ch=getchar())!=EOF)
    {
        getchar();
        if(strchr(vowel,ch))
        {
            printf("Vowel\n");
        }
        else 
        {
            printf("Consonant\n");
        }
    }
    return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
    int ch = 0;
    char vowel[20]="AaEeIiOoUu";
    int i = 0;
    while((scanf(" %c",&ch))!=EOF) 
    //%c前面空格处理字符前面的空白字符,也就是消除\n
    {
        //getchar();
        if(strchr(vowel,ch))
        {
            printf("Vowel\n");
        }
        else 
        {
            printf("Consonant\n");
        }
    }
    return 0;
}
%c前面加上空格,会消化掉前面所有的空白字符,然后读取下一个字符
#include <stdio.h>
#include <string.h>
int main()
{
    int ch = 0;
    char vowel[20]="AaEeIiOoUu";
    int i = 0;
    while((scanf("%c\n",&ch))!=EOF) 
    {
        if(strchr(vowel,ch))
        {
            printf("Vowel\n");
        }
        else 
        {
            printf("Consonant\n");
        }
    }
    return 0;
}
在%c的后边加一个\n,其实在输入时候就会消化掉\n字符,不会在下次读取字符时留下隐患。

题目4:判断是不是字母

💭 法1:常规解题

代码实现:

int main()
{
    char ch = 0;
    while((scanf("%c\n",&ch))!=EOF)
    {
        if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
        printf("%c is an alphabet.\n",ch);
        else
        printf("%c is not an alphabet.\n",ch);
    }
    return 0;
} 

💭 法2:isalpha库函数判断是不是字母

#include <stdio.h>
#include <ctype.h>
int main()
{
    char ch = 0;
    while((scanf("%c\n",&ch))!=EOF)
    {
        if(isalpha(ch))
        printf("%c is an alphabet.\n",ch);
        else
        printf("%c is not an alphabet.\n",ch);
    }
    return 0;
} 
如果ch是字母,返回非零数字,如果ch不是字母,返回0

题目5:字母大小写转换

💭 isupper库函数判断字母是否为大写字母

islower库函数判断字母是否为小写字母

tolower库函数转小写字母

toupper库函数转大写字母

代码实现:

#include <stdio.h>
#include <ctype.h>
int main()
{
    char ch = 0;
    while((scanf("%c\n",&ch))!=EOF)
    {
        if(isupper(ch))//判断是否为大写
        printf("%c\n",tolower(ch));//将大写转换为小写
        if(islower(ch))//判断是否为小写
        printf("%c\n",toupper(ch));//将小写转换为大写
    }
    return 0;
}
注意:
本题中使用的所有库函数全部用于处理字符,不能处理字符串

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
牛客网是一个在线技术社区,提供各种编程题目和项目练习的平台。其中的Linux服务器开发项目是一个针对Linux服务器端开发的实战项目,旨在帮助开发者提升自己的服务器端开发能力。 在这个项目中,参与者需要完成一系列与Linux服务器相关的任务,例如搭建服务器环境、配置网络和安全设置、编写服务器端程序等。这些任务不仅挑战参与者的Linux操作和命令行技能,还涉及到服务器端开发的各个方面。 首先,参与者需要熟悉Linux操作系统常用的命令和工具,掌握服务器环境搭建和配置的技巧。他们需要学会通过命令行界面远程连接服务器,安装和配置各种软件和服务,例如Web服务器、数据库服务器等。 其次,参与者还需要具备一定的编程能力,能够使用常见的编程语言(例如C、C++、Java、Python等)编写服务器端程序。他们需要学习服务器端编程的基本原理,如网络通信、多线程、进程管理等,以实现各种服务器功能,例如Web应用程序、网络游戏服务器等。 在项目中,参与者可以通过与其他开发者交流、讨论问题、分享经验来相互促进,提高自己的技能水平。他们可以通过提交代码、解答问题等方式参与竞赛,争取获得积分和排名,体验竞争与合作的过程。 通过参与牛客网的Linux服务器开发项目,开发者可以提升自己的Linux服务器端开发技能,熟练掌握服务器环境搭建和配置的技巧,深入理解服务器端编程的各个方面。同时,他们还能结识更多志同道合的开发者,拓宽自己的技术视野,为今后的职业发展打下良好的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mikk-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值