zoukankan      html  css  js  c++  java
  • C语言学习笔记(5)—— 语句(2)

      在介绍过顺序结构和选择结构以后,我们能通过c语言做的事依旧很少,比如换硬币问题。将一元的人民币换成一分,两分,五分的硬币共50枚。如何解决这样的问题呢?我们可以把它化解成一个求解线性方程组的问题。

      可以设需要一分的硬币x枚,两分的硬币y枚,五分的硬币z枚。于是,我们可以得到一个方程组,像这样:x+y+z = 50,0.01x+0.02y+0.05z = 1。我们知道,计算机在计算浮点数的时候可能会出现精度问题。所以,我们

         把方程组改写成x+y+z = 50,x+2y+5z = 100。

      那么问题来了,如何用C语言来求解这样的一个方程组呢??我们知道x,y,z的取值范围,x不能超过100,y不能超过50,z不能超过20,并且它们都是自然数,即它们大于0且它们都是整数。我们可以在x,y,z的取值

    范围里逐个枚举。当x+y+z = 50,x+2y+5z = 100时,输出x,y,z的值,这样,我们就得到了方程组的一个解。我们把这一过程用代码来实现。

     1 #include <stdio.h>
     2 
     3 int main(){
     4     printf("符合条件的x,y,z的取值如下:
    ");
     5     for (int x = 0;x < 100;x++) {
     6         for (int y = 0;y < 50;y++) {
     7             for (int z = 0;z < 20;z++) {
     8                 if(x+y+z == 50 &&
     9                             x+2*y+5*z == 100){
    10                     printf("
    一分硬币%d枚,两分硬币%d枚,五分硬币%d枚
    ",x,y,z);
    11                 }
    12             }
    13         }
    14     }
    15     return 0;
    16 }

      代码中,形如这样的语句被称为for语句,它后面的()内部的内容可以抽象为(表达式1;表达式2;表达式3)。其中表达式1为循环开始前要做的事情,

    表达式2为循环的终止条件,表达式3为改变循环条件变量的语句。整个循环可以这样用算法框图表示。

    在我们的代码内,出现的是一个三重循环,对于三重循环,我们可以这样理解,将第一重循环的循环体换成一个循环,在将第二重循环的循环体换成一个循环。嵌套循环可以这样用算法框图表示。

      这里,我们用算法框图表示了一个二重循环。如果想要把它改为一个三重循环。只需要将内循环的循环体改成一个循环,这样就是一个三重循环了。

      了解了for循环以后,循环语句有什么用呢??我们知道,计算机做的事情,一般都是可重复的,可重复的过程,一般都可以让计算机代劳。解方程的过程可以通过枚举,从而得到方程的解。所以,循环在计算机科学里的地位是不可忽视的,大部分的算法都基于循环,所以

    如何使用循环解决问题。是一件值得多多研究的事情。现在。我们用循环来解决打印乘法表的问题,要求是:在控制台打印出九九乘法表。像这样:

    
    

      这样一个操作对应的代码段可以是这样:

      

    #include <stdio.h>
    
    int main(){
    
        for (int i = 1;i <= 9;i++) {
            for    (int j = 1;j<= i;j++) {
                printf("%d x %d = %d	",j,i,i*j);
            }
            printf("
    ");
        }
        printf("--------------------------------------我是分割线------------------------------------
    ");
        for (int i = 9;i >= 1;i--) {
            for    (int j = 1;j<= i;j++) {
                printf("%d x %d = %d	",j,i,i*j);
            }
            printf("
    ");
        }
        return 0;
    }

      乘法表的打印是逐行打印的,一行一行的打印。每一行都需要打印,所以,循环应该是一个二重循环,外循环负责逐行打印。内循环负责在每一行进行打印。

      循环语句的功能是非常强大的,大部分程序都含有循环。使用,笔者也只能挑一部分常见的循环应用来描述循环。

  • 相关阅读:
    【教程】模拟登陆百度之Java代码版
    Redis错误配置详解
    Redis内存存储结构分析
    Notepad++安装插件
    hadoop2.x 常用端口及定义方法
    微信订阅号可以开通微信支付吗?
    CDH 的Cloudera Manager免费与收费版的对比表
    Hadoop调度框架
    再谈spark部署搭建和企业级项目接轨的入门经验(博主推荐)
    Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本)
  • 原文地址:https://www.cnblogs.com/zhuxingtian/p/9900516.html
Copyright © 2011-2022 走看看