人人都能学会的编程入门课
胡光
原百度高级算法研发工程师
19410 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
开篇词 (1讲)
人人都能学会的编程入门课
15
15
1.0x
00:00/00:00
登录|注册

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

你好,我是胡光。从今天开始,我将带你正式进入 C 语言的编程世界。我们总会听到这样一种说法:兴趣是最好的老师。引起你对编程的兴趣,就是今天这讲的目的。如果你之前对于 C 语言的认知还停留在黑白纯色阶段的话,今天就让我们一起来进入一个彩色的 C 语言世界,来,跟我一起给它点儿颜色!

今日任务

先来看看今天这 10 分钟,我们要完成的任务。今天你将会学到如何设计一个读入字符串,并且按照字符串信息中规定的颜色,输出相应颜色文本内容的方法程序。
例如当我们:
输入:red:color content, 输出红色的:color content
输入:blue:color content,输出蓝色的:color content
输入:yellow:color content,输出黄色的:color content
下面这张图呢,就是当你完成这个任务时,你程序应该有的一个输出效果:
那么想完成这个任务,我们都需要做哪些准备呢?又有哪些概念需要我们理解和掌握的?请你多点耐心,听我一步步讲。

必知必会,查缺补漏

1. 输出函数:让计算机“说出话”

我还记得我当年学习 C 语言的时候,最兴奋的地方就是计算机可以根据我的“指令”打印出一句我想说的话来。这个功能虽然简单,但它也预示着我们可以初步“控制”计算机了。下面我附了一段代码,代码后面有相应的中文说明,你可以先看看。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用C语言编程输出彩色的文字。作者首先提出了学习如何设计一个程序,能够读入字符串并按照字符串信息中规定的颜色输出相应颜色的文本内容的任务。文章详细介绍了输出函数printf的使用方法,格式控制字符串和参数列表的概念,以及类型与变量的概念和如何在程序中定义变量并进行数据存储和计算。此外,还介绍了输入函数scanf的使用方法和输入输出函数的返回值含义。通过实例和代码演示,帮助读者更好地理解和掌握C语言编程的基本技能,为进一步学习和应用C语言打下基础。文章还提出了两道思考题,让读者自行查资料解决,以及介绍了如何使用转义字符\033来操作颜色输出。总的来说,本文以简洁清晰的语言介绍了C语言编程中的基础知识和技术要点,适合初学者快速了解C语言编程的基本概念和操作方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《人人都能学会的编程入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(67)

  • 最新
  • 精选
  • rocedu
    linux下可以用echo测试彩色字符串对不对:echo -e "\033[文字背景颜色;文字颜色m 你要显示的内容 \033[0m"

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

    2020-01-22
    2
    11
  • 贵州小欧哥
    #include <stdio.h> int main() { int a, b; //定义变量a,b scanf("%d%d", &a, &b); // 输入函数 printf("%d + %d = %d", a, b, a + b); //输出函数 return 0; } 复制运行这段 怎么都得不到想要的结果呢? 救助

    作者回复: 你用的什么编译器?DEVCPP 么?不出结果是编译错误么? 当你运行这个程序以后,会跳出来一个黑色的框框,我们叫做命令行,你在命令行里面输入两个整数,两个整数之间用空格隔开,然后回车,就能看到结果了。

    2020-05-01
    5
  • 罗耀龙@坐忘
    茶艺师学编程 老师喊着“来,我们给电脑一点颜色看”,但现实是电脑给我颜色看······ 1、就是颜色部分,我自己就是跑不出来,是不是我这里是windows环境的原因? 2、作业,我做了一天······ ①我的思路一开始是去查找print,和scanf的函数,看没有能实现题目要求的。但是无功而返。 ②后来才想到,依靠计算函数啊·······,还有就是scanf居然是遇到空格键就收工的家伙······ 第一题作业 #include<stdio.h> #include<math.h> //这里要加上这个,不然下面的Log10()+1就运算不了 int main() { int n; printf("你准备让电脑算什么数?\n"); scanf("%d",&n); printf("电脑算出来了,%d的位数是%d\n",n,(int)log10(n)+1); //把一个数字取log10的整数值再加1,就是这个数字的位数了,(int)就是取整运算 } //这里最大只能运算位数为10的数字,超过了就异常。但在这之前,输入的数要小于等于2147483647,不然就算是位数计算正确,但是文本显示会出现异常。虽然这个BUG是能直接改的··· 第二题的作业 #include <stdio.h> int main() { char a[80]; //这里我认为一个空格键能把字符串一分为二,换句话说就是一个字符串分为两个。空格键分得越多,字符串越多 char a2[80]; //而scanf函数捡到空格,就以为捡完了 。得这样让它继续捡 char a3[80]; // 我在这里假设不会有人输入一段字符串要断它超过3次(除非这家伙故意找茬) printf("你想给电脑说什么?\n(空格键请控制在3个以内)\n"); scanf("%s%s%s",&a,&a2,&a3); printf("\n\t%s%s %s %s","电脑看懂了,然后写回给你看:",a,a2,a3); //prinf函数输出是不含空格的,除非是自己再补空格进去。但这又问题,在这里补的空格数和在输入字符串断一次连打的空格键数有可能不一样 return 0; }

    作者回复: 1、对的,是环境问题。windows的cmd下,想输出颜色,需要调用windows相关系统函数。这就是另外一个美妙的故事了。 2、你能积极的思考,着实不错!d(^_^o),可以在后面看看我给的参考答案,⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄

    2020-04-12
    5
  • Geek_58e91d
    这我这纯新手来说第二节课的思考题也太难了,题目都理解不了,小学的数学概念都分不清的水平。评论区的一些答案就算照抄也一头雾水,老师能推荐个数学入门书吗?建议前几节课程别搞这种思考题,学习顺畅点好。🙄

    作者回复: -_-||| 数学入门书,真的不知道怎么推荐。

    2020-06-30
    4
  • 郑煜丰
    分享一下我今天的经历:作为小白,完全菜鸟的我都是百度出来才把哈喽朋友做好并且运行成功,中间失败了好几次,疑惑很久,百度几十次,模仿别人,试验,再检查,模仿,最后才成功,开心快乐

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

    2020-04-01
    3
  • 落曦
    //第一个思考题 #include <stdio.h> int main() { int a; printf("请输入一个十进制整数"); scanf("%d",&a); printf("请输出这个十进制的位数"); int count=0; while(a!=0) { a/=10; count++; } printf ("%d",count); return 0; } //第二个思考题 #include <stdio.h> int main() { char a[10]; printf("请输入一行字符串"); int i; for(i=0;i<10;i++) scanf("%d",&a[i]);//字符串可以有空格 scanf("%s",&a);//字符串无空格 return 0; } 老师讲的很基础,值得学习

    作者回复: 第二个思考题的代码中: 1. 试试不使用 for 循环 2. 读入时使用了错误的格式占位符%d,应该是%c 3. 不能假定读入的一行字符串,字符数量就是 10 个 后面有参考答案,你可以先试着自己解决一下这三个问题,然后再看看参考答案。 ^_^ 加油!!!

    2020-03-25
    3
  • 老师…什么是多余输出啊…第一题两个条件不太看得懂

    作者回复: 哈哈哈,你看文章的留言区中已经有人给出了自己的答案,并且已经很接近标准答案了。你先看一看。

    2020-01-11
    3
  • 徐洲更
    \033这类打印颜色的方式是shell终端的解读格式,而非windows系统下。

    作者回复: 对的,windows的话可以调用API实现颜色功能,这个要是有一定基础的话,可以自行查阅资料试一下。

    2020-01-07
    2
  • 信念
    $ vim test.cpp #include <stdio.h> int main() { int a=192, b=567; // dingyi bianliang a,b scanf("%d%d", &a, &b);//shuruhanshu printf("%d + %d = %d",a,b,a+b);// shuchuhanshu return 0; $ gcc test.cpp $ ./a.out 想请问一下,为什么我在Linux下进行完上面的操作后,并没有在屏幕上打出 192 567 192 + 567 = 759 而仅仅是换了一行,让我不得不用CTRL+c来停止进程如下: $ ./a.out ^C

    作者回复: 192 567是你的输入,然后按下回车即可。

    2020-01-15
    2
    1
  • 学写代码的猪
    通过百度完成二道思考题,对格式化的输入输出,又有了新的认识。 思考2: 条件 1:如果字符串中没有空格,怎么实现?:%s 条件 2:如果字符串中有空格,又该怎么实现?:%[^\n] ,原来scanf 还支持正则表达式。 思考1: 条件 1:允许有多余输出的情况下,实现方式:printf("=%d\n", printf("len(%lld)", a)-5); 条件 2:只允许输出数字位数的时候,又该怎么实现?重定向?还没想到。

    作者回复: d(^_^o),非常棒! 只输出数字位数的话 fprintf想一想。

    2020-01-08
    3
    1
收起评论
显示
设置
留言
67
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部