开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

if--(else)语句,getchar()和putchar()、&&、||、!逻辑运算符

简介:
+关注继续查看

1、if 语句;示例程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
int main()
{
const int FREEEZING=0;
float temperature;
int cold_days=0;
int all_days=0;
printf("enter the list of daily low temperatures.\n");
printf("use Celsius,and enter q to quit.\n");
while(scanf("%f",&temperature)==1)
{
all_days++;
if(temperature<FREEEZING)
cold_days++;
}
if(all_days!=0)
printf("%d days total:%.lf%% were below freezing.\n",all_days,100.0*(float) cold_days/all_days);
if(all_days==0)
printf("\a No data entered!\n");//报警提示一声并无输入
return 0; 
}

运行结果:

wKiom1mAQKaBB_8bAAAeGmS4oMY122.png

wKiom1mAQKeSlkzjAAAfhbo9YzQ107.png

注释程序:while循环的判断条件利用scanf()的返回值遇到非数字输入时循环终止。用float而不是int来声明temperature,这样程序就能接受如上输入格式,复数也是可以的。

◆if()语句被称为分支语句(branching statement)或者是选择语句(selection statement),因为它提供了一个交汇点,在此处程序需要选择两条分支中的一个继续前进,一般的形式如下:if(expression)

 statement

如果expression值为真就执行statement;

◆if 还可以是符合语句:例如:if(a>b)

{

c++;

printf("   ");

}注意即使if使用了一个复合的语句,整个if结构仍将被看做是一个简单的语句。

2、if else 语句

注意if()复合语句的完整性,一对{}表征结束。

1
2
3
4
5
6
if(x>0)
{  printf("    ");
   x++;
}
else
 printf("    ");

3、介绍getchar()和putchar()

getchar()函数没有返回值,它返回来自输入设备的下一个字符,例如:

ch=getchar()就相当于scanf("%c",&ch);

putchar()函数打印他的参数,putchar就相当于printf("%c",ch);

ctype.h系列字符函数

实例程序;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<ctype.h>
int main()
{
char ch;
while((ch=getchar())!='/n')
{
if (isalpha(ch))//如果是一个字母
    putchar(ch+8);//输出其后的第八个
else
    putchar(ch);//否则,原样输出,比如逗号啥的 都照常打印。
}
    putchar(ch);
return 0;
}

运行结果:

wKiom1mBP1zQTjKqAAAJ4obxy6c007.png

还可以适用于简单的加密算法呢,不这过个安全度太低,还是比较适合于平时简单的练习,

4、判断素数,如果不是求因子。

示例程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<stdio.h>
//#include<stdbool.h>
int main()
{
unsigned long num;
unsigned long div;//约数
int isPrime;//素数的标志
printf("please enter the integer for analysis ");
printf("enter q to quit.\n");
while(scanf("%lu",&num)==1)
{
for(div=2,isPrime=1;div*div<=num;div++)
{
if (num%div==0)
{if((div*div)!=num)
printf("%lu is divisible by %lu and %lu.\n",num,div,num/div);
else
printf("%lu is divisible by %lu.\n",num,div);
isPrime=0;//不是素数
}
}
if(isPrime)
printf("%lu is prime.\n",num);
printf("please enter the another number to anlysis:");
printf("enter q to quit.\n");
}
printf("bye.\n");
return 0;
}

运行结果:

wKiom1mBSQDxjjo_AAA8ityqnNE004.png

5、if语句使用总结;

形式1:

1
2
if(expression)
        statement//如果expression为真,则执行statement。

形式2:

1
2
3
4
if(expression)
   statement 1
      else
    statement 2//如果expression为真,则执行statement1,如果为假,则执行statement 2.

形式3:

1
2
3
4
5
6
if(expression 1)
     statement 1
 else if(expression 2)
  statement 2
else
statement 3//如果expression 1 为真,则执行statement 1.expression1为假而expression2 为真则执行statement 2,否则这两个表达式都为假,则执行表达式3.

6、逻辑运算符

注意范围中应用:&&

可以把&&应用于测试范围,例如要检查90到100范围内的得分,可以这样做:

if(range>=90 && range<=100)

printf("good show!");

而如果你写成了:

if(90<=range<=100)

printf("good show!");//该代码是语义错误,计算机胡给出警告可能,不是编译错误。因为对于<=运算符的求值顺序是从左向右的,所以会把该测试表达式的值解释如下:(90<=range)<=100.自表达式90<=range 的值为0或者是1,但是不管是0或者是1,对于后面的<=100都是对的,所以此时你无论输入什么数进去都不会进行筛选了。



本文转自 lillian_trip 51CTO博客,原文链接:http://blog.51cto.com/xiaoqiaoya/1952763,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java 近期新闻:Vector API、Spring 升级及 CVE、Payara 平台、Groovy 和 TomEE 升级
Java 近期新闻综述,内容主要涉及 OpenJDK、JEP 426、Oracle 发布 4 月关键补丁更新、JDK 19、Liberica JDK 及原生镜像工具包升级、多个 Spring 点版本和里程碑版本、Payara 平台 April 2022 版本发布、Quarkus 2.8.1.Final、Apache Groovy 4.0.2、Apache TomEE 8.0.11、JobRunr 5.0.1 和一项 JReleaser 1.0 升级。
68 0
在Kubernetes里使用gradle缓存加速编译和docker in docker例子
1.我们的代码编译需要用到gradle6.2版本,jdk13版本,docker in docker策略 2.因为是在CI环境中使用,所以gradle容器会因为流水线的触发,不停的启动和删除。下载jar包会非常消耗时间,我们需要持久化这些gradle缓存。 3.挂载这些gradle缓存文件到机器上,可以用ceph集群和NFS,这里我偷懒,先用NFS做,后期资源充足再换成ceph。 4.因为我们有并行流水线的可能,所以gradle容器可能一次不止一个,而gradle的caches一次只能被一个进程占用,为了避免多容器占用同一个gradle的caches,我们需要有策略。
160 0
在WDCP v3里设置站点通过IP和端口访问 - apache
在wdcp v3面板上设置通过IP+端口的网址访问站点。
1115 0
基于 Quorum 集群搭建讲解如何从 docker-compose 迁移到 Kubernetes
我们经常会遇到搭建多节点集群得需求, 例如摩根推出的基于以太坊的区块链 Quorum. 对于这种搭建多借点得需求, 我一般都是先通过 docker-compose 在本地实现多节点, 然后再基于 docker-compose 迁移到 Kubernetes .
1635 0
Dubbo 报错 com.alibaba.dubbo.rpc.RpcException
这个报错是因为用到的一些类没有序列化造成的,这个错误是由于我service用到了一些工具类,工具类没有实例化造成的。 只要是需要注册到dbbo上的每一个对象都需要做序列化。
2696 0
基于角色的访问控制,Docker EE 为 Kubernetes 护航
揭秘Docker EE 新版本特性 , RBAC为Kubernetes 护航。基于角色的访问控制,并且支持高度自定义的角色。
1714 0
13688
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载