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

简介: 【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;
}


相关文章
|
12天前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
12天前
|
算法 C语言 Swift
【C语言】牛客网刷题训练-11
【C语言】牛客网刷题训练-11
|
12天前
|
C语言
【C语言】牛客网刷题训练-10
【C语言】牛客网刷题训练-10
|
12天前
|
存储 C语言 数据安全/隐私保护
【C语言】牛客网刷题训练-9
【C语言】牛客网刷题训练-9
|
13天前
|
C语言
【C语言】牛客网刷题训练-8
【C语言】牛客网刷题训练-8
|
12天前
|
C语言
【C语言】牛客网刷题训练-7
【C语言】牛客网刷题训练-7
|
13天前
|
C语言
【C语言】牛客网刷题训练-6
【C语言】牛客网刷题训练-6
|
5天前
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
18 0
|
5天前
|
C语言
C语言中返回指针值的函数
C语言中返回指针值的函数
14 0
|
1天前
|
C语言
malloc()函数
`malloc()`是C语言中的动态内存分配函数,用于分配指定大小的内存块,并返回一个`void*`类型的指针。要包含`stdlib.h`头文件来使用它。分配的内存大小以字节为单位,成功则返回内存首地址,失败则返回`NULL`。需要注意的是,返回的指针需强制转换为所需类型,并在使用后用`free()`释放内存,避免内存泄漏。切勿在分配区域内移动指针,以防止释放时出现问题。