8-1 统计字符

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:

输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:

在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数

的格式输出。

输入样例:

aZ &
09 Az

输出样例:

letter = 4, blank = 3, digit = 2, other = 1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:

错误答案:

#include<stdio.h>
int main(){char c;//我原本这里定义了字符数组char a[10] int letter=0,blank=0,digit=0,other=0;//写程序的时候忘写了 for(int i=0;i<10;i++){//这里我用了scanf("%d",&a[i]);}if(){//这里的条件都忘了而且用的是if嵌套语句 if(){if(){if(){}				}}}
} 

首先,为了解决这个问题,我们需要对输入的每个字符进行分类。具体来说,我们可以使用以下的策略:

  1. 使用 isalpha() 来检查字符是否是字母。
  2. 使用 isspace() 来检查字符是否是空格或换行。
  3. 使用 isdigit() 来检查字符是否是数字。
  4. 如果字符不满足上述任何一种情况,那么它就是其他字符。

以下是按照上述策略用 C 和 C++ 实现的代码:

C语言:

#include <stdio.h>
#include <ctype.h>int main() {char c;int letter = 0, blank = 0, digit = 0, other = 0;for (int i = 0; i < 10; i++) {c = getchar();if (isalpha(c)) {letter++;} else if (isspace(c)) {blank++;} else if (isdigit(c)) {digit++;} else {other++;}}printf("letter = %d, blank = %d, digit = %d, other = %d\n", letter, blank, digit, other);return 0;
}

C++:

#include <iostream>
#include <cctype>
using namespace std;int main() {char c;int letter = 0, blank = 0, digit = 0, other = 0;for (int i = 0; i < 10; i++) {cin.get(c);if (isalpha(c)) {letter++;} else if (isspace(c)) {blank++;} else if (isdigit(c)) {digit++;} else {other++;}}cout << "letter = " << letter << ", blank = " << blank << ", digit = " << digit << ", other = " << other << endl;return 0;
}

这两个程序都能读取10个字符,并统计每种字符类型的数量,然后输出结果。

总结:

反思:

这道题目我暴露了几个问题

1.是ASCII码的范围和使用方式完全忘记

2.如何使用getchar,这道题目我刚开始是想要用字符数组的。

学到了:

1.新的函数帮我检测输入字符

  1. 使用 isalpha() 来检查字符是否是字母。
  2. 使用 isspace() 来检查字符是否是空格或换行。
  3. 使用 isdigit() 来检查字符是否是数字

这样做的好处:

  1. ASCII码: 对于很多程序员来说,完整记住ASCII码表是不太现实的。然而,你应该至少熟悉常见的ASCII字符的范围。例如,数字0-948-57,大写字母A-Z65-90,小写字母a-z97-122。不过,在实际编程中,使用标准库提供的函数(如isalpha(), isdigit()等)更为便捷、安全,且易于阅读。

  2. getchar的使用: getchar()函数是一个很基础的从标准输入读取单个字符的函数。在处理字符流或需要逐字符处理的情境中,它是非常有用的。当你认为需要使用字符数组或字符串来处理输入时,考虑使用getchar()可能会使问题简化。

学到的新知识:

  • isalpha(), isspace(), isdigit(): 这些函数属于C/C++的标准库,用于字符分类。它们提供了方便的方式来检查字符的类型,而不是手动检查ASCII值。这不仅使代码更具可读性,还有助于减少错误。

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

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

相关文章

升级指定版本Node.js或npm

一. 下载指定node.js版本Node.js 二. 升级node.js版本 打开电脑cmd 输入 npm install node18.17.1 -g 三. 升级npm版本 打开电脑cmd 输入 npm install npm8.1.2 -g

SQL注入之Oracle注入

SQL注入之Oracle注入 7.1 SQL注入之Oracle环境搭建 前言 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统…

在WordPress站点中展示阅读量等流量分析数据(超详细实现)

这篇文章也可以在我的博客中查看 关于本文 专业的流量统计系统能够相对真实地反应网站的访问情况。 这些数据可以在后台很好地进行分析统计&#xff0c;但有时我们希望在网站前端展示一些数据 最常见的情景就是&#xff1a;展示页面的浏览量 这简单的操作当然也可以通过简单…

(el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

Ⅰ、Element-plus 提供的 Form 表单组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Form 表单组件情况&#xff1a; 其一、Element-plus 自提供的 Form 代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环…

6.3 社会工程学攻击

数据参考&#xff1a;CISP官方 目录 社会工程学攻击概念社会工程学攻击利用的人性 “弱点”典型社会工程学攻击方式社会工程学攻击防护 一、社会工程学攻击概念 什么是社会工程学攻击 也被称为 "社交工程学" 攻击利用人性弱点 (本能反应、贪婪、易于信任等) 进…

萤石直播以及回放的接入和销毁

以下基于vue项目 1.安装 npm i ezuikit-js 2、导入 main.js中 import EZUIKit from "ezuikit-js"; //导入萤石Vue.use(EZUIKit); 3、创建容器 <div class"video"><div id"video-container"></div><!-- <iframe :src…

栈存储结构详解

目录 栈存储结构详解 进栈和出栈 栈的具体实现 栈的应用 什么是队列&#xff08;队列存储结构&#xff09; 栈存储结构详解 同顺序表和链表一样&#xff0c;栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构&#xff0c;如图 1 所示。 图 1 栈存储结构示意…

HTML5的介绍和基本框架

目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.ht…

设备加密狗

场景描述 随着科技的飞速发展&#xff0c;越来越多的智能设备走进生产加工车间。例如智能雕刻机、钣金机、 榫槽机、钻孔机、磨刀机等等。 目前市场的智能设备具有一个共同的特点&#xff0c;内置嵌入操作系统&#xff0c;如windows或者linux系统。设备制造商提供智能设备出…

20天学会rust(四)常见系统库的使用

前面已经学习了rust的基础知识&#xff0c;今天我们来学习rust强大的系统库&#xff0c;从此coding事半功倍。 集合 数组&可变长数组 在 Rust 中&#xff0c;有两种主要的数组类型&#xff1a;固定长度数组&#xff08;Fixed-size Arrays&#xff09;和可变长度数组&…

Ajax如何理解

什么是ajax ●认识前后端交互 ○就是 前端 与 后端的 一种通讯方式 ○主要使用的技术栈就是 ajax (async javascript and xml) ●ajax 特点 ○使用 ajax 技术网页应用能够快速的将新内容呈现在用户界面 ○并且不需要刷新整个页面, 也就是能够让页面有 "无…

Java技术整理(5)—— Spring篇

Spring是一个全面的全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 1、Spring的核心组件 &#xff08;1&#xff09;数据层&#xff1a; JDBC、ORM、OXM、JMS、Transations &#xff08;2&#x…

Flutter 中,ListView 中需要放置 ListView 需要怎么处理才高效?

问题及场景 ListView 是 Flutter 开发者第一个学习到的 Widget&#xff0c;因为它可以滑动。一切都会运行得很好&#xff0c;直到 ListView 中的 Item 本身也是一个 ListView。你可能会看到 Flutter 建议你将内部的 ListView 的ShrinkWrap 属性设置为 True。虽然错误消除了&am…

连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?

在净利润连续两年下挫之后&#xff0c;比亚迪电子&#xff08;00285.HK&#xff09;终于迎来了好消息。 不久前比亚迪电子发布2023年中期盈利预告显示&#xff0c;上半年净利润同比增加115%-146%&#xff08;2022年上半年的净利润显示6.34亿元&#xff09;。 这主要受益于大客…

包管理工具 nvm npm nrm yarn cnpm npx pnpm详解

包管理工具 nvm npm yarn cnpm npx pnpm npm、cnpm、yarn、pnpm、npx、nvm的区别&#xff1a;https://blog.csdn.net/weixin_53791978/article/details/122533843 npm、cnpm、yarn、pnpm、npx、nvm的区别&#xff1a;https://blog.csdn.net/weixin_53791978/article/details/1…

【Freertos基础入门】2个Freertos的Delay函数

文章目录 前言一、vTaskDelay与vTaskDelayUntil二、示例代码总结 前言 本系列基于stm32系列单片机来使用freerots 任务管理是实时操作系统&#xff08;RTOS&#xff09;的核心功能之一&#xff0c;它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTO…

嵌入式开发中常用且杂散的命令

1、mount命令 # 挂载linux系统 mkdir /tmp/share mount -t nfs 10.77.66.88:/share/ /tmp/share -o nolock,tcp cd /tmp/share# 挂载Windows系统 mkdir /tmp/windows mount -t nfs 10.66.77.88:/c/public /tmp/windows -o nolock,tcp cd /tmp/windows# 挂载vfat格式的U盘 mkdi…

强训第32

选择 D B A A 发送TCP意思应该是已经建立了连接&#xff0c;会超时重传。在未建立连接的时候&#xff0c;会放弃该链接 C A 80端口是http A 交换机攻击主要有五种&#xff1a;VLAN跳跃攻击 生成树攻击 MAC表洪水攻击 ARP攻击 VTP攻击 B A 2^(32-26)2^(32-27)2^(32-27)128 减去…

基于Java+SpringBoot+Vue+echarts健身房管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

maven Jar包反向install到本地仓库

maven Jar包反向install到本地仓库 需求实现 需求 项目打包时报错&#xff0c;缺少一个jar包。 但是在maven仓库都找不到此jar包&#xff0c;其他人提供了这个jar包。 需要把这个jar包install到本地仓库&#xff0c;使项目能正常打包运行。 实现 使用git bash命令执行以下脚…