• 算法学习之分支结构程序设计


    鸡兔同笼问题
    已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目。
    如果无解,则输出“No answer”。
    分析:设鸡有a只,兔有b只,则a+b = n,2a+4b = m,联立解得a = (4n-m)/2,
    b = n - a。
    如果a和b不是整数,或者a和b有负数,就算错误。
    程序如下:

    #include <conio.h>
    #include<stdio.h>
    int main(){
        int a,b,n,m;
        scanf("%d%d",&n,&m);
        a = (4*n-m)/2;
        b = n-a;
        if(m%2 == 1||a<0||b<0){//这个判断很有数学的味道
               printf("No answer
    ");
        }else{
              printf("%d %d
    ",a,b);             
        }
        getch();
        return 0;
    }


    三整数排序
    输入3个整数,从小到大排序后输出。
    分析:
    a、b、c3个数一共只有6种可能的排序:abc、acb、bac、bca、cab、cba,所以最简单的思路是使用6条if语句。

    #include <conio.h>
    #include<stdio.h>
    int main(){
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        if(a<=b&&b<=c)printf("%d %d %d
    ",a,b,c);
        else if(a<=c&&c<=b)printf("%d %d %d
    ",a,c,b);
        else if(b<=a&&a<=c)printf("%d %d %d
    ",b,a,c);
        else if(b<=c&&c<=a)printf("%d %d %d
    ",b,c,a);
        else if(c<=b&&b<=a)printf("%d %d %d
    ",c,b,a);
        else if(c<=a&&a<=b)printf("%d %d %d
    ",c,a,b);
        getch();
        return 0;
    }


    还有一种思路是把a、b、c这3个变量本身改成a<=b<=c的形式。

    #include <conio.h>
    #include<stdio.h>
    int main(){
        int a,b,c,t;
        scanf("%d%d%d",&a,&b,&c);
        if(a>b){t = a;a = b;b = t;}
        if(a>c){t = a;a = c;c = t;}//a是abc中最小的了
        if(b>c){t = b;b = c;c = t;}//b是bc中最小的
        printf("%d %d %d
    ",a,b,c);//经过上面三步,完成排序
        getch();
        return 0;
    }


    还有一种思路,找出最大值,找出最小值。用总和减去最大和最小值,得到中间值。定义三个变量,分别表示最大值、最小值和中间值。

    #include <conio.h>
    #include<stdio.h>
    int main(){
        int a,b,c,x,y,z;
        scanf("%d%d%d",&a,&b,&c);
        x = a;
        //得到最小值x
        if(b<x){
          x = b;
        }
        if(c<x){
          x = c;
        }
        //得到做大值z
        z = a;
        if(b>z){
          z = b;
        }
        if(c>z){
          z = c;
        }
        y = a+b+c-x-z;
        printf("%d %d %d
    ",x,y,z);
        getch();
        return 0;
    }



  • 相关阅读:
    正则表达式 ^
    jQuery的加法运算,val()获取的结果相加变成了字符串连接。
    mssql 取数据指定条数(例:100-200条的数据)
    css样式大全(整理版)
    50个技巧提高你的PHP网站程序执行效率
    ASP版_阿里大于短信API Demo
    FusionCharts的使用方法(超详细)
    FusionCharts参数说明 (中文)
    web服务器选择Apache还是Nginx
    反向代理服务器的工作原理
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3192112.html
Copyright © 2020-2023  润新知