人人都能学会的编程入门课
胡光
原百度高级算法研发工程师
立即订阅
953 人已学习
课程目录
已更新 15 讲 / 共 32 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (1讲)
开篇词 | 别闹了,学编程 ≠ 学语言
免费
语言基础篇 (13讲)
01 | 学习编程,我到底该选择哪门语言?
02 | 第一个程序:教你输出彩色的文字
03 | 判断与循环:给你的程序加上处理逻辑
04 | 随机函数:随机实验真的可以算 π 值嘛?
05 | 数组:一秒钟,定义 1000 个变量
06 | 字符串:彻底被你忽略的 printf 的高级用法
做好闭环(一):不看答案可能就白学了
07 | 指针系列(一):记住,指针变量也是变量
08 | 指针系列(二):记住,指针变量也是变量
09 | 函数:自己动手实现低配版 scanf 函数
10 | 预处理命令(上):必须掌握的“黑魔法”,让编译器帮你写代码
11 | 预处理命令(下):必须掌握的“黑魔法”,让编译器帮你写代码
做好闭环(二):函数是压缩的数组,数组是展开的函数
测试篇 (1讲)
期中测试 | 给语言基础篇交一份满分答卷,去迎接新的挑战!
人人都能学会的编程入门课
登录|注册

做好闭环(一):不看答案可能就白学了

胡光 2020-01-18
你好,我是胡光。
不知不觉,语言基础篇已学习过半,我非常高兴,看到很多同学都在坚持学习。并且,还有一些同学,每每都能在专栏上线的第一时间里,给我留言,提出疑惑。当面对一些知识点的时候,如果在我的观念中它是不说自明,而对于新手的你来说,可能十分难理解的时候,我也很希望你能指出来,我会在留言区中给你解答的。因为,我知道这种讨论,肯定能够帮助到更多的人。
大部分留言,我都在相对应的文章中回复过了,而对于文章中的思考题呢,由于要给你留足思考时间,所以我选择,一起留在今天这样一篇文章中,给你进行一一的解答。
看一看我的参考答案,和你的思考结果之间,有什么不同吧。也欢迎你在留言区中,给出一些你感兴趣的题目的思考结果,我希望我们能在这个过程中,碰撞出更多智慧的火花。在这里呢,@rocedu 用户在第一篇留言区中给大家推荐的《程序设计实践》一书,也是非常优秀的书籍。有兴趣的小伙伴,也可以去到他提到的豆瓣读书主页中去游览一番。

第一个程序:教你输出彩色的文字

在这一篇里面呢,我们接触了如何在 Linux 环境下输出彩色文字的编程知识。初步学习了 scanf 和 printf 函数的基础用法,两者一个负责读入,一个负责输出。如果你对这篇文章的内容有点陌生,可以再回去看看《第一个程序:教你输出彩色的文字》。最后围绕着这两个函数,给你出了两个思考题。这两个思考题做的怎么样?下面来看看我的参考答案吧。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《人人都能学会的编程入门课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(5)

  • Geek_Andy_Lee00
    看了老师的答疑,解决了前面不少的困惑。至于那个迷你随机数,是真的不怎么懂。先放着吧,先广后精,嘿嘿。还有,给老师提一个小小建议,就是在示例代码中加入一些文字,这样可读性更强,对初学者更友好。不然面对一个黑框框,初学者容易懵,不知道该干嘛了。去掉倍数那个思考题,自己也实现了,代码如下,但是老师的方法应该应用更加广泛。
    #include <stdio.h>
     
    int main(){
    int n, m;
    printf("请输入两个数:\n");
    scanf("%d%d", &n, &m);
    int arr[n];
    int i, j;
    for (i = 0; i < n; i++) {
    printf("输入第%d个正整数:\n", i+1);
    scanf("%d", &arr[i]);
    }
    printf("\n");
    for (j = 1; j <= m; j++){
    for (i = 0; i<n; i++){
    if (j % arr[i] == 0) break; //能被n个不同正整数中某个整除则跳出循环,进入if语句
    }
    if (i == n) printf("%d\n", j); // 如果i == n,则说明for循环一直进行到最后j都没有被n个不同正整数中的任意一个整除,此时j符合要求,输出
    }
    return 0;
    }

    作者回复: 好的,你的建议非常好,我会在后面的文章中采纳,你的代码方法也是对的。d(^_^o)

    2020-01-18
    1
  • 信念
    第一个位数输出的程序
    第7行的char output[50];
        int ret = sprintf(output, "%d", n)
    没太看懂,ret是什么意思呀?

    作者回复: ret是个整形变量啊。没什么特殊的。

    2020-02-05
    1
  • 奔跑的八戒
    渐入佳境,跟着学就是了。

    作者回复: d(^_^o)

    2020-01-18
  • 奔跑的八戒
    j == 1 || printf("\t");
    老师这样语句,c 的编译器一定从左往右一个一个条件判断(计算值)吗?
    有可能从右往左或者随机吗?

    作者回复: 对,你上网搜运算符优先级,其中每一个等级的运算符都有一个计算顺序,条件或的计算顺序是从左向右。这是有规定的,跟编译器无关。

    2020-01-18
  • 梅利奥猪猪毛丽莎肉酱
    其实有挺多东西想说的,首先我的确是七大罪动漫爱好者,虽然现在动画有点ppt了,哈哈扯远了,先说那个乘法表,那个或的知识应该是短路或者惰性的知识吧,我是个前端工程师,有时候就会写到条件&&函数(),这个其实就是条件为真则执行函数,然后还看到过个类似的基础题,true||true&&false答案是true,新手可能直接回答错,从左往右看,认为是false,稍微厉害点的,看优先级,然后得出答案是true,其实这边在多想一步,优先级先计算了右边的true&&false,但true||任何其他什么,肯定就是true,希望自己理解是对的,至于后面个迷你随机数,真的难,哈哈刚看了下互质和欧拉,勉强看懂,有种被要被劝退的感觉,关于随机数随机种子这个其实挺有兴趣的,兴趣来源于一个例子,叫做游戏里随机的场景,用户中途退了,下次进入场景和之前退出的游戏场景一致,就是用了随机种子,然后那个例子实现这个随机函数,用了三个很奇怪的数字,这个当时看也没有看的特别懂,总结就是虽然不知道怎么回事,但总觉得很厉害,学无止境,还是要持续的坚持学习~

    作者回复: d(^_^o)

    2020-01-18
收起评论
5
返回
顶部