牛客网刷题总结(如何清除缓存区,字母大小写替换的两种方法,一元二次方程解的输出)

简介: 牛客网刷题总结(如何清除缓存区,字母大小写替换的两种方法,一元二次方程解的输出)

1.清除缓存区的几种方法

        (1)在每次输入之后添加getchar();读取\n;清理的原因在于在你每次输入之后都要按一个enter键,而计算机会把enter键这个操作也转化为一个字符

//针对每组输入,输出为一行,如果输入字母是元音(包括大小写),输出“Vowel”,如果输入字母是非元音,输出“Consonant”
int main()
{
  char i;
  while (scanf("%c", &i) == 1)  //while (scanf("%c", &i) != EOF)这两个写法是等价的
  {
    if (i == 'A' || i == 'a' || i == 'E' || i == 'e' || i == 'I' || i == 'i' || i == 'O' || i == 'o' || i == 'U' || i == 'u')
      printf("Vowel\n");
    else
      printf("Consonant\n");
    getchar();//注意清理缓冲区
  }
  return 0;
}

       (2)使用continue跳过‘\n’

int main()
{
  char i;
  while (scanf("%c", &i) == 1)  //while (scanf("%c", &i) != EOF)这两个写法是等价的
  {
    if (i == '\n')
      continue;//遇到\n就跳过
    if (i == 'A' || i == 'a' || i == 'E' || i == 'e' || i == 'I' || i == 'i' || i == 'O' || i == 'o' || i == 'U' || i == 'u')
      printf("Vowel\n");
    else
      printf("Consonant\n");
  }
  return 0;
}

2.字母大小写转换

.通过大小写字母之间的差值(32)来进行转换

.通过库函数toupper(变为大写),tolower(变为小写)进行转换

注意:作者刚开始想使用strupr,和strlwr进行转换,但这两个函数针对的是字符串,且接受的参数为指针变量,也就是要传递的是地址,对于字符串来说,直接在()加入定义数组的数组名即可

KiKi想完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母
多组输入
通过加减
int main()
{
  定义输入
  char i;
  while (scanf("%c", &i) == 1)
  {
    if (i >= 'A' && i <= 'Z')
      printf("%c\n", i + 32);
    if (i >= 'a' && i <= 'z')
      printf("%c\n", i - 32);
    getchar();
  }
  return 0;
}
通过函数
使用库函数
int main()
{
  定义输入
  char i;
  while (scanf("%c", &i) == 1)
  {
    if (i >= 'A' && i <= 'Z')
      printf("%c\n", tolower(i));
    if (i >= 'a' && i <= 'z')
      printf("%c\n", toupper(i));
    getchar();
  }
  return 0;
}

3.一元二次方程解的输出

#include <stdio.h>
#include <math.h>
//一元二次方程ax2 + bx + c = 0的根
int main()
{
    float a, b, c;
    //多组输入输入三个数
    while (scanf("%f %f %f", &a, &b, &c) != EOF)
    {
        int gen = b * b - 4 * a * c;
        if (0 == a)
            printf("Not quadratic equation\n");
        else if (a != 0)
        {
            if (gen == 0)
            {
                if (b == 0)
                    printf("x1=x2=0.00\n");
                else
                    printf("x1=x2=%.2f\n", -b / (2 * a));
            }
            else if (gen > 0)
                printf("x1=%.2f;x2=%.2f\n", (((-b) - sqrt(gen)) / (2 * a)), (((-b) + sqrt(gen)) / (2 * a)));
            else
            {
                printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", -b / (2 * a), sqrt(-gen) / (2 * a), -b / (2 * a), sqrt(-gen) / (2 * a));
            }
        }
    }
    return 0;
}



目录
相关文章
|
3月前
|
存储 缓存
第21节: Vue3 计算缓存与方法
第21节: Vue3 计算缓存与方法
26 0
|
4月前
|
缓存 JavaScript C++
【Vue】—计算属性缓存VS方法以及侦听器的区别
【Vue】—计算属性缓存VS方法以及侦听器的区别
|
4月前
|
缓存 NoSQL Java
Java项目启动时先加载某些方法可用于redis缓存预热
Java项目启动时先加载某些方法可用于redis缓存预热
65 0
|
2月前
|
存储 缓存 NoSQL
除了`functools.lru_cache`装饰器,还有哪些方法可以缓存函数的结果?
除了`functools.lru_cache`装饰器,还有哪些方法可以缓存函数的结果?
19 1
|
7月前
|
存储 缓存 BI
06-OC方法缓存机制cache_t
06-OC方法缓存机制cache_t
65 0
|
缓存 小程序 JavaScript
微信小程序删除缓存数组中的数据方法
微信小程序删除缓存数组中的数据方法
1106 0
|
6月前
|
缓存 前端开发 安全
SpringBoot如何缓存方法返回值?
为什么要对方法的返回值进行缓存呢? 简单来说是为了提升后端程序的性能和提高前端程序的访问速度。减小对db和后端应用程序的压力。 一般而言,缓存的内容都是不经常变化的,或者轻微变化对于前端应用程序是可以容忍的。 否则,不建议加入缓存,因为增加缓存会使程序复杂度增加,还会出现一些其他的问题,比如缓存同步,数据一致性,更甚者,可能出现经典的缓存穿透、缓存击穿、缓存雪崩问题。
33 0
|
9月前
|
缓存
thinkphp5.0清除缓存、模版缓存和日志缓存的方法
thinkphp5.0清除缓存、模版缓存和日志缓存的方法
65 0
|
9月前
|
缓存 JavaScript 前端开发
|
11月前
|
缓存
HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载
HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载
129 0

热门文章

最新文章