控制结构(-)

相信大家对流程图肯定很熟悉。下面我将介绍的正是关于此方面的,c语言中,控制结构大体分为选择结构和循环结构。

一.选择结构:

    先贴出一般用于选择结构的语法知识:

1:

#include<stdio.h>
//第一种
int main()
{
if()
{ }
}

2:

#include<stdio.h>
//第二种
int main()
{
if() //如果括号内的条件满足,则进行if下面的操作
{ }
else//否则,则进行else下面的操作
{ }
}

3:

#include<stdio.h>
//第三种
int main()
{
if() //如果if括号内的条件满足,则进行if下面的操作,如不满足则跳过这一语句
{ }
else if()//如果else if括号内的条件满足,则进行else if下的操作
{ }
else//如果上面两个语句都不满足,则进行else 内的操作
{ }
}

或许这样看有些虚幻。

还是例题说着方便,下面就用例题来解释吧。

从键盘上输入三个数,找出其中最大的一个数。

画一个流程图出来,很容易就能得出,可是如何用C语言程序来表示这个流程图??

#include<stdio.h>
int main()
{
int a,b,c;//定义了三个整数类型的变量
scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
/*现在假设a是最大值,分别与b,c比较,如果a<b,吧b的值赋值
给a,现在a就是a与b中的最大值,同理,与c比较,可得三个数的最值。
*/
//需要注意的是:c语言中的等号不是”=“,而是”==“
//”=“,在c中是赋值的意思,即把右边的值,赋值给左边
if(a<b)
a=b;
if(a<c)
a=c;
printf("%d",a);
}

运行结果:

此程序虽然比较简单,但是它是有缺点的,如过a不是最大的,b或者c都可能会把它们的值给a,那么a以前的值是什么呢?

此时,电脑已经不知道了,因为你用了赋值语句把a以前的值覆盖了,不信可以试试。

#include<stdio.h>
int main()
{
int a,b,c;//定义了三个整数类型的变量
scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
/*现在假设a是最大值,分别与b,c比较,如果a<b,吧b的值赋值
给a,现在a就是a与b中的最大值,同理,与c比较,可得三个数的最值。
*/
//需要注意的是:c语言中的等号不是”=“,而是”==“
//”=“,在c中是赋值的意思,即把右边的值,赋值给左边
if(a<b)
a=b;
if(a<c)
a=c;
printf("%d\n",a);
printf("%d %d %d\n",a,b,c);//输出现在a,b,c的值
}

运行结果:

那么,还有没有其他的方法呢?当然有。现在就列举出如下几种方法,不改变a,b,c的值,但是同时又能找到a,b,c中的最值。

方法一:

#include<stdio.h>
int main()
{
int a,b,c,d;//增加了一个d变量
scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
/*现在假设d是最大值,分别与a,b,c比较较,可得三个数的最值。
先要让d等于a,b,c三个数当中的某一个值,因为在定义时,a,b,c,d
都会被随机的赋予一个随机值,然后我们又从键盘里输入值,给了a,b,c;
但是d还是一个随机数。这个随机数可能比a,b,c都要大。
*/
d=a;
if(d<b)
d=b;
if(d<c)
d=c;
printf("%d\n",d);
printf("%d %d %d\n",a,b,c);//输出现在a,b,c的值
return ;
}

运行结果:

方法二:

#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c); //从键盘输入三个数
if(a>b&&a>c) //如果a既比b大,又比c大,输出a
{
printf("%d\n",a);
}
if(b>a&&b>c) //如果b既比a大,又比c大,输出b
{
printf("%d\n",b);
}
if(c>a&&c>b) //如果c既比a大,又比b大,输出c
{
printf("%d\n",c);
}
printf("%d %d %d\n",a,b,c); //输出a,b,c
return ;
}

运行结果,可以试一下与上面的运行结果是一样的

从上面的代码中,可以看到一个陌生又并不陌生的符号“&&”。  或许一个“&”,看到会很熟悉,它是取地址符,可以在scanf中用到。但是两个“&”,是什么意思呢? 它是数学中的且,即“&&”符号两边的式子都要同时满足,然后整体才满足。与“&&”对应的符号是“||”,即数学中的或,它表示在“||”两边的式子有一个满足就可以。

方法三:

#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);//从键盘输入三个数
if(a>b) //如果a比b大
{ //如果a比c大,输出a
if(a>c)
printf("%d\n",a);
}
if(b>a) //如果b比a大
{ //如果b比c大,输出b
if(b>c)
printf("%d\n",b);
}
if(c>a) //如果c比a大
{ //如果c比b大,输出c
if(c>b)
printf("%d\n",c);
}
printf("%d %d %d\n",a,b,c); //输出a,b,c
return ;
}

同样,运行结果是一样的,但是我们能从上面学到什么呢?从上面可以看到,if语句里面还有一个if,用来补充上面的条件.由此可知if语句是可以嵌套使用的。

看了上面的,应该会对判断语句有一个更深入的理解。可以做其他的一些例题了。

上机练习:1.从键盘上输入a,b,c。对a,b,c,进行从大到小排序。运行结果如下。

2.从键盘上输入五个数,找到其中的最大值和最小值,并输出.

简单学C——第二天的更多相关文章

  1. [老老实实学WCF] 第二篇 配置WCF

    老老实实学WCF 第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Col ...

  2. 跟我学SpringCloud | 第二篇:注册中心Eureka

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...

  3. 简单学C——第四天

    数组 在学数组之前,有必要把前面的知识复习一遍,当然我的复习,仅仅只是提一下,而对于你,则应该认真的看一下前面的知识点,不懂可以百度,哈哈. 前面我们大致学了 1.定义变量,2.数据的输入与输出,3. ...

  4. (转)[老老实实学WCF] 第二篇 配置WCF

    第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Collections. ...

  5. (转)[老老实实学WCF] 第二篇 配置WCF

    在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Collections.Generic; u ...

  6. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  7. drf框架之 路飞学城(第二天)

    1.第二天的项目是用户购物的数据存入到购物车中,这样保存的数据是存放在redis中 1. 首先先配置redis的数据库链接: #注意, 数据从redis中获取到的内容,最原始的是二进制形式的数据,想要 ...

  8. 《Linux就该这么学》第二期视频

    Linux就该这么学--第二期学习笔记... ------------- 你的未来取决于你现在点点滴滴的努力 需要用到的一些工具: Vm11激活码 ---------- root在Linux系统中相当 ...

  9. 零基础学Java第二节(运算符、输入、选择流程控制)

    本篇文章是<零基础学Java>专栏的第二篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 第一章 运算符 1.1 算术运算符的概述和用法 运算符 对常量和变 ...

随机推荐

  1. SSO之CAS备忘

    http://blog.chinaunix.net/uid-28380443-id-4740103.html 自己负责的公司基于CAS单点登录平台架构已经上线运行,很多细节的东西是时候备忘一下了,开源 ...

  2. linux杂谈(十九):DNSserver的配置(二)

    1.本机和外网的解析 ​ ​之前讨论了DNS的正向解析和反向解析,但有的时候我们想让DNSserver对于server本机的解析和对于外网的解析是不同的.那就须要在主配置文件里对本机和外网进行不同的配 ...

  3. angularjs-yeoman环境配置

    yum install npm -y npm install -g grunt-cli bower yo generator-karma-require generator-angular-requi ...

  4. like的性能问题

    使用like'%匹配的文字%',无法优化,因为索引起不到作用. 不过like'匹配的文字%',索引起作用.

  5. 常用js代码学习

    1.用JS实现的radio图片选择按钮效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  6. 手机端的表单验证和PC端的不同

    1.手机端:由于页面小的局限性,表单验证从上到下依次进行,如果上一个验证不通过,则给出错误提示,代码中return回去,不必进行下一个的校验: 2.PC端:页面范围大,一般是在表单的后面或者下面,提示 ...

  7. javascript 之闭包-理解不了来找我

    1,闭包是什么 (百度百科定义)--闭包是可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变 量).“闭包” 一词 ...

  8. JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解

    以查询一个用户信息(id,name)为例: JDBC 1. 获取一个connection 2. 生成一个statement 3. 拼接SQL语句 4. 查询对象,获取结果集(假设已经找到我们需要的对象 ...

  9. Nico Game Studio 1.基本UI和地图编辑基础功能

    完成了基本界面. 本来想自画UI,但是考虑到工作量较大和美观程度有限,以及工具使用对象是比较初级玩家,处于性价比和最初目的,放弃了自绘.

  10. Attribute 特性

    转载   不错   摘要:纠结地说,这应该算是一篇关于Attribute 的笔记,其中的一些思路和代码借鉴了他人的文笔(见本文底部链接).但是,由于此文对Attribute 的讲解实在是叫好(自夸一下 ...