C语言入门篇(三)上

简介: C语言入门篇(三)上

什么是语句?


C语句可分为以下五类:


  • 表达式语句
  • 函数调用语句
  • 控制语句
  • 复合语句
  • 空语句

本篇文章后面介绍的是控制语句。

 控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。

 可分成以下三类:

 1.条件判断语句也叫分支语句: if语句、 switch语句;

 2.循环执行语句: do while语句、while语句、 for语句;

 3.转向语句: break语句、goto语句、continue语句、 return语句。


#include<stdio.h>
int main()
{
  3 + 5;//表达式语句
  ;//空语句
  printf("iloyo.");//函数调用语句
  return 0;
}


1. if语句


if语句的语法结构:


if(表达式)
  语句1;
else
  语句2;
//单分支-if语句可以不加else
if(表达式)
  语句;
//多分支
if(表达式1)
  语句1;
else if(表达式2)
  语句2;
else
  语句3;
//嵌套使用
if(表达式1)
    语句1;
else
{
    if(表达式2)
      语句2;
    else
      语句3;
}

如果表达式的结果为真,则语句执行

在C语言中:0表示假,非0表示真。


如果条件成立,要执行多条语句,应该使用代码块:{ }


#include<stdio.h>
int main()
{
  if(表达式)
  {
    语句列表1;
  }
  else
  {
    语句列表2;
  }
  return 0;
}

实例:


//代码1
#include<stdio.h>
int main()
{
  int age;
  scanf("%d", &age);
  if (age < 18)
    printf("未成年");
  return 0;
}
//代码2
#include<stdio.h>
int main()
{
  int age ;
  scanf("%d", &age);
  if (age < 18)
    printf("未成年\n");
  else
    printf("成年\n");
  return 0;
}

假设人的一生可分为:幼年(1-10岁)、青年(11-35岁)、中年(36-60岁)、老年(61- 岁)。已知一个人的年龄,如何知道ta处于人生哪个阶段呢?


#include<stdio.h>
int main()
{
  int age = 20;
  //int age;
  //scanf("%d",&age);
  if (age >= 1 && age <= 10)
    printf("幼年");
  else if(age>10&&age<=35)
    printf("青年");
  else if(age>35&&age<=60)
    printf("中年");
  else
    printf("老年");
  return 0;
}

1.1 悬空else

下面是一个悬空的else语句,本意是与第一个if语句匹配,输出结果应该是“haha”,为什么会出错呢?

78358a97855a67c1de8d517dd89819f8_0084e78658a34f4dbd11f9eb42d2701a.png

原因一:默认情况下,if只能控制一条语句,若想控制多条语句,就要加上{ },else同上。

原因二:if-else 就近原则,else是与离它最近的if匹配的。

改正如下:


#include <stdio.h>
int main()
{
  int a = 0;
  int b = 2;
  if (a == 1)
  {
    if (b == 2)
    //{
      printf("hehe\n");
    //}
  }
  else
    //{
    printf("haha\n");
    //}
  return 0;
}

1.2 if书写形式对比

下面的代码2和代码4更好,逻辑更加清晰,不容易出错。


//代码1
if (condition)
{
  return x;
}
return y;
//代码2
if(condition)
{
  return X ;
}
else
{
  return y;
}
//代码3
int num = 1;
if(num == 5)
{
  printf("hehe\n");
}
//代码4
int num = 1;
if(5 == num)
{
  printf("hehe\n");
}
  • 当常量与变量判断相等时,把常量放在“==“”左边,避免出错
  • 函数体中,只要碰到return就返回,后面语句不再执行
  • 养成良好的代码风格,在笔试中才不会丢分

1.3 练习

1.判断一个数是否为奇数

2.输出1-100之间的奇数


下划看答案


//第一题
#include<stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  if (n % 2 == 1)
  {
    printf("%d是奇数\n",n);
  }
  else
  {
    printf("%d不是奇数\n",n);
  }
  return 0;
}
//第二题
//代码1
#include<stdio.h>
int main()
{
  int i = 1;
  while (i <= 100)
  {
  printf("%d ", i);
  i = i+2;
  }
  return 0;
}
//代码2
#include<stdio.h>
int main()
{
  int i;
  for (i = 1; i <= 100; i++)
  {
  if (i % 2 != 0)
  {
    printf("%d ", i);
  }
  }
  return 0;
}

相关文章
|
Web App开发 编解码 网络协议
LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
在上周落幕帷幕的多媒体领域技术盛会——LiveVideoStackCon音视频技术大会上,阿里云的高级技术专家李刚进行了《下一代低延时的直播CDN》技术分享。主讲人李刚,多年关注在CDN这个领域,早期主要研究和cache服务器缓存以及流媒体相关的技术, 专注CDN文件分发、图片与大文件下载等业务。
5561 0
|
机器学习/深度学习 人工智能 自然语言处理
从前端智能化看“低代码/无代码”
什么是低代码/无代码开发?业界对于低代码/无代码开发是否存在其他不同的理解?低代码开发和无代码开发之间的区别是什么?
从前端智能化看“低代码/无代码”
|
10月前
|
存储 安全 数据中心
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具。本文探讨了 Docker 如何通过 Namespace 和 Cgroups 实现 CPU、内存、网络和存储资源的隔离,提高系统安全性和资源利用率,以及面临的挑战和应对策略。
174 1
|
弹性计算 数据挖掘 应用服务中间件
阿里云服务器通用算力型U1实例解析,实例性能、适用场景及常见问题参考
在阿里云服务器的所有实例规格中,通用算力型u1实例主打的是高性价比,通用算力型U1实例云服务器自推出以来,就受到了广大用户的关注,也是目前阿里云的活动中比较热门的云服务器实例,这个实例规格的性能要好于经济型e等共享型实例,价格又比计算型c7、通用型g7等其他企业级实例要低一些。本文将深入解析通用算力型U1实例的特点、适用场景以及价格优势,帮助用户更好地了解该云服务器实例。
阿里云服务器通用算力型U1实例解析,实例性能、适用场景及常见问题参考
|
Java
IDEA代码生成插件CodeMaker
## 前言 Java 开发过程中经常会遇到编写重复代码的事情,例如说:编写领域类和持久类的时候,大部分时候它们的变量名称,类型是一样的,在编写领域类的时候常常要重复写类似的代码。类似的问题太多,却没找到可以支持自定义代码模板的插件,只能自己动手,丰衣足食,开发了一个 IDEA 的代码生成插件,通过 Velocity 支持自定义代码模板来生成代码。
5006 0
pycharm设置作者信息
5分钟学会一个知识点!!! ps:知识从来就不难,只是枯燥,让枯燥的知识变得有趣是每一个乐于分享者的梦想
pycharm设置作者信息
An动画优化之遮罩层动画
An动画优化之遮罩层动画
547 0
An动画优化之遮罩层动画
|
前端开发 测试技术 API
04 埋点测试实战之诸葛IO
04 埋点测试实战之诸葛IO
|
SQL JSON 分布式计算
了解 NiFi 处理器 | 学习笔记
快速学习了解 NiFi 处理器
666 0
了解 NiFi 处理器 | 学习笔记
|
机器学习/深度学习 算法 搜索推荐
Twitter 算法开源究竟会是什么样的?
本文最初发布于 Travis Fischer 的个人博客。
483 0
Twitter 算法开源究竟会是什么样的?