c语言电文加密a变成z_大学C语言引论&简单判定性问题

本文介绍了C语言中判定性问题的解决方法,包括逻辑表达式和位运算的处理。强调了C语言在操作系统、系统程序和科研项目中的重要性,解释了C语言并未过时的原因。同时,详细讲解了C语言中的if判断结构、if-else判断结构、if语句的嵌套以及switch判定结构,帮助读者理解C语言的控制流程。
摘要由CSDN通过智能技术生成
a5d7763d364c8457da759ff532c10cd6.png课程介绍 87467af0b9667ae73eac92f542e2d31e.png cc6d97361a35390f4cc2a3fc1a088ccd.png

教材:

《C语言程序设计与应用》、《C语言程序设计与应用实验指导书》

MOOC:

《C语言程序设计》——浙江大学翁恺

c9d8dea3f052484b00c85ea193b9f720.gif为什么要学习C语言 37f94ee2caa7e6b9bf2470795c43ea71.png

相信很多人都会有这样的疑问:C语言已经是很古老的编程语言了,为什么还要学习它呢?用这些时间去学习Python、Java不香吗?甚至有一些人认为C语言已经过时了,可是就在今年五月,在TIOBE语言排行榜上C语言再次反超了Java位居第一。

C语言为什么还能占据霸主地位呢?或许C语言没有其他语言那么简单,可是在对于操作系统和系统使用程序以及需要对硬件进行操作的场合,C语言明显高于其他语言,因此许多应用软件是用C语言编写的。

071ef67046f078bb8df665070fb9e3b7.png

此外,C语言还具有绘图能力强,极强的数据处理能力等特点。它不仅仅应用在软件开发上,还应用在各类科研项目上。

该篇文章将简要介绍大学C语言中一些简单判定性问题的解法,所谓判定性问题就是提出一个问题,只需要给出Yes或No答案的问题。希望对大家有所帮助。

基础知识变量定义小规则:

(1)由英文字母、数字和下划线组成,其必须以英文字母或下划线开头;

(2)不允许使用关键字(保留字)作为标识符的名字;

(3)标识符命名应做到“见名知意”;

(4)标识符区分大小写。

表达式小规则

(1)简单赋值运算符记为“=”,它的作用是将一个表达式的值赋给一个变量。由“=”连接的式子称为赋值表达式。其一般形式为:变量=表达式。

(2)赋值运算符是右结合性运算符。如x=y=z,由于“=”的右结合性,应先执行y=z,再执行x=(y=z)运算。

(3)如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。

(4)在定义变量时赋以初值的方法,称为初始化。其一般形式为:类型说明符变量1 = 值1,变量2 = 值2。

常用的类型输出:

%d          整型

%f          实型

%e          实型(科学计数法)

%c          字符型

%u          无符号整型

a5d7763d364c8457da759ff532c10cd6.png题型贴士 87467af0b9667ae73eac92f542e2d31e.png处理逻辑表达式

例题:当i=10、j=3、k=0时,i= =1&&(j= =3||(k=k+1)),则表达式最终的值是多少?k值是多少?

参考代码:

#include

void main()

{

        int i=10;

        int j=3;

        int k=0;

        int ans=((i==1)&&(j==3||(k=k+1)));

        printf("ans=%d  k=%d\n",ans,k);

}

(1)“&&”与运算,“||”或运算,“!”非运算

(2)a>b && c>d等价于(a>b) && (c>d)

(3)在判断一个逻辑量“真假”时,以非0表示“真”,以0表示“假”。而在给出逻辑运算结果时,以0代表“假”,以1代表“真”

(4)短路运算:在进行逻辑运算时,逻辑表达式运算到其值完全确定时为止。例如:例题中计算i= =1&&(j= =3||k=k+1)时,由于i= =1不成立,决定了整个表达式的值为0,因此 (j= =3||k=k+1)就不再计算了,k的值还是0。

00e7e02bc48fd0a8f0db4ca02bb3bd22.png位运算

 所谓位运算是指进行二进制位的运算。

1. 按位与运算(&)

例题:9&5=?

参考答案:可写算式如下:

9的二进制补码:        0 0 0 0 1 0 0 1

5的二进制补码:        0 0 0 0 0 1 0 1

                      &  ___________________

                           0 0 0 0 0 0 0 1(1的二进制补码)

即9&5=1。

只有对应的两个二进位均为1时,结果位才为1,否则为0,它是双目运算符。即:0&0=0;0&1=0;1&0=0;1&1=1。

2. 按位或运算(|)

例题:9|5=?

参考答案:可写算式如下:        

9的二进制补码:        0 0 0 0 1 0 0 1

5的二进制补码:        0 0 0 0 0 1 0 1

                        |   _________________

                             0 0 0 0 1 1 0 1 (十进制为13)

即9|5=13。

只要对应的两个二进位有一个为1时,结果位就为1,它是双目运算符。即:0|0=0;0|1=1;1|0=1;1|1=1。

3. 按位异或(^)

例题:9^5=?

参考答案:可写算式如下:        

9的二进制补码:        0 0 0 0 1 0 0 1

5的二进制补码:        0 0 0 0 0 1 0 1

                        ^   _________________

                             0 0 0 0 1 1 0 1 (十进制为12)

即9|5=12。

当两对应的二进位相异时,结果为1,它是双目运算符。即:0^0=0;0^1=1;1^0=1;1^1=0。

4. 求反运算(~)

例题:进行~9的运算

参考答案:0000000000001001

            ~ __________________

              1111111111110110

对参与运算的数的各二进位按位求反,它是单目运算符,具有右结合性。即:~0=1;~1=0。

5. 左移运算

左移运算符“<

6. 右移运算

右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0;而为负数时,符号位为1,最高位是补0还是补1取决于计算机系统的规定。

65bf90593a29c19b4af557789f6fa072.gif判定性结构

1. if判断结构

流程图如下:

a9958b3e3bf9df1c93e0934d7e434b36.png

2. if-else判断结构

流程图如下:

 cf18e104a9998225b1ea2601829b86c6.png

3. if语句的嵌套

if (表达式)

       if (表达式)

         语句1;

else

      if (表达式)

         语句2;

注意:在C语言中,else 应与同一个语句块内,最近的一个且没

      有其它 else 配对的 if 组成配对关系。

4. switch判定结构

switch(表达式){

         case常量表达式1: 语句块1; [break;]

          case常量表达式2: 语句块2; [break;]

          …

          case常量表达式n: 语句块n; [break;]

        [default : 语句块n+1;]

}

5. switch与if-else的比较

① else-if比switch的条件控制更强大一些

else-if可以依照各种逻辑运算的结果进行流程控制

switch只能进行==判断,并且只能是整数或字符判断

② switch比else-if更清晰

65bf90593a29c19b4af557789f6fa072.gif例题

要求程序功能为:输入学生考试分数,按A、B、C、D、E给出成绩的等级。90分以上(包括90分)为A等,60分以下(不包括60分)为E等,中间每10分为一个等级。

参考答案:

#include

void main(void)

{

    char cLevel=0x20;

    float fScore;  

    printf("请输入成绩:");

    scanf("%f",&fScore);  /*输入考试分数*/

    if(fScore>100.0||fScore<0.0)

     {  

        printf("\n输入成绩错误!");

        return;

      }

else if (fScore > 89.99)        cLevel='A'; /*分数fScore>=90*/

    else if (fScore > 79.99)      cLevel='B'; /*分数90>fScore>=80*/

    else if (fScore > 69.99)      cLevel='C'; /*分数80>fScore>=70*/

    else if (fScore > 59.99)      cLevel='D'; /*分数70>fScore>=60*/

    else                             cLevel='E'; /*分数fScore<60*/

    printf("该成绩的等级为:%c\n",cLevel);

fabc6869a9ec7b603544c6eef22217dc.png

下篇推送预告:循环结构及应用

d0bb54bba28f9598e1a5ac98bc941f62.png 54148f0e2349d4d5a4592e1cce545660.png扫码关注我们了解更多计算机知识 ae6742f44a198790173bc36a3bc1d0ac.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值