牛客网刷题 | BC60 判断是不是字母

news2025/1/16 8:19:16

描述

KiKi想判断输入的字符是不是字母,请帮他编程实现。

输入描述:

多组输入,每一行输入一个字符。

输出描述:

针对每组输入,输出单独占一行,判断输入字符是否为字母,输出内容详见输出样例。


思路:

1、首先定义一个char类型变量

!!!!!!注意!!!!!!

看清题目 千万不要定义成两个变量

一时糊涂我就定义了两个变量 一直在想 这怎么输出......

一开始写的奇葩代码......

2、接下来进行判断 对照ascll码表 

直接判断是不是字母就行了

是就输出 

A is an alphabet.

不是就输出

6 is not an alphabet.

# include <stdio.h>
int main ()

{
    char a = 0;
    //char b = 0;
    while(scanf("%c",&a)!=EOF)//!= EOF 表示连续输入的意思
    {
    //scanf("%c",&b);
    if((a>='A'&&a<='Z')||(a>='a'&&a<='z'))//判断是否为字母
    {
        printf("%c is an alphabet.\n",a);
        getchar();//主要判断是不是回车 吸收enter键
    }
    else 
    {
    printf("%c is not an alphabet.\n",a);
    getchar();
    }
    }
    
    return 0;
}

代码如上:

其中要注意的是:

getchar()和 != EOF

扩展:

以下来自:C 库函数 – getchar() | 菜鸟教程 (runoob.com)

getchar()

C 库函数 - getchar()
描述

C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数。

声明

下面是 getchar() 函数的声明。

int getchar(void)
参数
  • NA
返回值

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

实例

下面的实例演示了 getchar() 函数的用法。

#include <stdio.h>

int main ()
{
   char c;
 
   printf("请输入字符:");
   c = getchar();
 
   printf("输入的字符:");
   putchar(c);

   return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

请输入字符:a
输入的字符:a

!= EOF

以下来自:C语言EOF是什么 (biancheng.net)

C语言EOF是什么

在 C语言中,EOF 是一个宏定义,它代表"end of file",表示文件结束标志。EOF 是一个特殊的字符,它的值在不同的编译器中可能不同,但总是负数。在大多数系统中,EOF 的值为 -1。

EOF 常常用于文件的输入输出中,当读取到文件结束时,会返回 EOF。

文件的输入输出

在 C语言中,文件的输入输出是通过标准库中的文件操作函数来实现的。文件操作函数主要包括 fopen、fclose、fread、fwrite、fscanf 和 fprintf 等。

下面是一个简单的示例代码,演示了如何使用 fopen 和 fgetc 函数读取一个文本文件中的字符,当读取到文件结束时,返回 EOF:

#include <stdio.h>

int main()
{
    FILE *fp;
    int c;

    fp = fopen("example.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }

    fclose(fp);
    return 0;
}

在上面的代码中,我们使用 fopen 函数打开一个名为 example.txt 的文本文件,并以只读方式打开。如果文件打开失败,我们将输出一条错误消息并退出程序。如果文件打开成功,我们将使用 fgetc 函数逐个读取文件中的字符,并将它们输出到屏幕上。当读取到文件结束时,fgetc 函数将返回 EOF,循环将结束并关闭文件。

为什么要用EOF

在文件的输入输出中,EOF 用于表示文件结束标志。当我们使用 fgetc 函数从文件中读取字符时,如果读取到 EOF,我们就知道已经读取到了文件的末尾。

在很多情况下,我们需要根据文件是否已经结束来采取不同的操作。例如,在读取一个文本文件时,我们可能需要在读取到文件结束时计算文本文件的总行数或总字符数。

此外,在文件的输入输出中,EOF 还有一个重要的作用,就是在读取或写入文件时检测错误。当读取或写入文件时出现错误时,文件操作函数将返回 EOF。通过检查文件操作函数的返回值,我们可以判断文件操作是否成功,并采取相应的措施。

EOF和字符类型

需要注意的是,EOF 并不是一个字符类型。EOF 是一个整型常量,它的值是一个负数,通常是 -1。因此,在使用 EOF 时,我们需要将它与整型类型进行比较,而不是与字符类型进行比较。

在使用 EOF 时,我们通常使用 int 类型来存储它的值。例如,在上面的示例代码中,我们使用 int 类型的变量 c 来存储 fgetc 函数的返回值,然后将它与 EOF 进行比较。

总结

在 C语言中,EOF 是一个宏定义,表示文件结束标志。当读取文件时读取到 EOF 时,文件操作函数将返回 EOF,我们可以通过检查文件操作函数的返回值来判断文件是否已经结束,以及在读取或写入文件时是否出现了错误。

EOF 通常用于文件的输入输出中,特别是在读取文本文件时。在文件操作中,EOF 的值通常为 -1,因为它是一个负数。在使用 EOF 时,我们需要将它与整型类型进行比较,而不是与字符类型进行比较。

下面是一个更复杂的示例代码,演示了如何使用 EOF 来读取一个二进制文件中的数据:

#include <stdio.h>

int main()
{
    FILE *fp;
    int c;
    unsigned char buffer[1024];
    size_t n;

    fp = fopen("example.bin", "rb");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    n = fread(buffer, sizeof(unsigned char), sizeof(buffer), fp);
    while (n > 0) {
        for (size_t i = 0; i < n; i++) {
            printf("%02x ", buffer[i]);
        }
        printf("\n");
        n = fread(buffer, sizeof(unsigned char), sizeof(buffer), fp);
    }

    if (feof(fp)) {
        printf("End of file reached\n");
    } else if (ferror(fp)) {
        printf("Error while reading file\n");
    }

    fclose(fp);
    return 0;
}

在上面的代码中,我们使用 fopen 函数打开一个名为 example.bin 的二进制文件,并以只读方式打开。如果文件打开失败,我们将输出一条错误消息并退出程序。如果文件打开成功,我们将使用 fread 函数从文件中读取数据,并将数据以 16 进制形式输出到屏幕上。

在每次读取完数据之后,我们使用 feof 函数检查文件是否已经结束,如果已经结束,我们将输出一条消息。如果在读取文件时出现错误,我们将使用 ferror 函数检查错误,并输出一条错误消息。

在上面的示例代码中,我们使用了多个文件操作函数,包括 fread、feof 和 ferror。fread 函数用于从文件中读取数据,feof 函数用于检查文件是否已经结束,ferror 函数用于检查文件读取或写入时是否出现了错误。使用这些文件操作函数,我们可以更好地控制文件的输入输出,从而编写更稳健和可靠的程序。

总之,在 C语言中,EOF 是一个宏定义,表示文件结束标志。EOF 常用于文件的输入输出中,特别是在读取文本文件时。在文件操作中,EOF 的值通常为 -1,因为它是一个负数。在使用 EOF 时,我们需要将它与整型类型进行比较,而不是与字符类型进行比较。同时,我们可以使用文件操作函数如 feof 和 ferror 来检测文件的结束和错误,以确保程序的正确性和可靠性。

Hello,各位读者朋友们你们好,欢迎来到 从0至1 的CSDN博客。

一个喜欢文学的理科男,欢迎大家关注我的矩阵平台!

欢迎关注我的短视频矩阵:

微信公众平台:从0至1

今日头条:从0至1

百家号(百度APP):小飞从0至1

抖音:从0至1

小红书:从0至1

知乎:从0至1

CSDN:https://blog.csdn.net/m0_64000959?spm=1000.2115.3001.5343

Gitee:https://gitee.com/from-0-to-1

后续继续更新......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1617897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二节课,后端登录代码 校验

一、注册逻辑 二、代码写的位置 I UserService.java 写业务逻辑的 2.1 代码1 2.1.1 注释生成 先按 /** 再按 回车 2.1.2 多补充一点 2.2 代码2 Implement method userRegister # 在这里实现用户注册的逻辑&#xff0c;例如将用户名和密码存储到数据库中 2.2.1 自动进入user…

企业上了财务系统,有必要再上费控系统吗?

相信很多财务人员甚至是老板肯定有这样的疑惑&#xff1a;企业已经有了财务系统&#xff0c;为什么还要上费控软件呢&#xff1f;为什么越大的企业越倾向使用专业费控平台来管理企业费用&#xff1f; 当我们在讨论这个问题的时候&#xff0c;首先要搞清楚&#xff0c;这里所说的…

OS国产化改造中LVM卷迁移指导

一、前言 因OS改造涉及LVM卷&#xff0c;且vg卷包含磁盘数量较多&#xff0c;lv中数据较大&#xff08;100T左右&#xff09;&#xff0c;因此要在OS改造中确保LVM卷信息完整不丢失&#xff0c;保证其上数据安全尤为重要。本文旨在探讨lvm信息存储及迁移&#xff0c;以指导完成…

使用R语言生成频数分布表

概要 使用R语言生成频数分布表 在R语言中&#xff0c;可以使用freq()函数来生成频数分布表。首先&#xff0c;将需要分组的数据存储在一个向量中。然后&#xff0c;使用freq()函数将这个向量作为参数输入&#xff0c;即可生成频数分布表。以下是一个示例&#xff1a; 示例 …

ctfshow web入门 SQl注入 web185--web190

web185 这道题还有另外一个脚本就是用concat的拼接达到有数字的目的 concat(truetrue) 2 concat(true) 1 concat(true, true) 11 然后上脚本&#xff08;Y4tacker这个师傅的&#xff09; # Author:Y4tacker import requestsurl "http://341e93e1-a1e7-446a-b7fc-75beb…

123.Mit6.S081-实验1-Xv6 and Unix utilities

今天我们来进行Mit6.S081实验一的内容。 实验任务 一、启动xv6(难度&#xff1a;Easy) 获取实验室的xv6源代码并切换到util分支。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 Cloning into xv6-labs-2020... ... $ cd xv6-labs-2020 $ git checkout util Branch util …

Qt - 窗口

目录 1. 前言 2. 菜单栏(QMenuBar) 2.1. 创建菜单栏 2.1.1. 方式一 2.1.2. 方式二 2.2. 在菜单栏中添加菜单和创建菜单项 2.3. 在菜单项之间添加分割线 2.4. 综合示例 3. 工具栏(QToolBar) 3.1. 创建工具栏 3.2. 设置停靠位置 3.2.1. 方式一 3.2.2. 方式二 3.3. 设…

C#开发的全套成熟的LIS系统源码JavaScript+SQLserver 2012区域云LIS系统源码

C#开发的全套成熟的LIS系统源码JavaScriptSQLserver 2012区域云LIS系统源码 医院云LIS系统是一套成熟的实验室信息管理系统&#xff0c;目前已在多家三级级医院应用&#xff0c;并不断更新。云LIS系统是为病人为中心、以业务处理为基础、以提高检验科室管理水平和工作效率为目标…

2024-4-22 群讨论:微服务启动预热相关

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号&#xff1a;hashcon&#xff0c;私信进群拉你 Hotspot JVM 进程启动后&#xff0c;流量到来的时候 JIT 吃掉很多 CPU&#xff0c;如何观察到&#xff1f; 很多途径都能观察到&#xff1a; top -Hp&#xff1a;这个需…

前端开发攻略---封装日历calendar组件(纯手搓),可以根据您的需求任意改变,可玩性强

1、演示 2、代码 <template><div class"box" v-if"startMonth.year"><div class"left"><div class"top"><span class"iconfont" click"changeMonth(-1)">左</span><span&…

JTAG访问xilinx FPGA的IDCODE

之前调试过xilinx的XVC&#xff08;Xilinx virtual cable&#xff09;&#xff0c;突然看到有人搞wifi-JTAG&#xff08;感兴趣可以参考https://github.com/kholia/xvc-esp8266&#xff09;&#xff0c;也挺有趣的。就突然想了解一下JTAG是如何运作的&#xff0c;例如器件识别&…

关于开设RT-DETR专栏及更新内容的一些说明

​ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 专栏介绍 YOLOv9作为最新的YOLO系列模型&#xff0c;对于做目标检测的同学是必不可少的。本专栏将针对2024年最新推出的YOLOv9检测模型&#xff0…

jsp实验10 JavaBean

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握javabean的用法。【参考课本 上机实验 5.5.1 】 三、源代码以及执行结果截图&#xff1a; 源代码&#xff1a; Fraction.java package sea.water; public class Fraction { public double numbe…

【北京迅为】《iTOP-3588开发板系统编程手册》-第19章 V4L2摄像头应用编程

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Skill Check: Build an LLM Application using OCI Generative AI Service

Skill Check: Build an LLM Application using OCI Generative AI Service

数据清洗:异常值检测方法

异常值检测方法总结 一、基于分布1、3σ原则2、Z_score方法3、boxplot一、基于分布 1、3σ原则 3σ原则又称为拉依达法则。该法则就是先假设一组检测数据只含有随机误差,对原始数据进行计算处理得到标准差,然后按一定的概率确定一个区间,认为误差超过这个区间的就属于异常…

贪心算法练习day.1

理论基础 贪心算法是一种常见的解决优化问题的方法&#xff0c;其基本思想就是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部的最优决策&#xff0c;以此得到全局的最优解&#xff0c;例如在十张面额不同的钞票&#xff0c;让我们…

ctfshow 每周大挑战RCE极限挑战

讨厌SQl看到这个了想来玩玩 rce1 <?phperror_reporting(0); highlight_file(__FILE__);$code $_POST[code];$code str_replace("(","括号",$code);$code str_replace(".","点",$code);eval($code);?>括号过滤点过滤&…

查找算法之分块查找

目录 前言一、查找算法预备知识二、分块查找三、总结3.1 查找性能3.2 适用场景3.3 优缺点 前言 查找算法是一种用于在数据集合中查找特定元素的算法。在计算机科学中&#xff0c;查找算法通常被用于在数组、链表、树等数据结构中查找目标元素的位置或者判断目标元素是否存在。…

【Java--数据结构】模拟实现ArrayList

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 LIst 顺序表ArrayList 顺序表优点 IList接口 ArrayList中定义要操作的数组 在MyArrayList中 重写接口方法 新增元素 在指定位置插入元素 pos不合法异常 判断和查找元素…