首页 > 其他分享 >C语言第四部分(C语句)

C语言第四部分(C语句)

时间:2024-11-28 18:58:44浏览次数:6  
标签:语句 输出 字符 C语言 说明符 格式 数据 第四 输入

C语言

C语句

  • C程序是以函数为基本单位的。
  • 一个函数的执行部分是由若干条语句组成的。
  • C语句都是用来完成一定的操作任务的
  • C语句必须依赖于函数存在。
C语句分类
控制语句

用于完成一定的控制功能
① if( )… else
② for( )…
③ while( )…
④ do … while( )
⑤ continue
⑥ break
⑦ switch()
⑧ return
⑨ goto 标号(无条件跳转语句)
说明:“()”中是一个判断条件,“…"表示内嵌的语句

数据的输入输出

数据的输入与输出时相对于计算机而言,其中:

  • 从计算机向外部设备输送数据称之为输出。通常的输出设备包括:显示器、打印机等。
  • 从外部设备向计算机输送数据称之为输入。通常的输入设备包括:键盘、鼠标、扫描仪等。

在C语言中,输入与输出时用标准库()函数中的输入(scanf())、输出函数(printf())实现。
库函数已经被编译成了目标文件,在链接时与编译源程序得到目标文件(.obj)相连接,生成可执行程序。

注意:在使用系统库函数时,要用预编译命令#include将有关的头文件包含到用户源文件中(要放在程序的开头位置)头文件中包含了调用函数时需要的有关信息。

简单的输入与输出
用简单的printf函数输出数据

语法:

printf("格式控制",输出列表)

注意:格式控制中的格式化符号要和输出的数据一一对应

① 格式控制,用一对双引号括起来,包括两种信息:
1.格式说明:由“%”和特定的字符组成如:%d,%c,%f等,这是格式说明符,用于说明输出项目所采用的格式。
2.普通字符:作为说明性的文字、符号等,照原样显示出来。

② 输出列表:输出列表中的各项目指出了所要输出的内容,可以是常量、变量、表达式。

基本的格式字符

%d:按十进制整型(int)数据的实际长度输出。(十进制(0)、八进制(00)、十六进制(0X00)

%u:按无符号十进制整型(int)数据的实际长度输出

%C:仅输出一个字符(char)

%S:输出结果是字符串,举例:printf(“%s\n”,“CHINA”);,输出结果:CHINA

%f:以小数形式输出一个实数(涵单双精度)。整数部分全部输出,小数部分输出6位。

%e:也可以写作%E,以指数形式输出一个实数(涵单双精度)。小数点前1位非0数字,并输出6位小数。

%hd:短整型(short int/short)

%hhd 字符型的ASCII码,char数据对应的ASCII码的值,举例:“char a=A;printf(”%hhd\n",a);输出结果:65

%lf:双精度浮点型(double)

%ld:长整型(long int/long)

%lld:长长整型(long long int/long long)

%x:十六进制,十六进制的前缀0x不会会打印出来
%#x:十六进制,并且十六进制的前缀0x也会打印出来

%#o:八进制,并且八进制的前缀0也会打印出来

%p:打印内存地址

用简单的scanf函数输入数据

语法:

scanf("格式控制",地址列表); ---注意,不能传变量,常量,表达式只能传与之对应的内存地址

取地址:

int a = 10;//定义了一个变量a
scanf("%d",&a);// &被称为取地址符,&a:意思是获取a变量对应的内存地址

作用:将从键盘输入的值存入内存中所占的存储单元里。存储单元有地址标识。

说明:

​ "格式控制”:含义等同于printf函数的格式控制,说明输入的数据应该使用的格式,但是格式控制中不能添加除格式化符以外的字符。

​ "地址列表”:是由若干个地址组成的,可以是变量的地址或者字符串的首地址。&是取地址运算符,用于取出变量的地址。与格式输出一样,在格式控制中,用于说明输入数据格式的格式说明符总是以%开头,后面紧跟具体的格式。

注意:输入的数据可用空格、Tab键、回车键中的任意一种方式分开、说明:

  • scanf函数中的“格式控制”后面应当是变量的地址,由取地址运算符和变量名共同组成,不能仅是变量名:scanf(“%f%d” &a.&b):
  • 如果“格式控制”中除了格式说明以外还有其它字符,则在输入数据时必须在对应位置输入与之相同的字符:scanf(“%d,%d”, &a.&b);从键盘输入时必须输逗号:3,4J
  • 用%c格式输入字符时,空格和转义字符(\n)都作为有效字符输入,
  • 对于unsigned型变量所需的数据,可以用%u或%d格式输入。
复杂的输入与输出

按指定格式输出数据的 宽度 、 小数位数
上下行数据按小数点对齐、用八进制、十六进制输出等。

输出数据格式的控制
整形格式说明符
  • 十进制形式
说明符说明数据类型
%d和%md用于基本类型int
%ld和%mld用于长整型long
%u和%mu用于无符号基本整形unsigned
%lu和%mlu用于无符号长整型unsigned long
  • 八进制形式
说明符说明数据类型
%o和%mo用于基本类型int
%lo和%mlo用于长整型long
  • 十六进制形式
说明符说明数据类型
%x和%mx用于基本类型int
%lx和%mlx用于长整型long

m表示输出整型数据所占总宽度(即列数),其中:
① 当实际数据的位数不到m位时,数据前面将用空格填满;
② 若实际数据位大于m,则以数据的实际位数为准进行输出。

一个int型整数也可以用%u输出,反之一个unsigned型整数也可以用%d、%0、%x格式输出。按相互赋值的规则处理。

字符型格式说明符
  • 字符char型
说明符说明举例
%c和%mc输出的字符占m列printf(”%3c\n“,‘a’)
  • 字符串型
说明符说明
%ms输出的字符串占m列。若串长>m列,全部输出;反之在串前补空格(正前)
%-ms输出的字符串占m列。若串长>m,全部输出,反之在串后补空格(负后)
%m.ns输出的字符串占m列。只取字符串前n个字符,不足部分串前补空格
%-m.ns输出的字符串占m列。只取字符串前n个字符,不足部分串后补空格

一个整数,只要其值在0~255范围内,也可以用%c格式使其按字符形式输出

实型格式说明符
  • 十进制形式:%m.nf或者%-m.nf
  • 指数形式:%m.ne或者%-m.ne
  • %g或者%G形式:根据数值的大小,自动选择%f或者%e中宽度较短的一种格式,不输出无意义的0

​ 在输出实型数据时,格式说明符中的m表示整个数据所占的列宽,n表示小数点后面所占的位数。

​ 如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则按实际的位数进行输出。

​ 在C语言中,用于输出单精度实型数据与双精度实型数据格式说明符是一样的。

输入数据格式的控制
整型格式说明符

可见:
① 用于输入与输出整型数据的格式说明符是完全一致的。
② m表示输入数据时的宽度(列数)
③ 与输出情形一样,对于八进制与十六进制的输入格式,主要用于输入无符号的整型数据。

实型格式说明符
  • 单精度实型:%f或者%e
  • 双精度实型:%If

※ 可见:
(1)与输出不同,输入时无论是单精度还是双精度实型,都不能用m.n来指定输出的宽度和小数点后的位数;
(2)可以指定输入数据所占的列数,系统自动按它截取所需数据,如:scanf(“%3d%3d”,&a,&b);当输入1234567时,a得到123,b得到456,多余的7无用;
(3)若在%号后有一个*和一个数字,表示跳过它指定的列数,如:scanf"%2d%3d%3d"&a,&b);当输入12345678时,a得到12,%63d表示读入345这3个数但不赋给变量,b得到678。

  • 当用于输入整型数据的格式说明符中没有宽度说明时,则在具体输入数据时分为以下两种情况:
    ① 如果各格式说明符之间没有其它字符,则在输入数据时,两个数据 之间用"空格"、或"Tab"、或"回车"来分隔。
    ②) 如果各格式说明符之间包含其它字符,则在输入数据时,应输入与 这些字符相同的字符作为间隔。

  • 例如,设有如下说明
    int a,b;
    float c,d;
    现要利用格式输入函数输入a=12,b=78,c=12.5,d=7.6。采用不同的格式说明,其输入数据的形式也是不同的。分别说明
    如下:

    • 若输入语句为 scanf(“%d%d%f%f”,&a,&b,&c,&d);(即格式说明符中没有宽度说明,各格式说明符之间也没有其他字符。)
      则输入数据的形式应为 12 78 12.5 7.6」(两个数据之间用空格来分隔,当然也可用“Tab”或“回车”来分隔。)
    • 若输入语句为 scanf(“%d,%d,%f,%f”,&a,&b,&c,&d);(格式说明符中没有宽度说明,但各格式说明符之间有其它字符,即逗号)
      则输入数据的形式应为 12,78,12.5,7.6」(即在输入的两个数据之间同时要输入逗号。
    • 若输入语句 scanf(“a=%d,b=%d,c=%fd=%f”,&a,&b,&c,&d);(即格式说明符中没有宽度说明,但各格式说明符之间有其它字符。)
      输入数据的形式应为a=12,b=78,c=12.5,d=7.6.(即在输入的两个数据之间同时要输入这些非格式说明符的字符。)
  • 在用于输入的实型格式说明符中不能用m.n来指定输入的宽度和小数点后的位数(这是与输出的不同之处)。
    例如:
    scanf(“%7.2f”,&a);x此用法是错误的

  • 为了便于程序执行过程中从键盘输入数据,在一个C程序开始执行时,系统就在计算机内存中开辟了一个输入缓冲区,用于暂存从键盘输入的数据。开始时该输入缓冲区是空的。当执行到一个输入函数时,就检查输入缓冲区中是否有数据:
    输入数据所占的列数,系统自动按它截取所需数据,如:scanf(“%3d%3d”,&a,&b);当输入1234567时,a得到123,b得到456,多余的7无用;

(3)若在%号后有一个*和一个数字,表示跳过它指定的列数,如:scanf"%2d%3d%3d"&a,&b);当输入12345678时,a得到12,%63d表示读入345这3个数但不赋给变量,b得到678。

  • 当用于输入整型数据的格式说明符中没有宽度说明时,则在具体输入数据时分为以下两种情况:
    ① 如果各格式说明符之间没有其它字符,则在输入数据时,两个数据 之间用"空格"、或"Tab"、或"回车"来分隔。
    ②) 如果各格式说明符之间包含其它字符,则在输入数据时,应输入与 这些字符相同的字符作为间隔。

  • 例如,设有如下说明
    int a,b;
    float c,d;
    现要利用格式输入函数输入a=12,b=78,c=12.5,d=7.6。采用不同的格式说明,其输入数据的形式也是不同的。分别说明
    如下:

    • 若输入语句为 scanf(“%d%d%f%f”,&a,&b,&c,&d);(即格式说明符中没有宽度说明,各格式说明符之间也没有其他字符。)
      则输入数据的形式应为 12 78 12.5 7.6」(两个数据之间用空格来分隔,当然也可用“Tab”或“回车”来分隔。)
    • 若输入语句为 scanf(“%d,%d,%f,%f”,&a,&b,&c,&d);(格式说明符中没有宽度说明,但各格式说明符之间有其它字符,即逗号)
      则输入数据的形式应为 12,78,12.5,7.6」(即在输入的两个数据之间同时要输入逗号。
    • 若输入语句 scanf(“a=%d,b=%d,c=%fd=%f”,&a,&b,&c,&d);(即格式说明符中没有宽度说明,但各格式说明符之间有其它字符。)
      输入数据的形式应为a=12,b=78,c=12.5,d=7.6.(即在输入的两个数据之间同时要输入这些非格式说明符的字符。)
  • 在用于输入的实型格式说明符中不能用m.n来指定输入的宽度和小数点后的位数(这是与输出的不同之处)。
    例如:
    scanf(“%7.2f”,&a);x此用法是错误的

  • 为了便于程序执行过程中从键盘输入数据,在一个C程序开始执行时,系统就在计算机内存中开辟了一个输入缓冲区,用于暂存从键盘输入的数据。开始时该输入缓冲区是空的。当执行到一个输入函数时,就检查输入缓冲区中是否有数据:

标签:语句,输出,字符,C语言,说明符,格式,数据,第四,输入
From: https://blog.csdn.net/expectsl/article/details/144118348

相关文章

  • C语言新手疑问
    以下是一段驶入一个日期,然后输出下一天的日期的代码,但是这段代码我输入了日期之后程序什么也不输出,(注:把scanf改成scanf_s是因为visualstudio一直说我返回值被忽略),至于为什么不输出,我找AI看了也没看明白,哪位大佬能不吝赐教一下,感激不尽#pragmawarning(disable:4996)#includ......
  • 6.C语言函数(下)
    文章目录六、数组做函数参数七、嵌套调用和链式访问7.1嵌套调用7.2链式访问八、函数的声明和定义8.1单个文件8.2多个文件(重要)!!8.3static和extern8.3.1static修饰局部变量8.3.2static修饰全局变量8.3.3static修饰函数六、数组做函数参数在使用函数解决问......
  • 《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
    第四十章YOLO2人手检测实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正......
  • Delphi有关语句
    在Delphi中,String.Format函数用于格式化字符串。你提供的语句String.Format('|%8s|%-25s|%-25s|',['ID','NAME','DEPARTMENT'])会生成一个格式化的字符串,其中包含三个字段:ID、NAME和DEPARTMENT。具体解释如下:|%8s|:表示一个宽度为8个字符的字符串字段。%s是字符串格......
  • C语言:运算符1(混合运算和算数运算符)
    各类数值型数据间的混合运算整型、实型、字符型数据间可以进⾏混合运算,如:10-'a'*1.5运算时,参加运算的两个数据如果类型不同,则⾸先将其类型转换成⼀致再运算,转换规则是:将优先级低的类型转换到优先级⾼的类型,被称作自动类型转换(小转大)。⾃动类型转换的形式为:大类型......
  • C语言:运算符2(赋值运算符)
    赋值运算符“=”称之为赋值运算符,其作用是将一个数据赋值给一个变量。如:a=5执行赋值运算的结果,是将右边的数据存入左边变量对应的内存单元中,赋值运算的顺序:由右向左赋值规则如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:实型→整型变量:舍弃⼩数部......
  • C语言 九宫格输入法
    假设有九宫格输入法键盘布局如下:[1,.?!][2ABC][3DEF][4GHI][5JKL][6MNO][7PQRS][8TUV][9WXYZ][0空]注意:中括号[]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字......
  • VScode配置C语言环境
    第一步下载VScode:VisualStudioCode-CodeEditing.Redefined第二步搜索下载VScode插件:​ C/C++Chinese上面两个插件安装完成后会提示重启VScode完成中文语言设置第三步配置C语言编译器:https://wwgn.lanzoul.com/iB4US2gj0ayh密码:8y95下载完成后解压,这里我选择保存......
  • C语言笔记——数组
    一维数组C语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。C中的数组1、数组的定义格......
  • C语言笔记--选择和循环语句
    分支语句ifswitch循环语句whilefordowhilegoto语句什么是语句C语句可分为以下五类:1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可......