自学c语言入门自学视频,这一题我只会直接输出,不定义函数,或者定义三个函数,在其中一个加入换行符才能实现,求助

自学C语言,这一题我只会直接输出,不定义函数,或者定义三个函数,在其中一个加入换行符才能实现,求助-
相关资料介绍与图文
你现在的位置:& 》关于的详细解说
自学C语言,这一题我只会直接输出,不定义函数,或者定义三个函数,在其中一个加入换行符才能实现,求助
void print() {printf(&Smile!&);}int main() {
int i , j, flag=1;
for (i=1; i&=3; i++) {//这里的3表示行数
for (j= j&=3; j++) {//这里的3表示第一行的列数
if (j==3)printf(&\n&);
return 0;}
参考程序如下:(我自己编写的,可能有不足之处,望见谅) #include&stdio.h& int ...
int Max(int a,int b) { if(a&b) else retu...
可以使用全局变量,例子如下: #include&stdio.h&void f();int...
这应该是三个函数声明吧,第一个a是一个返回值为void,参数字符类型的函数; 第二个a是一个返回值为...
main函数里定义了sum这个变量,fun函数也可以定义sum这个变量的: #include&std...
可以,比如你在函数globa中定义了child函数,那么只有在globa函数中才能调用child函数...
错,如果可以在一个函数中定义另一个新函数,那么函数之间的平行关系就不复存在.
#include &stdio.h&void fun(int n){int m=0;while(n)...
#include &stdio.h&void input(int a[],int n){ int i...
#include &stdio.h& int max(int a,int b,int c) { in...
Copyright &排行榜大全pai-hang-bang.cn. Some Rights Reserved.从国家、城市、地区到品牌、产品、行业为你提供最新的排行榜资讯本站内容来自于本站编辑整理和媒体发布,仅提供参考或娱乐作用,并不构成任何投资标准和实际应用建议
联系请发电邮自god-loveme#163.com
【#换成@】扫码下载官方APP
& &对于这个地球上大多数人来说,真正的数字化革命还没有开始。在接下来的10年里,变化将无处不在,让我们一起来给这个世界编码吧!——Eric Schmidt Google执行主席& &&& &我们会用15周的时间来深入讲解C语言,在授课过程中,我们会注重多解释一些“为什么”以及错误程序的分析,从环环相扣的问题入手,将一些易被忽视且对高水平程序设计很重要的“点”,沿着数据结构从简单到复杂的主线逐一展开,在实例的“不断深化和提升”中引出知识点,通过对问题的举一反三和前后知识点的融会贯通,由浅入深地引导你循序渐进地编写规模逐步增大的程序。& &在过去30年90%的时间里,C语言独领风骚,仅偶尔被 Java 超越,可见其魅力。C语言作为一种高级语言,其实并不高级,但正是这种“低级”给我们更多思考的机会。期望通过本课程的学习,你不只是简单地能够掌握一种语言的语法,还能理解隐含在语法背后的思想,并初步具备灵活使用这些思想进行编写程序解决实际问题的能力。如果你掌握了这些,你会发现,迈向成功的最后一步不过是选择一种合适的编程工具而已。&& &你想从“菜鸟”升级为“程序猿”吗?那就加入“稀饭”的行列,和我们一起踏上爱上C语言之旅吧。
学习本课前你必须知道的那些事儿开篇授课视频内容进度概览本课程使用的教材和软件开发平台向老师提问、做编程作业的注意事项第1周——初识C语言从认识变量和常量开始1.1 为什么要学C语言(10分钟)1.2 C 语言集成开发环境简介(16分钟)1.3 如何定义一个变量(10分钟)1.4 变量的表数范围和存储形式(29分钟)1.5 宏常量与const常量(13分钟)本周课件、知识点小结和常见错误小结先修知识(有基础者越过)——二进制和内存(11分半)第1周测验练兵区——单选题——不计入总分练兵区——编程题——不计入总分第2周——数字间的那些事儿,做点计算哈2.1 算术运算(20分钟)2.2 赋值运算(15分钟)2.3 增1和减1运算(17分钟)2.4 自动类型转换(5分钟)2.5 强制类型转换(7分半)本周课件、知识点小结和常见错误小结第2周测验练兵区——单选题——不计入总分练兵区——编程题——不计入总分第3周——从键盘中来,到键盘中去,开始输入和输出啦3.1 数据的格式化屏幕输出(15分钟)3.2 数据的格式化键盘输入(18分钟)3.3 单个字符的输入输出(15分半)3.4 进阶:用getchar()输入数据存在的问题(含错误案例分析)(10分)3.5 进阶:用%c输入数据存在的问题(含错误案例分析)(10分)本周课件、知识点小结和常见错误小结第3周测验练兵区——单选题——不计入总分第3周编程题在线测试练兵区——编程题——不计入总分第4周——无处不在的抉择4.1 关系运算符和逻辑运算符(23分钟)4.2 条件语句(14分钟)4.3 开关语句——条条道路通罗马(28分钟)4.4 进阶:数值溢出和精度损失问题(34分半)4.5 进阶:软件测试与错误实例分析(20分半)本周课件、知识点小结和常见错误小结选学——用raptor绘制选择结构的流程图(27分钟)第4周测验练兵区——单选题——不计入总分第4周编程题在线测试练兵区——编程题——不计入总分第5周——周而复始的循环之道5.1 计数控制的循环(31分钟)5.2 递推(33分钟)5.3 条件控制的循环(32分钟)5.4 嵌套循环(17分钟)5.5 穷举(39分钟)5.6 进阶:软件调试与错误实例分析(27分钟)本周课件、知识点小结和常见错误小结选学——用raptor绘制循环结构的流程图(25分钟)第5周测验练兵区——单选题——不计入总分第5周编程题在线测试练兵区——编程题——不计入总分第6周——函数:分工与合作的艺术6.1 &函数定义、调用、参数传递和函数原型(35分半)6.2 &函数封装与程序的健壮性(23分钟)6.3 &进阶:断言与防御式编程(14分钟)6.4 进阶:代码风格(22分钟)本周课件、知识点小结和常见错误小结选学——结构化与模块化程序设计方法(41分)第6周测验练兵区——单选题——不计入总分第6周编程题在线测试练兵区——编程题——不计入总分第7周——《盗梦空间》的逻辑:探寻递归的奥秘7.1 &从嵌套调用到递归调用(20分钟)7.2 &递归是如何执行的(16分钟)7.3 &进阶:尾递归是什么鬼?(14分半)7.4 &变量的作用域(22分半)7.5 &进阶:变量的生存期(33分半)本周课件、知识点小结和常见错误小结选学——分治和迭代(33分半)7.6 进阶: 多文件结构(7分半)第7周测验练兵区——单选题——不计入总分第7周编程题在线测试练兵区——编程题——不计入总分第8周—— 一堆数据来了,你准备好了吗本周内容导读8.1 数组的定义和初始化(43分)8.2 向函数传递一堆相同类型的数据(15分半)8.3 查找算法——众里寻他千百度(37分半)8.4 排序算法——让世界变得更有序(17分半)本周课件、知识点小结和常见错误小结第8周测验练兵区——单选题——不计入总分第8周编程题在线测试练兵区——编程题——不计入总分第9周——指针:C语言世界中所向披靡的“金箍棒”本周内容导读9.1 指针变量的定义、初始化及其解引用(19分)9.2 指针变量作函数参数(36分半)9.3 进阶:函数指针及其应用(27分)9.4 进阶:数组的趣味应用(50分)本周课件、知识点小结和常见错误小结第9周测验练兵区——单选题——不计入总分第9周编程题在线测试练兵区——编程题——不计入总分第10周——字符串:C语言世界中的大力水手本周内容导读10.1 字符串的存储与表示(28分)10.2 字符串处理操作(15分)10.3 向函数传递和从函数返回字符串(26分)10.4 进阶:缓冲区溢出与缓冲区溢出攻击(39分半)本周课件、知识点小结和常见错误小结第10周测验练兵区——单选题——不计入总分第10周编程题在线测试练兵区——编程题——不计入总分第11周——指针的孪生兄弟本周内容导读11.1 指针的运算(8分)11.2 指针和一维数组间的关系(14分)11.3 指针和二维数组间的关系(18分)11.4 进阶:指针数组及其应用(22分)本周课件、知识点小结和常见错误小结第11周测验练兵区——单选题——不计入总分第11周编程题在线测试练兵区——编程题——不计入总分第12周——海陆空齐上阵:又来了一堆数据本周内容导读12.1 结构体类型(13分)12.2 结构体与数组的嵌套(7分)12.3 结构体的相关计算和操作(19分)12.4 向函数传递一堆不同类型的数据(28分半)12.5 枚举类型和共用体类型有什么用(25分)12.6 进阶:典型应用实例——洗发牌模拟(20分)本周课件、知识点小结和常见错误小结第12周测验练兵区——单选题——不计入总分第12周编程题在线测试练兵区——编程题——不计入总分第13周——原来内存也可以这么玩,我是指针我怕谁本周内容导读13.1 何为动态内存分配(26分)13.2 动态数组13.3 进阶:常见的内存错误及其解决对策(52分半)本周课件、知识点小结和常见错误小结第13周测验练兵区——单选题——不计入总分练兵区——编程题——不计入总分第14周——结构设计的艺术本周内容导读14.1 数据的链式存储——单向链表14.2 进阶内容:其他数据结构简介(21分)本周课件学习体会第14周测验练兵区——单选题——不计入总分练兵区——编程题——不计入总分第15周——学会保存你的数据本周内容导读15.1 二进制文件与文本文件(14分)15.2 文件的打开和关闭(8分)15.3 格式化数据的文件读写(5分)15.4 字符和字符串的文件读写(39分)15.5 内存数据块的文件读写(7分)15.6 随机读写与文件缓冲(6分半)本周课件、知识点小结和常见错误小结第15周测验练兵区——单选题——不计入总分练兵区——编程题——不计入总分
本门课程的基本内容是面向零基础的学生。进阶内容是面向有一定编程基础或学过本平台的“程序设计基础”MOOC课程(https://www.icourse163.org/course/HIT-56001)的学生,但是进阶内容不做为课程的考试内容。
评分方案:本门课总成绩100分。每周的单元测验(单选题,15周,占45%);单元作业(编程题在线测试题,3-12周合计10周,占40%);课堂交流区的回帖质量和数量占5%,期末在线考试占10%。第1-2周的编程题以及第13-15周的编程题,作为自测练习题,不计入总分。练兵区的所有题目都不计入总分,仅供练兵而已。课程成绩和在讨论区义务为同学答疑的质量(发水贴者将被列入黑名单)将作为期末赠书奖励的参考。证书:设置“合格”(达到60分以上)、&优秀&(达到80分以上)两档标准,由任课教师签发课程结业证书,其中成绩“优秀”者将颁发优秀证书。
1.& (https://book.sunner.cn)&该网站的服务对象是我们自编教材的读者,提供教材课件、例题源代码、教材勘误表等资源,便于学生浏览和下载后自学,读者也可利用该网站反馈教材使用意见和建议。2. &该网站的服务对象是使用我们自编教材的读者,在我们编写的由高等教育出版社出版的《C语言程序设计(第3版)》的封底有一个刮刮卡,刮开可以获得一个免费的注册账号,登陆我们开发的C语言作业在线测试系统,在该系统中可以自主选择教材对应章编号中的习题进行自测,提交习题答案后,系统会实时显示评分,另外在习题市场中读者还可以发布题目给其他读者练习。3. 参考教材1)苏小红,王宇颖,孙志岗,《C语言程序设计(第3版)》,高等教育出版社,2015年7月,购书网址:2)苏小红,车万翔,王甜甜,《C语言程序设计学习指导(第3版)》,高等教育出版社,2015年8月,购书网址:3)苏小红,孙志岗,陈惠鹏,《C语言大学实用教程(第4版)》,电子工业出版社,2017年1月,购书网址:亚马逊4)苏小红,孙志岗等,《C语言大学实用教程学习指导(第3版)》,电子工业出版社,2012年6月,购书网址:亚马逊5)苏小红等,《程序设计基础》,高等教育出版社,待出版5.相关链接:相关MOOC课程:: 带gcc编译器和gdb调试器的code::blocks集成开发环境的官网下载地址:(例如codeblocks-17.12mingw-setup.exe,一定要带mingw哦),安装注意事项见《C语言程序设计学习指导(第3版)》。安装软件的完整步骤可参考:(&大牛给计算机专业学生的7个建议,告诉你为什么毕业前要学好C语言)
Q:如何提问,能得到快速的解答?A:1)标题:撰写标题时,要注意把要问的问题的出处和核心词写出来,最好用【】标出来,比如【第1周编程题在线测试的第1题】求解。2)内容:内容上要把你不懂的地方说出来,最好详细点,把自己尝试修改的过程也说一下。3)附源代码:把源码贴到讨论区(不要使用图片,因为图片看不清,也不能拷贝),这样大家可以通过你贴出的源码帮你分析错在哪里。4)附错误提示:把编译出错的提示也贴出来(一般是英文形式),这样大家不用拷贝粘贴和调试程序也能帮你分析出错原因了。Q:常见的运行结果错误的原因有哪些?A:程序提交后通常显示三类错误:格式错误、结果错误、运行超时。对于格式错误,请检查你的程序的输入输出信息是否和题目要求的完全一致。对于结果错误,请检查你的程序使用的算法和计算公式是否正确,如果涉及浮点运算,可以尝试将float换成double或者反之。对于运行超时错误,请检查你的程序是否存在死循环,死循环通常由永真的循环控制条件或者while后面添加了不必要的分号引起。注意在本网站提交程序进行测试时,不要使用flush()函数清除缓冲区,输入字符串也不要使用fgets(),原因详见视频讲解 。注意事项如下:1)数据输入输出的格式没有严格按照题目的要求写,直接拷贝粘贴题目中给的格式字符串和提示信息,是最简单和不易出现格式错误的方法。2)输入输出字符串中的字符大小写有错误,或者空格数量和位置与题目中的要求不一致,或者缺少换行等。3)仔细审题,例如题目要求计算半圆的周长,就不要加上直径,更不要计算整个圆的周长。4)如果只有几个测试用例通过,还有没有通过的测试用例,那么说明你没有考虑所有的可能性,甚至是非法输入的情况。5)检查是否为英文输入,切记切换成英文状态再输入。一些同学误用了中文作为输入法,就会出现不能编译的问题,例如中文状态下输入的分号和英文状态下输入的分号是完全不同的,语句的末尾使用的分号一定要在英文状态下输入。Q:如果无法正常观看视频,我该怎么办?A:如果无法正常观看视频,请尝试进行如下操作:1.确认你使用了支持视频播放的浏览器。切换到flash播放器无法调整播放速度,切换到HTML5播放器可以调整播放速度。建议都切换到HTML5播放器。2.清除浏览器的浏览数据及缓存。3.关闭硬件加速。请在浏览器的 设置 - 显示高级设置 中,将“使用硬件加速模式”(如果可用)一项取消勾选,并重新启动浏览器。4.检查你的网速。你可以尝试在其他视频网站播放视频(如优酷、土豆等),如果你在其他网站仍无法观看视频,那么你的网络连接很可能有问题。你需要重新连接你的网络或者切换至网速更快的网络以实现流畅的视频播放。Q:我想考二级,学完这个课程可以考吗?&A:二级考试题考查语言的语法细节较多,所以能否通过二级考试,要看你的应试水平如何。本课侧重于讲解程序设计的方法以及错误程序的排错方法,更关注实战能力,因此应该说本课程对学生的要求是高于二级考试的要求的。Q:上机编写C语言程序使用什么软件好?A:课程演示会使用Code::Blocks+gcc+gdb集成开发环境,但是你使用任何其他C语言开发工具也都可以。不过,我们推荐使用Code::Blocks,在(https://book.sunner.cn)上有软件下载的网址链接,《C语言程序设计学习指导(第3版)》上有关于如何使用这个软件的详细介绍,它是一个开源的跨平台的C/C++集成开发环境,它安装简单,比Visual C 6.0等其他集成开发环境更简单易学。&Q:使用codeblocks在sources中新建一个file,也就是不在原来默认的main.c里面写代码,那么应该如何调试才能使运行的时候直接运行新建的里面的程序呢?A:给工程添加完新的文件后,移出旧的文件main.c再重新编译即可,移出文件的方法和添加的方法类似。&Q:为什么安装好软件后创建新项目的时候软件总是说:could not save project&invalid path& maybe the file is write-protected 呢?A:codeblocks要求软件安装的目录最好不要带空格或汉字,不要按默认设置安装到program file目录下,卸载后再选择安装到根目录下试试。更多注意事项,参见高等教育出版社的《C语言程序设计学习指导(第3版)》Q:请问为什么我在Code::Blocks里面点开Debug中的watch里面是空白的?A:按照视频1.2讲的方法新建一个控制台应用程序,不要直接新建一个C文件,直接新建或者打开一个 C文件是无法使用调试功能的。检查一下是不是将CB安装到默认的program files目录下了,CB不能安装到中文或者有空格的目录下,请卸载软件,重新安装到根目录下,再试试。此外,全速运行程序时,是看不到watch窗口内的内容的,必须在单步运行的时候才能看到watch窗口内的内容。Q:为什么我的程序编译不了?A:一种可能是你安装了不带编译器和调试器的版本,重新安装带编译器和调试器的版本。免费开源的C 语言集成开发环境Code::Blocks+gcc+gdb的官方下载网址:https://www.codeblocks.org/downloads/26(目前最新版本是codeblocks-17.12mingw-setup.exe)。请下载带gcc编译器和gdb调试器的code::blocks(下载软件名中务必包含mingw),否则程序无法编译。无法从官方下载软件的,也可以从百度云盘上下载:链接: https://pan.baidu.com/s/1bqzj4yN 密码: sucpC 语言集成开发环境code::blocks的安装和使用方法见教材《C语言程序设计学习指导(第3版)》如果不想重装系统,可参考重新设置编译器和调试器。安装软件的完整步骤可参考:另一种可能是你用的系统自带了迈克菲杀毒软件,请卸载迈克菲上毒软件即可。Q:为什么我的程序无法运行,显示cannot open output file bin\Debug\election.exe Permission denied.A:可能是你的文件正在别的程序中使用,或者还有程序的副本正在执行(或者你上次运行没有关闭),因此不能写入election.exe,把副本关闭或者结束election.exe任务应该就能够纠正这个问题。另外,请检查一下你的IDE是不是是不是安装到C盘的默认目录下了,请将IDE安装到D盘,并将你的程序也保存到D盘,不要保存到C盘。Q:为什么我的程序与网站上的程序运行结果中的小数点最后一位存在差异?A: 这是因为网站的OJ使用的操作系统和编译器与我们自己使用的操作系统和编译器不一样,从而导致浮点运算的精度不一致。此外,使用float和double定义变量得到的计算结果也可能在结果的最后一位小数上有所不同。
由高教社联手网易推出,让每一个有提升愿望的用户能够学到中国知名高校的课程,并获得认证。
| 京ICP备号-2 |
(C) icourse163.org【原创】从零开始学编程---第一步-C语言(持续更新)_编程吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:222,147贴子:
【原创】从零开始学编程---第一步-C语言(持续更新)收藏
新的一年,新的开始
编程,博为峰IT培训免费试听,0元入学,现在更有多重优惠,仅限今天!博为峰,真正的为年轻人服务的企业,14年间培训15万余名it工程师,成绩斐然!
我来啦~~欢迎大家加编程新手群大家一起学习吧
现在这个贴子的版本是1.0,以后我会逐渐改善的我也是刚学编程,所以把学过的分享给大家,可能有些理论不对,希望高手出来解释为什么学编程要学C语言?因为C语言是一切编程的基础我们主要学算法,算法是核心我会用我自己的理解来教大家,而不是书本上的死东西现在我们开始吧
那么开始学吧,C语言来源什么的发明者什么的我就不说了,你们自己可以找到开始C语言学习时,你们需要在电脑装Microsoft Visual C++ V6.0,这是编译工具,C语言,C++程序都能编译,直接搜索名字就能找到下载,如果电脑有其他工具可以编译C语言的话,也就不需要下载了 如果找不到下载地址就联系我把,我会发到网盘供你们下载
首先,让我们看一个C语言程序#include &stdio.h&main(){&&&& printf("hello world \n");&&&& return 0;}
这里最简单的一个C语言程序也是C语言程序组成的基本结构下面让我们来分析一下#include &stdio.h&翻译为#包括 &标准输入输出& h就是英文单词HEAD的第一个字母 这个是头文件,暂时你不需要知道太多,你只需知道暂时我们编程序的时候这个必打,所以背下来吧main()main是主要的意思,这是个主函数,所有C程序都有这个,这里说的函数并不是数学函数,你可以理解为方法,()括号里面是放参数的,就是数值,现在你先不需要了解,以后会慢慢了解的{}大括号里面就放着我们打的程序,记住哦,一定要在大括号里面printf() 这是个输出函数,输出它括号里面的东西,但是一定要在引号里面\n 这是换行符,用了你就会知道return 0 这是返回值,这个我们以后在学,其实现在不写这个程序也能通过,所以我暂时不会让这个出现在程序上,虽然这样不好,但为了大家能更好的了解程序,免得大家为了该不该要return犯迷糊所以这样也是可以的#include &stdio.h&main(){&&&&& printf("hello world \n");&&&&}此程序的结果是在屏幕(6.0工具中就是那个黑的)上打印helli world
现在我们暂时编程序的格式就是这样#include &stdio.h&void main(){&&&&&& 这里面就是我们要编的程序&&&&}viod是返回类型为空,就是不需要return,这个以后你们会了解的当当不写void也可以,但是这是为了规范还算简单吧,这个格式请大家牢记
C语言程序中,一定会有数据,这个数据就是由数字,单词和字符构成数字又分整数和浮点数(浮点数就是小数,数学里也称实数)字符就是键盘上所有的a b c&&& A B C&&&& 这6个是字符数字 '1' ' 2' ' 3'&&& 这3个也是字符,但必须得是加了单引号的+ - */ {}、 这些符号也是字符&&& 空格键也是字符&&这些都能在ASC表能找到,反之能在ASC表在能找到的就可以是字符 ASC是什么,呵呵,这个上网查一下还有就是单词,也可以说是字符串就是比如 hello 或者 hello world&&&记住:字符用单引号表示,字符串用双引号表示
整数不用我说大家也该知道是什么123 ,0, -234,1000 这些就是整数浮点数(小数)也就是凡是带小数点的数就是浮点数12.3 ,0.0,0.23,-7.7 这些就是小数(我还是直接说小数好了,说浮点有点不爽啊)浮点数所占字节要比整数大,字节就是内存里的东东,这个暂时不需了解你只需知道小数占的字节要比整数大就可以了,后面字节这个概念很重要例如123.4和1234123.4就必1234所占的字节大
说完数据类型我们说变量C语言把数据存放在变量中,变量就是电脑内存里的一个盒子,用来保存数字或字符这个盒子里面的东西是变化的,例如我放一个数字1放进这个盒子,这个盒子现在装的是数字1,然后我又放数字2进入,原来的数字1就自动替换成数字2,然后你放什么进去,它就是总是替换,它是可变的数据类型就可以用变量来表现int 整数的意思 它可以申明变量用于存放整数long int 存放大于32767和小于-32768的整型数据(这个我们暂时用不着,可以忽略)float 浮点的意思,可以申明变量存放小数double 双点,双重的意思,存放更大的小数(这个也暂时用不着,先忽略)char 字符的意思 申明变量存放字符
编程选择&职坐标&-中国IT教育知名品牌!免费试学,助力高新就业!还在等什么!编程培训班500强名企就业直通车,仅剩20个名额,高端实力讲师,小班授课,还不快快行动!
每个变量都有名字,因为你得知道你存放的是哪个盒子,所有盒子得标个记号变量的名字必须用字母开头,大小写都可以,中间可以带下划线,例如age_cat但绝对不能以数字开头 例如 95age变量名也不能含空格和特殊字符 例如age cat 和 age*cat有了变量名你就定义一个变量了,啥叫定义,也就是申明,或者说建立例如 int a&&& 意思就是说我用一个叫a变量 类型int 存放整数或者说我拿了一个盒子,做个标记a 以后用来存放整数int afloat bchar c以上的就是定义不同类型的变量但要记住,在一个程序中,变量名字不能重复例如 int a&&&int a或者都是错误的变量名有唯一性
定义了一个变量,我们就可以使用这个变量,可以在里面存放数据怎么存放?直接用=号就可以了可以在定义的时候存放int a=1也可以在定义后存放a=1还可以用表达式来存放a=3-2;甚至还可以加入其他变量int b=2a=b-1;另外,定义变量的时候可以连接定义int a,b还有 int a=1,b但是不可以这样int a=b=1
让我们来个运用变量的程序#include &stdio.h&viod main(){&&&&&&&&&&&&&&&&&&&&& a=1;&&&&& b=1.1;&&&&& c='a';}&&&&但是这个程序现在还没有什么实质性的作用,变量赋值以后你无法从电脑中看到所以,接下来我们学习printf()函数,我们把变量的值打印到屏幕上
在开始的时候大家就已看到printf()的功能没错 就是printf("hello world \n");,打印字符串hello world到屏幕上简单来说,printf()就是在屏幕上产生输出,把字符,数字,字符串发送到屏幕上printf()的格式printf(“”);可以直接输出引号里的东西printf(“%d”,a) 这样是直接输出变量int类型a的值%d的意思:d是decimal base(十进制)的开头字母,意思就是按十进制格式输出,也就是按整数格式输出还有%f&&& 按浮点数格式输出%c&&&& 按字符格式输出printf(“%d”,a)的逗号后面只能放值,变量名可以,单纯的值也可以,例如这样printf(“%d”,1),也是可以的连续输出值可以这样printf(“%d,%f,%c”,a,b,c),引号里的逗号不打也没关系所以printf(“%d%f%c”,a,b,c)也是可以的,但是这样会挤成一堆,自己试下就知道了,所以建议大家养成打逗号的习惯
printf("hello world \n"); 里面的\n有什么用下面我就来为大家介绍,\n今后我们会经常用的下面看例子#include &stdio.h&main(){&&&&& printf("hello");&&&&& printf("world");}输出结果会是helloworld吗?结果是NO输入结果是helloworld因为没有回车,printf()只能在一行进行输出那么怎么进行回车?这就需要\n了,\n是转义符,意思就是它能把你不能用字符打出来的东西,换种形式出来,在程序过程,你不可能中途又去按回车键所以,这样main(){&&&&& printf("hello\n");&&&&& printf("world");}它就会输出helloworld转义符还有很多个,例如\t,\\,\*\a\n只是其中一个,其他的等用的时候在介绍吧,反正常用的也就一两个大家就只要牢记\n这一个,记住是反斜号,n是new-line (新的一行)的开头字母
现在我们来用我们所学的输出几个变量的值#include &stdio.h&viod main(){&&&&&&&&&&&&&&&&&&&&&&&& a=1;&&&&&& b=1.1;&&&&&& c='a';&&&&& printf("%d\n",a);&&&&& printf("%f\n",b);&&&&& printf("%c",c)}&&&&结果是11.100000a为什么1.1变成了1.100000,因为float 定义的变量小数(浮点数)默认小数点后面保留6位数,那怎么让它输出1.1?只让让%f变成%.1f就可以了,反之你想让它输出小数点后两位数就%.2f,三位就%.3f,以此类推程序可以简化为#include &stdio.h&viod main(){&&&&&& int a=1;&&&&&& float b=1.1;&&&&&& char c=‘a’;&&&&&& printf("整数变量为:%d,浮点数变量为:%.1f,字符型变量为:%c\n",a,b,c);&&&&&}&&&&结果为整数变量为:1,浮点数变量为:1.1,字符型变量为: a\n记住一定要在引号里,为了美观,请养成多用\n的习惯,即使整个程序就一个printf()语句(也是也用的)
补充一点其实转化字符不止%d %c %f等,字符串也有一个,就是%s string(字符串)的开头字母,但是用的少尽管只打印字符串时可以不需要%S,但是当打印与其他数据组合的字符串时,就可能需要用%S例如:printf("%s %d %f %c","hello",14,7.2,'a');打印结果如下hello 14 7.200000 a%s %d %f %c 这些是转化符,注意不能放到引号外,打印时要适当隔开,可以用空格或逗号隔开printf("hello");和printf("%s\n","hello");是一样的,显然用第一种更好这里只能让大家了解一下%s的作用,不需深究,忽略也可
现在我们学会打印了(也就是输出了)能在程序中打印变量的值了,但也只能打印我们事先在程序中写好的值,能不能在程序过程中自己手动用键盘输入变量的值,在打印出来呢?答案是肯定的这时我们就要学习scanf()这个函数一般在程序中,printf()和scanf()是一起使用的scanf()的功能是从键盘获取数据,同样它也会用到转化字符%d,%f,%cscanf()的格式如下scanf("%d",&a);让我们再看看printf();printf("%d",a);两个差不多把,只不过scanf()比printf()多了一个&,&是什么?&是取地址符scanf("%d",&a); 意思就是你从键盘输入一个整型变量的值,它会自动存到变量a那个地址,也就是它会找到那么标记为a的盒子,然后把值放进里面为什么printf()没&,因为它是直接输出,a变量的地址已经事先知道,而scanf() 变量a的值从外部获取,得先知道变量a的地址,知道地址你才好把值放进去每个变量名都有对应的地址,变量名只是地址的别名,就好像外号一样,之所以用变量名而不用地址名,因为变量名比地址名好记,方便,而地址名是数字,你不可能知道什么是什么扯远了,内存地址在学指针的时候你就会知道,现在先别管这些,知道太细反而越弄越糊涂,你现在就只需要知道scanf()的格式scanf("%d",&a);和print()差不多,但是变量名前一定要加&,除了scanf("%s",a);字符串格式就不需要,这也跟指针有关系,现在先别管,你只要知道除了%S,其他类型的变量都要在前面加&, 引号里面注意不要加\n,没必要连续输入也是可以的,scanf("%d,%f",&a,&b);但目前先不要用
下面我们来个输入(scanf)输出(printf)的程序#include &stdio.h&void main(){&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&& printf("请输入a的值:");&&&&&& scanf("%d",&a);&&&&&& printf("请输入b的值:");&&&&&& scanf("%f",&b);&&&&&& printf("请输入c的值:");&&&&&& scanf("%c",&c);&&&&&&&&&&& printf("a的值为:%d,b的值为:%f,C的值为:%c\n",a,b,c);&&&&&}&&&&这个是正确的吗?你运行的时候你就会发现,变量c没办法输入了,程序直接结束哪里有问题?下面我们来分析首先程序显示 请输入a的值:我们输入1,在按回车键又会显示&&& 请输入b的值:我们输入1.1 按回车这时候程序就会显示请输入c的值:a的值为:1,b的值为:1.100000,C的值为:这是为什么?别忘了之前说过,空格和回车也是字符开始输入了1到了变量a里,按回车,继续下一个输入又输入了1.1到了变量b里此时再按回车的话,就会被scanf接收了,因为变量c是字符格式,回车也是字符,自动存到变量c里非字符变量,用scanf连续输入,按空格或回车会等待下一个输入但是字符和字符串变量,scanf会直接接收空格和回车怎么解决?在%c前面加一个空格,就是这样scanf(" %c",&c);#include &stdio.h&main(){&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&& printf("请输入a的值:");&&&&&& scanf("%d",&a);&&&&&& printf("请输入b的值:");&&&&&& scanf("%f",&b);&&&&&& printf("请输入c的值:");&&&&&& scanf(" %c",&c);&&&&&&&&&&& printf("a的值为:%d,b的值为:%f,C的值为:%c\n",a,b,c);&&&&&}&&&&这样程序就能正常运行所以不管什么变量类型,最好都在前面加个空格,会是一个好习惯
下面多说一点scanf()的用法,我想大家对这个sacnf()的格式还是有点犯糊涂printf()是格式化输出函数,我想这个你们应该很容易掌握scanf()是格式化输入函数,顾名思义,就是你在输入时必须按照指定的格式输入才行例如#include &stdio.h&main(){&&&&&& int a,b;&&&&&& printf("请输入两个数\n");&&&&&& scanf("%d%d",&a,&b);&&&&&& printf("a=%d,b=%d\n",a,b);&&&&}&&&&这个是连续输入输入1 回车 输入2 回车或者输入1 空格 输入2 回车注意:最后的回车是必要的,意味着完成输入结果为a=1,b=2现在在改变一下把scanf("%d%d",&a,&b);改成scanf("%d,%d",&a,&b);中间加一个逗号那么,再怎么输入?注意:出现怎么打什么先输入1,再输入,(逗号),再输入2 回车就是这样:1,2 回车结果也是a=1,b=2,如果输入1就回车,那么b的值就没办法获取,而是你想不到的结果(这个自己去运行)无论出现什么你就照打什么如scanf("%d;%d",&a,&b);你就打1;2&&& 回车哪怕是一个字母一个符号,如scanf("%da%d",&a,&b);你得打1a2&&& 回车如scanf("-%dabc%d",&a,&b);你得打-1abc2&&& 回车如果符号字母在最后,如scanf("%d%dabc-*^",&a,&b);你就完全可以无视,直接打 1 回车 2 回车 就可以了出现在数值之前和之中的东西就要照着打,之后可无视还有一种情况像这样scanf("\n%d%d",&a,&b);和scanf("%d%d\n",&a,&b);这里不要被迷惑了,这里的\n并不是回车,但是它是转义符转义符有好几个,并不是带斜号的就是如果是例如这样scanf("\%d%d",&a,&b);和scanf("%d%d\",&a,&b);还有scanf("%d\%d",&a,&b);无论哪个都会有错(不是结果就是程序报错),所以不要带\号补充:/号不存在问题如果是转义符scanf("\n%d%d",&a,&b);和scanf("%d%d\n",&a,&b);还有 scanf("%d\n%d",&a,&b);\n在前面和中间你可以无视,但是如果是在后面scanf("%d%d\n",&a,&b);就必须这样打了,输入1 回车 输入2 回车 输入任何一个或多个字母,数字或字符&&& 回车结果就是正确的 a=1,b=2原因:此时输入数据用转义符结尾,scanf会跳过空白符去读下一个字符,所以你必须再输入一个东西(随便一个或多个字母,数字,字符)。这里的空白符包括:空格,制表符,换行符,回车符和换页符。就是说scanf()里面多了个\n,scanf会跳过你输入后按的回车键或空格键,再读取一个东西,直到没地方存储才会结束scanf注意空格也包括 scanf("%d%d&&& ",&a,&b); 和\n一样的道理,要多加小心所以说\n根本没必要在scanf里
下面继续一个scanf()程序#include &stdio.h&void main(){&&&&&& char a,b;&&&&&& printf("请输入两个字符\n");&&&&&& scanf("%c%c",&a,&b);&&&&&& printf("a=%c,b=%c\n",a,b);&&&&}&&&&这里只改了一下变量类型,但之前不一样了,还记得我跟大家说了空格和回车也是字符吗,在这个程序里就不要按空格回车了,当然最后一个回车要按,不然结果不会出来这个程序我们只要输入 xy 回车结果就是a=x,b=y我们在改scanf("%c%c",&a,&b);变scanf("%c,%c",&a,&b);加逗号这个和非字符变量一样,也是输入 x,y 回车结果是a=x,b=y在改成空格,scanf("%c %c",&a,&b);字符变量这回是可以打空格也可以不打输入x y(中间空多少格都没关系) 回车 或者xy 回车结果a=x,b=y值得注意是scanf("%c%c",&a,&b);这种情况可千万不要打空格,不然空格的值会传到变量b里补充:scanf("a=%d,b=%d,c=%d",&a,&b,&c);输入应为:a=1,b=2,c=3 回车跟我上面说的照打原理一样再看一个程序#include &stdio.h&void main(){&&&&&& char a,b;&&&&&& printf("请输入字符a\n");&&&&&& scanf("%c",&a);&&&&&& printf("请输入字符b\n");&&&&&& scanf(" %c",&b);&&&&&&&&&&& printf("a=%c,b=%c\n",a,b);&&&&}&&&&注意空格!虽然字符型需要这样,但最好每次scanf()的时候都搞空格 就是这样scanf(" %d",&a);关于输出流,缓存,缓冲区之类我们后面有待了解printf()和scanf()我们暂时先学到这里,今后还有其他的输入输出函数
scanf我可能说的太多,有点复杂了,没看懂你也不要紧scanf()你目前只需掌握scanf(" %d",&a);这一句的使用方法就可以了printf()的使用我想应该很容易掌握吧接下来我们更深层次的往前走了来点最后补充,想多知道一些的就看看,不看这些也没关系,毕竟不是重要内容scanf()的其他用法如:scanf("%d %*d %d",&a,&b);当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。还有如scanf("%5d",&a);输入:只把12345赋予变量a,其余部分被截去。%5d 和%.5f 效果差不多 这里是保留5位整数scanf("%4d%4d",&a,&b);输入:将把1234赋予a,而把5678赋予b。
下面我们来说说注释,就是解释说明电脑能够理解你的程序,然后,其他人或许也会读你的程序,另外,你会经常修改程序,如果程序非常庞大,你可能不记得你之前写的东西有什么功能,别人看了没有注释的代码也很难知道是什么意思如果你写的程序只是你自己使用,就不需要注释了吗?不是的,即使你当时懂,但过后很久,你也有可能会看不懂,所以,给程序加注释是非常好的习惯注释怎么用?注意:我们加注释不是给电脑看的,而是给我们人看的,电脑会无视我们的注释,不会运行#include &stdio.h&void main(){&&&&&&&&&& printf("hello world\n");&&& /*打印hello world*/&&&&}&&&&/*.....*/&&& 这就是注释的第一种格式#include &stdio.h&main(){&&&&&&&&&& printf("hello world\n");&&& //打印hello world&&&&}&&&&// 这是注释的第2种格式显然第2种比较好打
不是每条语句都要注释像printf这句一眼就懂就没必要注释了哪些地方最需要注释,大家会慢慢自然知道
接下来我们来学习数组吧尽管C语言没有字符串变量(字符串知道是啥吧)但仍然有办法存储字符串,那就是用数组(array)数组是一种特殊的变量类型所有的数据类型int,float,char等,都有对应的数组类型数组只不过是具有形同数据类型的许多变量的一个列表而已 说不多说,怎么定义一个数组? char a[12]; 这就是定义了一个字符型的数组 跟普通定义变量而言,它只是多了个方括号,方括号里的数字代表的是数组里所存储的字符长度(就是有多少个字符)
比如char a[3]={'a','b','c'}&&
这是纯字符数组 数组是有下标的,表示是哪个字符存放在哪个数组变量下标都是从0开始的a[0]='a',a[1]='b',a[2]='c'
注意这里就没有a[3]了哈 a[0],a[1],a[2]其实就是变量,跟平时的变量a,b,c没什么区别,只不过变量名是个死东西,不能改变,它们的值是可以改变的 例如char a[3]={'a','b','c'};a[0]='b'; 打印出来的数组就是b,b,c了 还有 char a[4]="abc"; 为什么明明是3个字符,写着却是4?其实就个数组就是存储的字符串,多出的字符是什么,就是‘\0',叫做NULL零,当然还有别的叫法C语言用字符串结尾的'\0'来识别字符串的结束,在内存中,只有当c程序遇到null零时猜知道字符串结束了 当然也可以这样存储char a[4]={'a',"b","c",'\0'}
这就代表它存储的是字符串 也可以不写长度 char a[]="abc";&&
记住你所存储的数据所超过长度,会报错的
下面我们来输入一个字符串,在打印出来因为我们还不知道输入字符串是多少字符,所以尽量定义的长度大一点首先定义了个字符数组变量 char a[50]; 长度50,也就是可以容纳50个字符变量怎么用scanf()输入? scanf(" %s",a); 就可以了,为什么没有&,我前面已经说过了哦,跟指针有关系,等你学了才会知道,记住只有%S 格式可以不需要&哦下面我们开始程序#include &stdio.h&main(){&&&&&&&&&& char a[50];&&&&&& printf("请输入一个字符串\n");&&&&&& scanf(" %s",a);&&&&&& printf("字符串为:%s\n",a);}&&&&我们输入hello 结果显示字符串为:hello但如果我们输入hello world 结果也显示字符串为:hello因为有个空格,scanf()在%c字符格式会接收空格(空格也是字符)但在字符串格式%s中 scanf()遇到空格、回车和Tab键都会认为输入结束那怎么让字符串输入包含空格,那也是我们下面的内容了现在让我们把所学的用上面的程序完善一下#include &stdio.h&main(){&&&&&&&&&& //年龄&&&&&&&&& //身高&&&&&& char name1[50],name2[50];&&& //曾经的名字和现在的名字&&&&&& printf("请输入你的年龄\n");&&&&&& scanf(" %d",&age);&&&&&& printf("请输入你的身高\n");&&&&&& scanf(" %f",&high);&&&&&& printf("请输入你曾经的名字\n");&&&&&& scanf(" %s",name1);&&&&&& printf("请输入你现在的名字\n");&&&&&& scanf(" %s",name2);&&&&&& printf("你的年龄:%d,你的身高:%.1f,你曾经的名字:%s,你现在的名字:%s\n",age,high,name1,name2);}&&&&数组我们现在还是学的最简单的,以后会慢慢扩充介绍数组的地方你可能还有点晕,你现在暂时只需了解上面程序数组的用法就可以了
除了printf()和scanf()函数,C语言还有其他输入输出函数,并且他们提供了一些printf()和scanf()没有的功能我们老学输入输出干什么,别急,这些输入输出函数将是我们以后将要用到的我们目前只学6个putchar()和getchar()putch()和getch()puts和gets()
putchar()是输出函数,看它的英文名很容易明白,是跟字符有关的,它的功能是把一个字符打印到屏幕只能一次打一个字符 putchar('a'); 屏幕上出显示一个字符a如果要打印hello world,需要这样#include &stdio.h&main(){&&&&& putchar('h');putchar('e');putchar('l');putchar('l');putchar('o');putchar(' ');putchar('w');putchar('o');putchar('r');putchar('l');putchar('d');putchar('\n');}&&&&把程序弄美观点#include &stdio.h&main(){&&&&& putchar('h');&&&&& putchar('e');&&&&& putchar('l');&&&&& putchar('l');&&&&& putchar('o');&&&&& putchar(' ');&&&&& putchar('w');&&&&& putchar('o');&&&&& putchar('r');&&&&& putchar('l');&&&&& putchar('d');&&&&& putchar('\n');}&&&&怎么样,很麻烦吧,还不如printf()呢另外它可以打印字符变量char a='x';putchar(a);打印字符变量的时候不需要引号这点要比printf()好 printf()需要这样打印 printf("%c",a);下面程序是putchar()和printf()分别打印字符变量a#include &stdio.h&main(){&&&&& char a='x';&&&&& putchar(a);&&&&& putchar('\n');&&&&& printf("%c\n",a);}&&&&可见putchar()打印字符变量是非常方便的,但用它直接打字符是非常愚蠢的行为,还不如用printf()但是putchar()一次只能打印一个字符,它的用处会在以后的程序中逐步体现,瞧着吧getchar()函数的功能是输入一个字符(就是从键盘获取一个字符),和putchar()是对应的怎么从键盘获取一个字符?这样吗?getchar(a);这是错的!!正确获取是这样a=getchar();当你从键盘按下一个字符,它就会自动存到变量a里,可以理解为a的值等于你按下的某个键的值,记住括号里不要放东西显然这种输入比scanf(" %c",&a) 方便多了,但也只是对于输入一个字符来说方便,scanf可以连接输入,而getchar一次只能输入一个字符
接下来就有点抽象了,尽管getchar()只获取一个字符,但当你在键盘按下一个键后,那个字符并不是马上被getchar()获取,而是到了缓冲区里,缓冲区是一块为输入预留的内存区域,缓冲区不会释放,直到你按下回车,缓冲区里的内容才一次一个字符的方式释放,这好比你寄东西给你朋友,邮局就相当于缓冲区,邮局向你征询要不要确定寄出去,在你确定之前你如果后悔又可以拿回自己的东西,所以你在输入字符的时候还可以用退格键重新修改或不再输入,而回车既等于确定却又是一个字符,回车自己本身也会进入缓冲区下来来个例子#include &stdio.h&main(){&&&&& char a,b;&&&&& a=getchar();&&&&& b=getchar();&&&&& putchar(a);&&&&& putchar(b);&&&&}&&&&我们输入x-回车-y-回车结果会是xy吗?不是的 结果是a=x b='\n'(回车) 当我们开始打x的时候,x在缓冲区,当我们按下回车的时候,第一个getchar()才获取到x这个值 顺利存到a里&&& 但回车既是确定又是字符,回车'\n'它也跟着进了缓冲区,并且和x一起被释放,x到了程序里 回车('\n')也到了程序里,并且被第2个 getchar()获取,此时我们输入y,这时缓冲区里有一个字符 'y', 然后我们又按下回车,'y'和'\n'又一起准备被释放,由于程序里没有第3个getchar(),所以'y'和'\n'还留在缓冲区,但它们两个已经是在准备状态中,如果程序又出现一个getchar(),'y'不需要你按回车它会直接进入到第3个getchar(),getchar()是依次获取,按先后顺序,不会先获取'\n',而'\n'正等待着马上进入第4个getchar() 下面这个程序很好的说明了这个问题#include &stdio.h&main(){&&&&& char a,b,c,d;&&&&& a=getchar();&&&&& b=getchar();&&&&& c=getchar();&&&&& d=getchar();&&&&&&&&& printf("a获取的是%c\n",a);&&&&&&&&& printf("b获取的是%c\n",b);&&&&&&&&& printf("c获取的是%c\n",c);&&&&& printf("d获取的是%c\n",d);&&&&}&&&&总结来说,当你输入x '\n'(回车)&&& 这两个字符已经同时从缓冲区释放了出来,被两个getchar()分别获取,‘\n’(回车)它进入缓冲区后会连同自己带着'x'又马上一起出来&&&&& 输入 y '\n'(回车)&&& 这两个字符也被同时释放,被其他的getchar()分别获取值得提醒的是#include &stdio.h&main(){&&&&& char a,b;&&&&& a=getchar();&&&&& b=getchar();&&&&& putchar(a);&&&&& putchar(b);&&&&}&&&&你直接输入 xy 会得到你想要的答案因为输入xy 还没有按回车 此时两个字符都在缓冲区里等你下回车后,xy'\n'都被释放了出来,xy分别被两个getchar()获取到但回车('\n')也是在释放准备中(此时它还在缓冲区,不过是准备释放状态),等待被第3个getchar()获取(如果有的话)所以,两种输入都会让缓冲区存在'\n',而我们根本不需要'\n'存放在我们定义的变量里,就连scanf()也会有缓冲问题,如何解决缓冲区里的'\n'是我们接下来要讨论的问题
第一种解决办法很简单,请看#include &stdio.h&main(){&&&&&& char a,b,n1,n2; //n1,n2表示存放回车&&&&&& a=getchar();&&&&&& n1=getchar();&&&&&& b=getchar();&&&&&& n2=getchar();&&&&&&&&&& printf("a获取的是%c\n",a);&&&&&&&&&& printf("b获取的是%c\n",b);&&&&&&&&&&&&}&&&&这个很容易理解了输入x 回车(两个被同时释放,存到第一,二个gerchar中)输入y 回车(两个被同时释放,存到第三,四个gerchar中)正好能得到我们想要的答案,n1,n2变量不需要管,那是专门存放回车('\n'),没任何含义上面的程序你不能输入xy 再回车,原因你懂得这样#include &stdio.h&main(){&&&&&&&&&& char a,b,n1; //n1表示存放回车&&&&&& a=getchar();&&&&&& b=getchar();&&&&&& n1=getchar();&&&&&&&&&& printf("a获取的是%c\n",a);&&&&&&&&&& printf("b获取的是%c\n",b);&&&&}&&&&另外你也可以不定义回车的变量,就这样#include &stdio.h&main(){&&&&&&&&&& char a,b; &&&&&& a=getchar();&&&&&& b=getchar();&&&&&& getchar();&&& //这个getchar存放的是'\n'&&&&&&&&&& printf("a获取的是%c\n",a);&&&&&&&&&& printf("b获取的是%c\n",b);&&&&}&&&&每个getchar()自己本身是有值的,不一定需要变量来等于所以printf("%c",getchar());&&& 这个语句是可行的另外有些C编译器会给出警告,但仍然能运行,你可以无视警告
第2种解决办法就是我们接下来要学的输入输出函数那就是getch()和putch()函数,其实用法和putchar()和getchar()是一样的不过用之前我们得在程序最上面需要加上#include &conio.h&这个头文件,因为只有这个头文件包含这两个函数这两个也是输入输出一个字符,但它们不再有缓冲区的概念,就是你不再需要按回车在确定了,你输入什么它会直接进入程序里,且不等你的回车#include &stdio.h&#include &conio.h&main(){&&&&& char a,b;&&&&& a=getch();&&&&& b=getch();&&&&& putchar(a);&&&&& putchar(b);&&&&&&&&}&&&&当你输入xy 不需要按回车,等你输入完之后它会立即显示到屏幕上也就是你输入x立马就进入程序被第一个getch()获取,输入y立马被第2个getch()获取,不再进入缓冲区等待回车来确定不过你在输入的时候,屏幕上不会显示你正在输入的东西,也就是一片空白,直到你完成输入它就会直接显示结果如果你要在屏幕上显示你正在打的东西,就需要用putch()函数#include &stdio.h&#include &conio.h&main(){&&&&& char a,b;&&&&& a=getch();&&&&& putch(a);&&&&& b=getch();&&&&& putch(b);&&&&& putchar(a);&&&&& putchar(b);&&&&&&&&}&&&&getch()也能接收回车,不过是'\r',return的开头,即回到当前行的行首,\n是换行, 回车其实是两个字符一起,分别是\r,\n。\r是回车,即回到当前行的行首,\n是换行,两个效果合起来就是我们所熟悉的到下一行开头。getchar()接收回车 首先接收到"\r"会去读缓冲区,如果缓冲区没有东西,它会开始等待,直到'\n'过来了,然后'\n'就进到缓冲区里,被getchar()获取,至于'\r',它不会进缓冲区而getch() 没缓冲区,它接收到的第一个字符就是'\r'之所以把'\n'称做回车,是让大家便于理解,但'\n'不完全等于回车,它其实是换行好像越说越复杂了,看不懂也没关系,你现在只要知道getch()按回车并不是接收'\n'就可以了,那些以后会慢慢懂的getch()自己本身也是值所以printf("%c",getchar()); 也可以,和getchar()一样getch()有个缺点,因为没缓冲区的关系,你输入的时候就不能在修改了,缓冲区相当于草稿,但它的优点就是不需要回车来确定了有点用途大家很熟悉 就是程序需要你按(Y/N)的时候按Y继续,按N退出,这时直接按Y或N就可以了,而不需要再按一次回车这里大家只要了解getch()函数就可以了 putch()基本不用的
登录百度帐号}

我要回帖

更多关于 如何自学c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信