zoukankan      html  css  js  c++  java
  • C语言每日一题之No.1

          鉴于在学校弱弱的接触过C,基本上很少编程,C语言基础太薄弱。刚好目前从事的是软件编程,难度可想而知。严重影响工作效率,已无法再拖下去了。为此,痛下决心恶补C语言。此前只停留在看书,光看好像也记不住,C这东西毕竟是练出来的,所以从今天开始,每日一道C语言题目,从题目入手来补知识漏洞。题目比较基础,如不堪入目,还请见谅。

    1.题目:输入三个整数,输出最大的数 

    2.思路:定义三个变量用来存储输入的整数

            比较三个变量的大小,找到最大的数

            定义一个变量存储来存储最大的数

    3.程序:

     1 #include <stdio.h>
     2 
     3 int maxium(int a,int b,int c)
     4 {
     5    int max = 0;
     6   
     7    max = a>b ? a:b;//三目运算符,两两相比较,max保存大的数
     8    max = max>c ? max:c;//三目运算符,大的数与剩下的数作比较
     9    return max;
    10 }
    11 void main()
    12 {  
    13    int a = 0; //定义三个变量a、b、c来保存输入
    14    int b = 0;
    15    int c = 0;
    16    int max = 0;//定义变量max来保存最大数
    17    printf("请输入任意三个数:");
    18    scanf("%d",&a);//输入三个数
    19    scanf("%d",&b);
    20    scanf("%d",&c);
    21    max = maxium(a,b,c);//调用获取最大数
    22    printf("三个数中最大的数是:%d
    ",max);
    23 
    24 }

    4.改进:

        求最大数的函数不必设三个输入参数,假设是10个数或者是更多的数来比较呢?难道输入参数也要设置为10个吗?比较明智的办法是求最大数的函数设置为两个输入参数,尽做两两比较,然后递归调用这个函数即可

     1 #include <stdio.h>
     2 /*
     3 int maxium(int a,int b,int c)
     4 {
     5    int max = 0;
     6   
     7    max = a>b ? a:b;//三目运算符,两两相比较,max保存大的数
     8    max = max>c ? max:c;//三目运算符,大的数与下一个数作比较
     9    return max;
    10 }*/
    11 int maxium(int a,int b)
    12 {
    13     int max = 0;
    14     max = a>b ? a:b;
    15     return max;
    16 }
    17 void main()
    18 {  
    19    int a = 0; //定义三个变量a、b、c来保存输入
    20    int b = 0;
    21    int c = 0;
    22    int max = 0;//定义变量max来保存最大数
    23    printf("请输入任意三个数:");
    24    scanf("%d",&a);//输入三个数
    25    scanf("%d",&b);
    26    scanf("%d",&c);
    27   // max = maxium(a,b,c);//获取最大数
    28    max = maxium(maxium(a,b),c);//获取最大数
    29    printf("三个数中最大的数是:%d
    ",max);
    30 
    31 }

    5.延伸:如果是更多的数呢?比如10个数?

     1 #include <stdio.h>
     2 
     3 int maxium(int a,int b)
     4 {
     5     int max = 0;
     6     max = a>b ? a:b;
     7     return max;
     8 }
     9 
    10 void main()
    11 {
    12     int nInput[10] = {};//定义一个数组来存放10个数并且初始化
    13     int max = 0;
    14     printf("请输入任意10个数:");
    15     for(int i=0;i<10;i++)
    16     {
    17        scanf("%d",&nInput[i]);
    18        max = maxium(max,nInput[i]);//循环调用求最大数函数,将最大值存放在max里再参与下次比较
    19     }
    20     printf("10个数中最大的数是:%d
    ",max);
    21 }

    由以上代码发现语法错误:数组初始化问题

    int nInput[10] = {};是肯定不对的

    正确的初始化方法:

    int nInput[10] = {0};

    那么接下来有问题的是:max的初始值为0,让这10个数与从0开始一次比较,那假如这10个数都比0小呢?那输出的结果等于0.很显然,这是不行的,因为10个数中并没有0这个数。max的初始值应该为第一个数,但是如果在循环里把第一个数赋给max作为初始值,那么每次循环的时候max都被初始化,循环调用maxium(int a,int b)就失去了意义。到底怎样写才会简洁呢?

    6.知识点:

    数组初始化

    printf()

       

  • 相关阅读:
    SQL(4)— Date、order by
    步入三十(二)
    【js】特殊字符转义
    【ionic】项目中$ionicModal简单用法
    【ionic】常见问题处理
    【js】视频截图
    实现笔记本拔除电源后修改屏幕缩放比例
    激活 公众号java
    【Golang】基于beego/orm实现相同表结构不同表名的分表方法实现
    .Net Cors 跨域配置域名通配符
  • 原文地址:https://www.cnblogs.com/TTTTT/p/3700477.html
Copyright © 2011-2022 走看看