统计大写字母-C语言实现

news/2025/1/16 0:19:06/

任务描述

本关任务:统计大写字母个数。

相关知识


视频1 初识文本处理之单词计数II — C 语言的逻辑运算符

逻辑运算符

C 语言定义了3个逻辑运算符,其表示方法及含义如下表所示。

逻辑运算C语言符号表示说明
&&双目运算符,若两个操作数都是非 0 值,运算结果为真(1),否则为假(0)
||双目运算符,两个操作数中任一个的值非 0 ,运算结果为真( 1 ),否则为假( 0 )
单目运算符,若操作数的值为 0 ,则运算结果为真( 1 ),否则为假( 0 )

下表列出了目前学习过的部分 C 语言运算符的优先级。

优先级运算符结合性


!   ++  --  &从右至左
*  /从左至右
+  -
<  <=   > >=
==  !=
&&
||
=从右到左

逻辑表达式的求值次序

下面的代码片段将根据表达式((a < b)&&(x < y))||(c = b - !c)的值输出不同的内容。

  1. int a = 10, b = 20, c = 5;
  2. float x = 1.8, y = 2.4;
  3. if (((a < b) && (x < y)) || (c = b - !c)) {
  4. printf("该表达式值为真(1),");
  5. printf("c = %d\n", c);
  6. }
  7. else {
  8. printf("该表达式值为假(0),");
  9. printf("c = %d\n", c);
  10. }

输出结果:

  1. 该表达式值为真(1),c = 5

若变量a的值为30,上述程序代码的输入结果为:

  1. 该表达式值为真(1),c = 20

在上面两个输出结果中,变量c的值不一样,这是 C 语言对逻辑表达式规定的特殊求值次序造成的。下面来看一下表达式((a < b)&&(x < y))||(c = b - !c)的求值次序。

  • 根据运算符优先级,首先计算逻辑与运算表达式(a < b)&&(x < y)的左操作数(a < b),若其值为 1 ,则继续计算右操作数(x < y)的值,并根据逻辑与运算规则计算表达式的值;若左操作数的值为 0 ,则可以直接得到逻辑与运算的结果值为 0 ,此时不再计算右操作数。
  • 若逻辑或运算的左操作数,即表达式(a < b)&&(x < y)的值为 1 ,则可以直接得到逻辑或运算的结果值为 1 ,此时不再计算其右操作数(c = b - !c);若左操作数的值为 0 ,再计算右操作数,并根据逻辑或运算规则计算表达式的值。

根据上面描述的表达式求值次序,可以看到:

  • 当变量a的值为 10 时,逻辑或运算||的左操作数(a < b)&&(x < y)的值为 1 ,其右操作数(c = b - !c)不会计算,变量c仍然保持原值 5 ,整个表达式的求值计算终止,表达式的结果为 1 。
  • 当变量a的值为 30 时,逻辑或运算||的左操作数(a < b)&&(x < y)的值为 0 ,这时需计算右操作数(c = b - !c)的值,变量c的值变为 20 ,整个表达式的值为 1 。

注意:当逻辑或运算 || 和逻辑与运算 && 构成表达式,并从左到右求值时,若根据左操作数就能判断最终结果为真或假时,求值立即终止,右操作数不会被计算。

下面列出了几类常用的逻辑表达式。 若要判断变量x是否在 [ 1 , 100 ) 区间中,正确的表达式如下所示。

  1. x >= 1 && a < 100 // 正确表示 x ∈ [ 1 , 100 )

不是采用如下代码。

  1. 1 <= x < 100 // 错误表示 x ∈ [ 1 , 100 )

当要判断一个变量是大写字母 'A'、换行符,或者是空格符时,应该用如下表达式。

  1. c == 'A'||c == '\n'||c == ' '

编程要求

根据提示,在右侧编辑器中的 Begin-End 区间补充代码。读入一行文本,统计里面大写字母的个数。 格式要求详见测试说明。

测试说明

平台会对你编写的代码进行测试。

测试输入:safgakghJAadfg 预期输出:

  1. 该文本流大写字母共有2个。

测试输入:safgakgfg 预期输出:

  1. 该文本流大写字母共有0个。

代码展示:

#include<stdio.h>
int main()
{int i,a,m=0;for(i=0;i<30;i++){a=getchar();if(a<='Z'&&a>='A'){m=m+1;}}printf("该文本流大写字母共有%d个。\n",m);}/* 本程序用于计算大写字母个数 */
/* 请在此处添加代码,统计大写字母 */
/********** Begin **********//********** End **********/

运行结果:


http://www.ppmy.cn/news/9292.html

相关文章

java流程控制的三种类型

1. 简介 在Java项目中&#xff0c;大多数的代码都是编写在一个个的类里面。每个类中还有很多个语句&#xff0c;并且会以英文的分号;来表示语句的结束。有些小白会很好奇&#xff0c;这一行行的代码语句是按照什么顺序执行的呢&#xff1f;是按照我们看到的从上到下的顺序执行…

【MySQL】MySQL基本数据类型

序号系列文章1【MySQL】MySQL介绍及安装2【MySQL】MySQL基本操作详解3【MySQL】MySQL基本数据类型文章目录1&#xff0c;数字类型1.1&#xff0c;整型类型1.2&#xff0c;浮点数类型1.3&#xff0c;定点数类型1.4&#xff0c;BIT类型1.5&#xff0c;直接常量2&#xff0c;时间和…

Vue+Echarts监控大屏实例十六:Echarts对接天地图插件开发

一、实例概述 本实例实现echarts使用天地图组件的开发,通过修改echarts中百度地图及高德地图插件实现echarts中使用天地图的使用。本实例实现对于监控界面的相关开发资料,提供实例源码、开发过程视频及实现过程。   1. Echarts参考文档: echarts   2. 高德地图插件:ech…

Seata应用

下载seata-server 下载地址&#xff1a;Tags seata/seata GitHub 配置Seata-server 第一步&#xff1a;配置seata-server数据源 E:\seata-server-1.4.2\seata\seata-server-1.4.2\conf\file.conf 第二步&#xff1a;创建seata数据库 create database seata 第三步&#xf…

PCL中常用的高级采样方法

0. 简介 我们在使用PCL时候&#xff0c;常常不满足于常用的降采样方法&#xff0c;这个时候我们就想要借鉴一些比较经典的高级采样方法。这一讲我们将对常用的高级采样方法进行汇总&#xff0c;并进行整理&#xff0c;来方便读者完成使用 1. 基础下采样 1.1 点云随机下采样 …

NET餐厅管理系统前端js-dwz.core

(function($){ // DWZ set regional $.setRegional function(key, value){ if (!$.regional) $.regional {}; $.regional[key] value; }; $.fn.extend({ /** * param {Object} op: {type:GET/POST, url:ajax请求地址…

Leetcode:239. 滑动窗口最大值(C++)

目录 问题描述&#xff1a; 实现代码和解析&#xff1a; 暴力法&#xff08;会超时&#xff09;&#xff1a; 原理思路&#xff1a; 单调队列法&#xff1a; 原理思路&#xff1a; 单调队列&#xff1a; 模拟过程&#xff1a; 问题描述&#xff1a; 给你一个整数数组…

数据库,计算机网络、操作系统刷题笔记24

数据库&#xff0c;计算机网络、操作系统刷题笔记24 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…