【C语言】牛客网刷题训练-5

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【C语言】牛客网刷题训练-5

针对C语言入门OJ题(牛客网)

(入门)BC41-你是天才吗?_牛客题霸_牛客网 (nowcoder.com)

解析:

  1. 关于多组输入的题目,一定要处理好多组数据的输入问题,然后考虑循环如何结束。
  2. 方法1和方法2,给出了两种不同的多组输入的方法。
  3. ~ - C语言中的操作符 - 按位取反。

参考代码:

#include <stdio.h>
//方法1
int main()
{
    int iq = 0;
    while(scanf("%d", &iq) != EOF)
    {
        if(iq>=140)
            printf("Genius");
    }
    return 0;
}
//方法2
#include <stdio.h>
int main()
{
    int iq = 0;
    //这种写法是因为scanf读取失败返回EOF,EOF是-1,
    //所以按位取反后的结果是0, 0为假,可以让循环停止。
    while(~scanf("%d", &iq))
    {
        if(iq>=140)
            printf("Genius");
    }
    return 0;
}

(入门)BC42-完美成绩_牛客题霸_牛客网 (nowcoder.com)

解析:

  1. 多组输入。
  2. 数学中的 90<=score<=100 的写法,在C语言中直接写是有bug的。

参考代码:

//代码一
#include <stdio.h>
int main()
{
    int score = 0;
    while(scanf("%d", &score) != EOF)
    {
        if(score >= 90 && score<=100)
            printf("Perfect");
    }
    return 0;
}
//代码二
#include <stdio.h>
int main()
{
    int score = 0;
    while(~scanf("%d", &score))
    {
        if(score >= 90 && score<=100)
            printf("Perfect");
    }
    return 0;
}

(简单)BC43-及格分数_牛客题霸_牛客网 (nowcoder.com)

参考代码:

#include <stdio.h>
int main()
{
    int score = 0;
    while(scanf("%d", &score) != EOF)
    {
        if(score >= 60)
            printf("Pass\n");
        else
            printf("Fail\n");
    }
    return 0;
}

(入门)BC44-判断整数奇偶性_牛客题霸_牛客网 (nowcoder.com)

参考代码:

//代码一
#include <stdio.h>
int main()
{
    int num = 0;
    while(scanf("%d", &num) != EOF)
    {
        if(num%2==1)
            printf("Odd\n");
        else
            printf("Even\n");
    }
    return 0;
}
//代码二
#include <stdio.h>
int main()
{
    int num = 0;
    while(~scanf("%d", &num))
    {
        if(num%2==1)
            printf("Odd\n");
        else
            printf("Even\n");
    }
    return 0;
}

(简单)BC45-最高分数_牛客题霸_牛客网 (nowcoder.com)

解析:

  1. 多组输入。
  2. 每组输入接受3个数字,求出最大值,因为成绩不能是负数,所以假设max期初是0。

参考代码:

//代码一
#include <stdio.h>
int main()
{
    int i = 0;
    int score[3] = {0};
    while(scanf("%d %d %d", &score[0], &score[1], &score[2]) != EOF)
    {
        int max = 0;//每一组测试,max都恢复到0
        int i = 0;
        for(i=0; i<3; i++)
        {
            if(score[i] > max)
                max = score[i];
        }
        printf("%d\n", max);
    }
    
    return 0;
}
//代码二
#include <stdio.h>
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;
}

(简单)BC46-判断是元音还是辅音_牛客题霸_牛客网 (nowcoder.com)

解析:

参考代码:

//方法1
#include <stdio.h>
int main()
{
    char ch = 0;
    //存放元音字母的数组
    char vowel[] = "AaEeIiOoUu";
    //输入
    while((ch=getchar()) != EOF)
    {
        //判断
        int i = 0;
        for(i=0; i<10; i++)
        {
            if(ch == vowel[i])
            {
                printf("Vowel\n");
                break;
            }
        }
        if(i == 10)
        {
            printf("Consonant\n");
        }
        getchar();//去除每个字符后的\n
    }
    return 0;
}
//方法2
#include <stdio.h>
int main()
{
    char ch = 0;
    char arr[] = "AEIOUaeiou";
    //在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符
    while(scanf(" %c", &ch) != EOF)
    {
        int i = 0;
        for(i=0; i<10; i++)
        {
            if(ch == arr[i])
            {
                printf("Vowel\n");
                break;
           }
        }
        if(i == 10)
            printf("Consonant\n");
    }
    return 0;
}
//方法3
#include <stdio.h>
int main()
{
    char ch = 0;
    char arr[] = "AEIOUaeiou";
    //在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符
    //不会为下次留下空白字符的隐患
    while(scanf("%c\n", &ch) != EOF)
    {
     int i = 0;
        for(i=0; i<10; i++)
        {
            if(ch == arr[i])
            {
                printf("Vowel\n");
                break;
            }
        }
        if(i == 10)
            printf("Consonant\n");
    }
    return 0;
}
//方法4
#include <stdio.h>
#include <string.h>
int main()
{
    int ch = 0;
    //存放元音字母的数组
    char vowel[] = "AaEeIiOoUu";
    //输入
    while((ch=getchar()) != EOF)
    {
        //判断
        //strchr 是用来判断 ch 是否在字符串vowel出现
        //如果出现了,返回vowel的字符串中的地址
        //如果没出现,返回NULL
        if(strchr(vowel, ch))
        {
            printf("Vowel\n");
        }
        else
        {
            printf("Consonant\n");
        }
        getchar();//去除每个字符后的\n
    }
    return 0;
}

(简单)BC47-判断是不是字母_牛客题霸_牛客网 (nowcoder.com)

解析:

本题和 BC46 是一个道理的,三种方法均可使用。

参考代码:

//代码一
#include <stdio.h>
int main()
{
    int ch = 0;
    while((ch=getchar()) != EOF)
    {
        //判断字母
        //if((ch>='A' && ch<='Z') || (ch>='a' && ch<='z'))
        if(isalpha(ch))
        {
            printf("%c is an alphabet.\n", ch);
        }
        else
        {
            printf("%c is not an alphabet.\n", ch);
        }
        getchar();//清理掉\n
    }
    return 0;
}
//代码二
#include <stdio.h>
int main()
{
    int ch = 0;
    while((ch=getchar()) != EOF)
    {
        //判断字母
        if(isalpha(ch))
        {
            printf("%c is an alphabet.\n", ch);
        }
        else
        {
            printf("%c is not an alphabet.\n", ch);
        }
        getchar();//清理掉\n
    }
    return 0;
}

(简单)BC48-字母大小写转换_牛客题霸_牛客网 (nowcoder.com)

解析:

这道题和 BC46 BC47 题一样。

参考代码:

//代码一
#include <stdio.h>
#include <ctype.h>
int main()
{
    int ch = 0;
    //多组输入
    while((ch=getchar()) != EOF)
    {
         if(islower(ch))
         {
             printf("%c\n", toupper(ch));
         }
         else if(isupper(ch))
         {
             printf("%c\n", tolower(ch)); 
         }
         getchar();//处理'\n'
    }
    return 0;
}
//代码二
#include <stdio.h>
int main()
{
    int ch = 0;
    //多组输入
    while(~scanf("%c\n", &ch)
    {
         if(ch>='A' && ch<='Z')
         {
             printf("%c\n", ch+32);
         }
         else if(ch >='a' && ch<='z')
         {
             printf("%c\n", ch-32); 
         }
    }
    return 0;
}

(简单)BC50-计算单位阶跃函数_牛客题霸_牛客网 (nowcoder.com)

参考代码:

#include<stdio.h>
int main()
{
    int t = 0;
    while(scanf("%d", &t) !=EOF)
   {
         if(t>0)
             printf("%d\n", 1);
        else if(t == 0)
            printf("%.1f\n", 0.5f);
        else
            printf("%d\n", 0);
   }
    return 0;
}

(简单)BC51-三角形判断_牛客题霸_牛客网 (nowcoder.com)

解析:

这里需要搞清楚三角形的判断规则,再去进行一一一穷举就行,因为一共只有三条边。

参考代码:

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    //当scanf读取结束或者失败的时候,就会返回EOF
    while(scanf("%d %d %d", &a, &b, &c) != EOF)
    //while(~scanf("%d %d %d", &a, &b, &c))
    {
        //判断是否为三角形
        if(a+b>c && b+c>a && c+a>b)
        {
            if(a==b && b==c)//是三角形
            {//等边
                printf("Equilateral triangle!\n");
            }
            else if((a==b &&a!=c) || (a==c && a!=b) || (b==c &&b!=a))
            {//等腰
                printf("Isosceles triangle!\n");
            }
            else
            {//普通
                printf("Ordinary triangle!\n");
            }
        }
        else
            printf("Not a triangle!\n");
    }
    return 0;
}


相关文章
|
4月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
2月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
19 0
|
4月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
4月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
4月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
6月前
|
C语言
C语言刷题(函数)
C语言刷题(函数)
|
6月前
|
C语言
C语言刷题(数组)
C语言刷题(数组)
|
6月前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
6月前
|
C语言
C语言刷题(循环结构程序设计)
C语言刷题(循环结构程序设计)
|
25天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
49 10