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

任务描述

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

相关知识


视频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 **********/

运行结果:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨染盛夏呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值