程序设计中,为了观察程序的运行状态和结构,需要输出指定的内容;为了让程序能够更加灵活,可以根据需求输入内容,让计算机处理和运行;所以程序的输入输出就显的尤为重要。主要包括printf和scanf函数。

  printf()函数的功能---将程序的运行结果输出显示到屏幕上;使用要点:

    1、需要使用#include <stdio.h>头文件

    2、printf()需要参数,将对应的内容作为字符串参数传入即可

  下面通过例子来说明:  

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5. //其中的Hello jju!会原样不动的输出到屏幕上
  6. //\n是有特殊含义的,只是告诉程序,程序要换行,
  7. printf("Hello jju!\n");
  8.  
  9. return ;
  10. }

  例子1表明,“”中的内容按原样输出到屏幕上,\n只是让程序换了行

    3、printf()需要参数,应用占位符号,控制输出内容个格式和个数

  下面例子的执行结果为:

    The var1 and var2: 19  29
    The var2 and var1: 29  19

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char **argv)
  4. {
  5. int var1 = ;
  6. int var2 = ;
  7.  
  8. printf("The var1 and var2: %d %d\n", var1, var2);
  9. 9 printf("The var2 and var1: %d %d\n", var2, var1);
    10
  10. return ;
  11. }

  例子2表明,“The var1 and var2:”中的内容按原样输出到屏幕上,包括在两个%d之间的空格都是原样输出而已,\n依旧让程序换了行,而%d只是表明输出的是个10进制的数值,具体和后面的对应,由于var1的值为19,对应第一个%d,var2的值为29,对应第二个%d,因此输出的结果为19  29而已。

    4、printf()里面需要输出特殊符号,如%、\、“怎么办,使用两个%%号就可以输出一个%了,其他的特殊符号,只要在前面加上转义符号\即可

  结果为:

  百分号:%
  反斜杠:\
  双引号:""

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char **argv)
  4. {
  5. printf("百分号:%%\n");
  6. printf("反斜杠:\\\n");
  7. printf("双引号:\"\"");
  8.  
  9. return ;
  10. }

其中,例子3中的占位符号有以下几种:

  1、%d:按10进制整型数据的实际长度输出

  2、%ld:输出长整型数据

  3、%md:m为指定的输出字段的宽度,如果数据位数小于m,左端补上空格,如果数据位数大于m,按实际长度输出

  4、%-md:m为指定的输出字段的宽度,如果数据位数小于m,右端补上空格,如果数据位数大于m,按实际长度输出

  5、%u:输出无符号整型数

  6、%c:输出字符型数据

  7、%s:输出字符串,常常用来输出字符数组的内容或字符指针的内容,%s后面对应的需要是字符串的首地址

  8、%f:输出带小数点的数据,包括单精度和双精度类型,整数部分完整输出,默认对小数部分保留6位的四舍五入部分

  9、%.mf:与%f不同的一点就是指定输出的小数部分保留m位

  10、%o:按8进制数据的格式输出数据

  11、%x(或%X、%#x、%#X):按16进制数据的格式输出数据,当为X时,字母全是大写;当为x时,字母全是小写;当有#时,会在数据前面增加0x特征,没有#时,数据不会增加0x

特别注意的就是:有小数的数据,如果强行用整型输出格式输出,有时会出现严重的错误。

以下例子的结果为:

  十进制有符号输出:17 and -17
  十六进制特征输出:0x11 and 0X11
  十六进制无征输出:11 and 11
  八进制有符号输出:21 and 37777777757
  十进制无符号输出:17 and 4294967279
  指定宽度输出:17     and     17
  字符输出:a and 97
  长整型输出:65538 and 65538
  浮点数据默认输出: 3.141593
  浮点数据指定输出: 3.14159265358979311600
  ptr_cVar1内容为:This is a demo sample!
  ptr_cVar2内容为:This is too a demo sample!
  cArry的内容为:Hello, World!

代码为:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. int main(int argc, char **argv)
  6. {
  7. int iVar1 = ;
  8. int iVar2 = -;
  9. long lVar = ;
  10. double dVar = 3.1415926535897932;
  11. char cVar = 'a';
  12. char* ptr_cVar1 = (char*)malloc(sizeof(char) * );
  13. strcpy(ptr_cVar1, "This is a demo sample!");
  14. char* ptr_cVar2 = "This is too a demo sample!";
  15. char cArry[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o' ,'r','l', 'd', '!'};
  16. printf("十进制有符号输出:%d and %d\n", iVar1, iVar2);
  17. printf("十六进制特征输出:%#x and %#X\n", iVar1, iVar1);
  18. printf("十六进制无征输出:%x and %X\n", iVar1, iVar1);
  19. printf("八进制有符号输出:%o and %o\n", iVar1, iVar2);
  20. printf("十进制无符号输出:%u and %u\n", iVar1, iVar2);
  21. printf("指定宽度输出:%-6d and %6d\n", iVar1, iVar1);
  22. printf("字符输出:%c and %d\n", cVar, cVar);
  23. printf("长整型输出:%ld and %d\n", lVar, lVar);
  24. printf("浮点数据默认输出: %f\n", dVar);
  25. printf("浮点数据指定输出: %.20f\n", dVar);
  26. printf("ptr_cVar1内容为:%s\n", ptr_cVar1); //千万不要写成了*ptr_cVar1,需要字符串的首地址,使用字符串名称代替即可
  27. printf("ptr_cVar2内容为:%s\n", ptr_cVar2);      //同上边的道理是一样的
  28. printf("cArry的内容为:%s\n", &cArry);         //这里也是一样,不要写成了cArry
  29.  
  30. return ;
  31. }
  1. C语言的规定,如果你%c的格式,使用变量名称即可,其实也是使用变量的地址; 而如果使用%s格式,要求传入的就是一个字符串的首地址,所以只能用指针本身ptr_cVar1,而不能是指针的解析值*ptr_cVar1
    下面例子的结果为:
      Please input a number(0~100): 99
      Please input a char(a~z): c
      You input the number and char: 99 c
      The temp is 10 and 0xa
    代码如下:
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char **argv)
  4. {
  5. int iVar;
  6. char cVar;
  7. printf("Please input a number(0~100): ");
  8. scanf("%d", &iVar);
  9. int temp = getchar();                          //这行代码必不可少,主要是scanf函数的缺陷的克服吧
  10. printf("Please input a char(a~z): ");
  11. scanf("%c", &cVar);
  12.  
  13. printf("You input the number and char: %d %c\n", iVar, cVar);
  14. printf("The temp is %d and %#x\n", temp, temp);
  15.  
  16. return ;
  17. }

  对scanf函数的总结:

  1、输入参数需要地址参数,不要忘了&iVar的地址符号;

  2、函数的双引号内除了输入控制符号,和printf的控制符是一样的,最好不要加任何的内容;

  3、控制符的顺序和个数要完全一致;

  4、控制符的类型和顺序也要完全一致;

  5、最好在使用scanf函数前,使用printf函数给用户输出一个需要输入的提示信息

  1.  

《手把手教你学C语言》学习笔记(7)---程序的输入与输出的更多相关文章

  1. 《手把手教你学C语言》学习笔记(2)---学习C语言的目标和方法

    一.学习C语言的目标主要是: 熟练掌握C语言的关键字,语法规则,程序控制等: 掌握基本的数据结构,数组.链表.栈和队列等: 掌握C语言中指针和内存.数组与指针.函数与指针.变量和指针.结构体和指针.硬 ...

  2. 《手把手教你学C语言》学习笔记(1)---C语言的特点

    学习C语言的原因,主要是需要使用C语言编程,我用故我学,应该是最主要的原因了. C语言的定位:C语言严格意义上只能算是中级语言,是面向过程编程语言的集大成者,虽然这种语言有很多的问题,但总体而言是瑕不 ...

  3. 《手把手教你学C语言》学习笔记(4)---代码规范

    编程过程中需要遵守编译器的各种约定,例如以下代码: 1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 print ...

  4. 《手把手教你学C语言》学习笔记(10)--- 程序的循环控制

    C语言程序设计中,有些代码需要重复执行很多次,循环主要有三类: 一.for循环 1.基本格式为:for(表达式1:表达式2:表达式3){ //表达式1:循环变量赋初值 //表达式2:循环变量满足的条件 ...

  5. 《手把手教你学C语言》学习笔记(9)--- 程序的选择控制

    C语言是面向过程编程语言的主要代表,其特征就是严格控制程序的执行语句顺序,因此,C程序的主要结构控制就是顺序控制,以main函数为入口函数,根据控制,一条一条地执行语句.由于实际需求是很复杂的,只用顺 ...

  6. 《手把手教你学C语言》学习笔记(8)--- 运算符和表达式

    C语言编程的核心是指针和库,而库的核心就是函数,函数的基本组成部分就是语句. C语言合法表达式加上分号(语句结束符)构成C函数的基本部分语句.如果只有分号没有表达式就构成空语句,空语句常常用来形成占位 ...

  7. 《手把手教你学C语言》学习笔记(6)---数据类型和常量

    计算机中需要保存信息,就需要数据存储,数据的存储就需要划分数据类型.主要包括:基本数据类型.指针类型.构造类型.空类型. 基本类型:整型---主要用来表示整数,可以分为无符号和有符号:又分为基本整型. ...

  8. 《手把手教你学C语言》学习笔记(5)---计算机的存储和访问

    数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是 ...

  9. 《手把手教你学C语言》学习笔记(3)---变量

    编程目的是为了解决问题,编程本质是用计算机的思维操作数据,操作就是算法,数据主要是数据类型,也可以说量,其中分为常量和变量,常量主要是指在量的生命周期内无法改变其值:变量主要是指在量的生命周期内可以随 ...

随机推荐

  1. php下关于Cannot use a scalar value as an array的解决办法

    今天在测试php程序的时候,出现了一个错误提示:Cannot use a scalar value as an array,这个错误提示前几天也出过,当时好像稍微调了一下就好了,也没深究,今天却又出现 ...

  2. 通用后台管理系统源码,响应式布局,Java管理系统源码,零门槛安装部署

    本项目是一个通用响应式管理后台,导入开发环境安装就能直接运行,界面也非诚漂亮,在PC端和移动端也是自适应的.非常适合企业或者个人搭建各种商城后台,博客后台,网站管理后台等. 源码启动后的截图 需要这套 ...

  3. Python知识点入门笔记——Python文件操作、异常处理及random模块使用

    文件是存储在外部介质的数据集合,通常可以长久保存,前提是介质不易损坏 Python的绝对路径写法: E:\\编程学习资料\\爬取某社区高清无码大图.py E:/编程学习资料/爬取某社区高清无码大图.p ...

  4. 科学计算库Numpy——排序

    矩阵按维度排序 使用np.sort()进行排序. 排序索引值 使用np.argsort()排序,返回排序后的索引值. 备注:array1[1,2]=1.2,array1[1,0]=5.6,array1 ...

  5. 在windows和Linux下安装nodejs

    在windows下安装nodejs 1.首先下载nodejs安装包,  https://nodejs.org/en/download/ 点击下载相应的版本 然后将文件夹解压到安装目录(任意,不做规定) ...

  6. Jack Straws POJ - 1127 (简单几何计算 + 并查集)

    In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the table ...

  7. A JavaScript Image Gallery

    childNodes property:  The childNodes property is a way of getting information about the children of ...

  8. 1022: [SHOI2008]小约翰的游戏John9(Auti_SG)

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3150  Solved: 2013[Submit] ...

  9. 读取手机联系人,并用listview显示

    读取手机联系人,用到的就是一个contentprovider. 数据库里面有三张重要的表 raw_contact 里面有所有联系人的数据 data 每个联系人的所有数据 mime-type 每条数据的 ...

  10. 自己用C语言写RH850 F1KM serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 手上有块Renesas ...