04-最简单的C程序设计
第四章最简单的C程序设计
提高人机交互性建议:为改善人机交互性,同时简化输入操作,在
设计输入操作时,一般先用 printf() 函数输出一个提示信息,再用 scanf()函数进行数据输入。 例如,将scanf("num1=%d,num2=%d\n",&num1,&num2 );改为: printf("num1="); scanf("%d",&num1); printf("num2="); scanf("%d",&num2); 3.输入数据时,遇到以下情况,系统认为该数据结束: (1)遇到空格,或者回车键,或者Tab键。 (2)遇到输入域宽度结束。例如“%3d”,只取3列。 (3)遇到非法输入。例如,在输入数值数据时,遇到字母等非数 值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。
1,输入10个数,输出其中最大者
第四章 最简单的C程序设计-
计算机学院基础教学中心
格式输入函数 SCANF 的格式说明2
输入项变 量类型 格式说明 %d int型 %o %x %c char型 %c %d 输 入 数 据 的 形式 十进制整常数 八进制整常数 (不需以0开头) 十六进制整常数 (不需以0x开头) 一个可键入字符 (不需加单引号) 一个可键入字符 (不需加单引号) 0~255整常数
C语言中的输入\输出的实现
由C函数库中的函数实现,C语言本身不提供输入/输 出语句
计算机学院基础教学中心
注意:不同编译系统提供的函数库中函数数量、名字 和功能不同。 使用库函数中的函数要使用#include将有关头文件 包括到用户源文件中。 例: #include <stdio.h>
4.4 字符数据的输入输出
4.2 赋值语句2
例如: for语句格式:for(表达式1;表达式1;表达式1) ~ for(i=1; i<=10; i=i+1) ~
计算机学院基础教学中心
4.3 数据输入输出的概念及在C语言中的 实现
输入:从输入设备(键盘、鼠标、扫描仪等)向计算 机输入数据
计算机学院基础教学中心
输出:从计算机向外部输出数据(显示器、打印机等)
计算机学院基础教学中心
a, b, c
PRINTF-字符串格式说明1 按实际长度输出字符串
计字符数组名
格式说明 %s %s
输出形式 字符串 字符串
指定宽度和对齐方式 %ms、%-ms
PRINTF-字符串格式说明2
截取字符串中的部分字符输出
putchar函数 getchar函数
计算机学院基础教学中心
第三章最简单的C程序设计顺序程序设计资料PPT课件
P
T
F
A
当P为真
A
AB
当P为真
A
处理
判断
循环
❖ 4,伪代码:用介于自然语言和计算机语言之间的文字或符 号描述算法方便,易懂,便于向计算机语言过度)
5
举例:
100
计算 s i 写出其算法
i1
自然语言描述: 1,0s
流程图描述 开始
2,1->i
0->s
3,s+i->s 4,i+1->i 5,判断i<=100 是,转3,否则转6 6,输出s的值
12
3.3
C程序结构: C语句程序对数据的处理是通过“语句”的执行来实现的。
源程序文件1 源程序文件i 源程序文件n
2,一条语句完成一项操作(或功能)。 3,一个为实预编现译特命定令目的的函程数序1 应包含函若数干n条语句。
说明部分 执行部分
C程序结构
13
组成:表达式;
C语言的语句分类: 表达式语句(表达格式;式):注功意;能为:组 {:语任成分计句何[执:类算数组,表行如b:据表成=达语:说1如达23i句:,式+,,明a:式标+用p部函=都部;r或准5i户分xn数可分+=t改库;定bf名;y(以;“变+函a义](加z/=参*变数;的局%上x数量.部函=d分需2”列的变,数;a号加表)量值.;成头)*;/ 文件 函数调用语句功(能函:数任执名何行(操该参作语数.句表}不注)做;意):1, “ } ”之后,不需要分号。
当条件成立(为“真”或 非0)时,反复执行程序 段A,否则不执行程序段 A。
假(0) 条件p 真(非0)
A
当P为真
A
第四章最简单的C程序设计――顺序程序设计.
第四章最简单的C程序设计――顺序程序设计§4.1 C语句概述一个C程序应由两部分组成,即数据描述和数据操作。
数据描述:用来定义数据结构和预置数据初值,由声明部分实现。
如:int a=3;数据操作:对已提供的数据进行加工,由语句来实现。
所以,语句是C程序的主体。
C语句可以分为5大类。
4.1.1 程序控制语句if() ~ else ~for() ~while() ~do ~ while()continue breakswitch goto return其中:()表示一个条件。
~表示内嵌的语句。
如:if(x>y) z=x;else z=y;4.1.2 函数调用语句由函数加上一个分号构成。
如:printf(“hellow”);4.1.3 表达式语句表达式加上一个分号即可组成一个表达式语句。
如:i=1;x=sin(y);等。
4.1.4 空语句一个分号就是一个空语句,表示什么都不做。
4.1.5 复合语句用{}括起的一个语句序列。
如: {z=x+y;t=z/100;printf(“%f”,t);}4.1.6 赋值语句1、构成:赋值语句由赋值表达式加上一个分号构成。
如a=b;。
2、说明1)C语言中的赋值号是一个运算符,这是与其它高级语言相区别的。
2)赋值表达式作为表达式可以出现在其它任何表达式中,而作为语句则不能。
如:if((a=b)>0)t=a;,表示先将b赋给a,且如果a>0则将a赋给t。
但:if((a=b;)>0)t=a;,则是错误的。
§4.2 数据输入输出的概念及在C中的应用4.2.1 数据输入输出的概念1、输入:相对于计算机主机而言,从外设读入数据。
如:键盘、磁盘、光盘等。
2、输出:相对于计算机主机而言,向外设输出数据。
如:显示器、磁盘、打印机。
4.2.2 数据输入输出的实现1、C本身并不提供输入输出语句,输入输出操作是由函数来实现的。
函数已编译成OBJ文件以库的形式存放在系统中,在源程序编译后由连接程序将它和库进行连接生成可执行文件。
第四章最简单的C程序设计.
几种常见的格式符的修饰符:
L:用于长整型整数,可加在格式符d,o,x,u前面 M(代表一个正整数):数据最小宽度 N(代表一个正整数):对实数,表示输出n位小数; 对字符串,表示截取的字符个数 —:输出的数字或字符在域内向左靠
C程序设计
4.5
格式输入与输出
(1) d格式符。用来输出十进制整数。
几种用法: ① %d:按十进制整型数据的实际长度输出。 ② %md:m为指定的输出字段的宽度。如果数据的位数小于m, 则左端补以空格,若大于m,则按实际位数输出。 例: printf(″%4d,%4d″,a,b); 若a=123,d=12345,则输出结果为 123,12345 ③ %ld:输出长整型数据。 例: long a=135790;/* 定义a为长整型变量*/ printf(″%ld″,a);
C程序设计
4.5
格式输入与输出
(4)u格式符,用来输出unsigned型数据.
一个有符号整数(int型)也可以用%u格式输出; 一个unsigned型数据也可以用%d格式输出。 unsigned型数据也可用%o或%x格式输出。
(5)c格式符,用来输出一个字符。
如:char d=′a′; printf(″%c″,d); 输出字符′a′. 一个整数,只要它的值在0~255范围内,可以用“%c”使 之按字符形式输出,在输出前,系统会将该整数作为ASCII码转 换成相应的字符;一个字符数据也可以用整数形式输出。
C程序设计
4.5
格式输入与输出
(7)f格式符。用来以小数形式输出实数(包括单双精度)
有以下几种用法: ① %f。不指定字段宽度,由系统自动指定字段宽度,使整数 部分全部输出,并输出6位小数。应当注意,在输出的数字中 并非全部数字都是有效数字。单精度实数的有效位数一般为7位。 ②%m.nf。指定输出的数据共占m列,其中有n位小数。如 果数值长度小于m,则左端补空格。 ③%-m.nf与%m.nf基本相同,只是使输出的数值向左端 靠,右端补空格。
第四章 最简单的C程序设计
第四章最简单的C程序设计----顺序程序设计一、C语言概述⒈ C语言只有可执行语句/* */ 注释部分,对编译和运行不起作用。
⒉一个C程序可由若干源程序文件组成,一个源程序文件可由若干函数和预编译命令组成。
⒊ C语句有五大类:⑴控制语句:九种 P68例、if ( 表达式)语句 /*注意: ;是语句的组成部分*/[ else语句 ] ⑵函数调用语句:函数;例、printf(“Ok!”); ⑶表达式语句:表达式;例、a=‘a’; + +a ;x=y, y=2*5+z, x+=z=y+4 ;⑷空语句:; /*什么也不做,主要用于循环语句*/⑸复合语句:由{ }括起的若干语句构成。
例、main( ) /*两个整数由小到大排列*/{ int a, b, t;scanf (“%d, %d”, &a, &b);if (a>b){ t=a ; a=b ; b=t ;}printf (“%d, %d”, a, b) ; }⒋ C语句书写格式无固定要求如,一行可写几条语句,一条语句可分几行书写。
例、printf(“%d, %d”,a, b) ;注意:不可以随意把一条语句拆分成多行,需要保证字符串的完整性。
如上例,printf(“%d,%d”,a, b) ;⒌;是语句的组成部分,不是分隔作用。
二、基本输出与输入的方法1、基本输出方法printf(格式控制字符串,变量表列);1、d格式符:用来输出十进制整数。
有以下几种用法:(1)%d,按整型数据的实际长度输出。
(2)%md,m为指定的输出字段宽度。
如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
(3)%ld,输出长整型数据。
也可以指定长整型数据输出字段宽度,如%mld。
2、o格式符:以8进制数形式输出整数,是将内存单元中的各位的值按八进制形式输出,因此输出的数值不带符号。
3、x格式符:以16进制数形式输出整数,方法同o格式符。
4、u格式符:用来输出unsigned型数据,即无符号数,以十进制数形式输出。
第四章 C语言 最简单的C程序设计
%msBiblioteka 字符串一串字符4.6
顺序结构程序设计例
程序设计方法:读3遍题目,了解已知什么?求什么?怎么求(算法)? 【例一】输入三角形边长,求面积。 【程序设计】 (1)算法:输入3个边长a、b、c; 用下列公式计算面积s。 ,其中L=(a+b+c)/2; s = L( L − a )( L − b)( L − c) 输出面积。 (2)数据结构:存放原始数据、中间结果数据、最终结果数据的变量。 原始数据:a、b、c(实型); 中间结果:l(实型); 最终结果:s(实型)。 【程序清单】#include "stdio.h" #include "math.h" /* 其中用到开方的系统函数sqrt(表达式) */ void main() { float a,b,c,l,s; scanf(“%f,%f,%f”,&a,&b,&c); 如果没有逗号,如何输入? l=(a+b+c)/2.0; 写成2,是否正确,有何缺点? s=sqrt(l*(l-a)*(l-b)*(l-c)); printf("area=%f\n",s); } 注:在VC中此处会出现警告性错误。双精度数存入单精度变量l。 8 在VC中调试程序时,若出现警告性错误,是可以运行的!
1
4.2
赋值语句
【格式】变量=表达式; 【注】表达式语句的一种。
4.3
数据输入输出概念及其在C语言中的实现。
#include "stdio.h" void main()只能计算5+8的程序 { int x1,x2,x; x1=5,x2=8; x=x1+x2; } 看不到计算结果 #include "stdio.h" void main()能计算任何两整数和的程序 { int x1,x2,x; 输入两个整数存入x1,x2; x=x1+x2; 输出变量x中的值; }
C语言简明教程第04章最简单C程序设计
getchar函数 功能:从标准输入设备上(键盘)输入一个且只
能是一个字符,并将该字符返回为函数的值。
格式:getchar();
没有参数 例:
#include <stdio.h>
注意:
main()
(1)只有在按“回车”键之后输入的字
{
符才有效.
int i;
(2)此函数只接受一个字符,而非一
i=getchar(); printf(“%c:%d\n”,i,i);
格式字符
说
明
l
用于长整型,可加在格式符d、o、x、u前面
%lf将修正为double型
h
将整型格式d、o、x、u修正为short型
m(正整数) 数据最小宽度
n(正整数) 对实数表示输出n位小数;对字串表示截取的字符个数
-
输出的数字或字符在域内向左靠
0
用“0”来填充数字前面的空位
长度修饰符:l(长),h(短),放在(1)格式字符前面。 域宽和精度描述符:m(域宽).n(精度),放在长度修饰符的前面。
格式控制符:规定 数据的输入格式, 必须由“ ”括起来 ,其内容包括格式 说明(修饰符)和 格式符两部分。
地址列表:由一个或多个 变量的地址组成,变量地 址之间以“,”分隔。也 可以是字符串的首地址。
在C语言中一个变量的地址 可以通过&地址运算符得到。 例如:int a,b;
则a,b的地址为&a,&b。
❖ 4.空语句。下面是一个空语句: ;
即只有一个分号的语句,它什么也不做。有时用来作被转向点,或 循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。
❖ 5.可以用{ }把一些语句括起来成为复合语句,如下面是一个复合 语句。 {z=x+y; t=Z/100; printf(”%f”,t); }
第4章 最简单的C程序设计
第4章最简单的C程序设计本章主要任务:了解C语言语句分类:控制语句,表达式语句,复合语句。
掌握表达式语句,复合语句的构成。
掌握格式化输入/输出函数,常用其它输入/输出函数的使用。
4.1 C语句概述4.2 输入/输出及C语言的实现4.3 顺序结构程序设计举例4.1 C语句概述C语言的语句用来向计算机系统发出操作指令。
一个语句经编译后产生若干条机器指令。
一个实际的程序应当包含若干语句。
C程序结构:一个C程序可以由若干个源程序文件组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成,一个函数由数据定义部分(声明部分)和执行语句组成。
应当指出,声明部分的内容不应称为语句。
C程序的组成C语句可以分为以下3大类:(1)控制语句(2)表达式语句表达式语句是在表达式最后加上一个“;”组成。
例如:c程序中大多数语句是表达式语句(包括函数调用语句),所以有人把c语言称作“表达式语言”。
(3)复合语句用{}把一些语句(语句序列,表示一系列工作)括起来成为复合语句,又称语句块、分程序。
一般情况凡是允许出现语句的地方都允许使用复合语句。
在程序结构上复合语句被看作一个整体的语句,但是内部可能完成了一系列工作。
如:{z=x+y;t=z/100;printf("%f",t);}4.2 输入/输出及C 语言的实现(1) 计算机的组成CPU 内存I/O 接口硬盘软驱显示器键盘鼠标打印机主机外围设备(2) 输入/输出:从计算机向外部设备(如显示器、打印机、磁盘等)输出数据称为“输出”,从外部设备(如键盘、鼠标、扫描仪、光盘、磁盘)向计算机输入数据称为“输入”。
(3) C语言本身不提供输入/输出语句,输入/输出操作由函数实现。
在C标准函数库中提供了一些输入/输出函数,如printf函数,scanf函数。
C函数库中有一批“标准输入/输出函数”,它是以标准的输入/输出设备(一般为终端)为输入/输出对象的。
第04章最简单C程序设计
图4.1
3.C语句的种类:
1) 控制语句
—-----完成一定的控制功能。
C只有9种控制语句:
① if()~else~ (条件语句)
② for()~
(循环语句)
③ while() (循环语句)
⑤ continue (结束本次循环语句)
⑥ break ⑦ switch ⑧ goto ⑨ return
例4.1 输出单个字符。 #include <stduio.h> main() { char a,b,c; a='b';b='o';c='y'; putchar(a);putchar(b);putchar(c); }
运行结果: boy
NOTE: 1) 可输出控制字符。 如putchar(‘\n’)输出一个换行符,使输出的当前位置移到下一行的开头。
4) 空语句。
例 如:
;
即只有一个分号的语句,它什么也不做。
用 途: (1)用来做被转向点; (2)循环语句中的循环体(循环体是空语句,表示循环体什么也 不做)。
5)复合语句/分程序 构 成:用 {}把一些语句括起来成为复合语句/分程序。 例 如: {z=x+y; t=z/100; printf("%f",t); }
NOTE: (1) 复合语句中最后一个语句中最后的分号不能忽略不写(这是和pascal不同的)。 (2) C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式
无固定要求。
4.2 赋值语句
定 义: 赋值语句是由赋值表达式加上一个分号构成。
NOTE: 1) C语言中的赋值号“=”是一个运算符,在其他大多数语言中赋 值号不是运算符。 2) 其他多数高级语言没有“赋值表达式”一概念。
第3章 最简单的C程序设计
2020/5/15
20
3.算术表达式和运算符的优先级与结合性
▪ 例: ▪ 33+a*b/c-1.5+’a’
2. 自增自减运算符
▪ ++i , – –i ▪ i ++ , i – –
▪ j=++i; ▪ j=i++;
注1.自增自减运算符,只能作用于变量,而不能用于常量或表达式。5++、 (a+b)++不合法。
空类型
11
3.2.3 整型数据
1. 整型数据的分类
(1)基本整型
int i; //int型数据单元为2个字节或4个字节
i =10;
2019
2000
i
00000000 00001010
i 的地址为2000
数值是以补码表示的。例如 – 10的补码。
10的原码 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
按位取反 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
再加1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
2020/5/15
12
1.整型数据的分类 基本整型:int 短整型:short int 或 short 长整型:long int 或 long 双长整型:long long int (C99新增,较多编译器未支持)
(2)实型常量 十进制小数形式 指数形式形式:12.34e3、-1.23E-7
2020/5/15
2
1.常量
(3)字符常量 普通字符,用单撇号括起来的字符。如'a','D','1', '?','$'。 ➢此为源程序级的表示,例如c= 'a'; ➢若在计算机中表示,则为其ASCII码的二进制。 ➢注意ASCII表的规律,空字符、空格字符 转义字符:以字符\开头的字符序列。例如 '\n'
第4章 最简单的C程序设计
{
int z ; if (x>y) z=x;
{
z=x+y;
else z=y;
return(z); }
t=z/100;
printf(“t=%f”,t); }
4、2
赋值语句
1、赋值号“=”是一个运算符; 2、赋值表达式还可以包括在其他表达式中; 3、赋值表达式加上一个“;”构成赋值语句。
例如: C+=(a=5) C+=(a=5);
第4章 最简单的C程序设计 ——顺序程序设计
4、1
C语句概述
一、C程序的构成
一个 C程序可以由若干个源程序文件(分 别进行编译的文件模块)组成,一个源文件可以 由若干个函数和预处理命令以及全局变量声明部 分组成,一个函数由数据定义部分和执行语句组 成。
二、C语句的分类
1、控制语句:用于控制程序的流程
八、e(或E)格式符:将数值按规范化指数形式 输出。一般形式为:x . xxxxxx e(E) +(-) xxx (2)%m.ne (3) %-m.ne (4)%me (5)%.ne
例如:x=12345.6789;
printf(“x=%e , \nx=%10.2e , \nx=%-10.2e , \n x=%10e,\nx=%.2e”,x,x,x,x,x); 输出结果为:x=1.234567e+004, (13列)
输出结果为:
x=12345.67****,y=1234567891011.121***
(2)%m.nf:输出的数据共占m列,其中有n列为小
数部分,数据长度不够则左端补以空格。
(3)%-m.nf:输出的数据共占m列,其中有n列为
小数部分,数据长度不够则右端补以空格。
第四章 最简单的C程序设计
7. f 格式字符
%f
用来输出实数的基本型(包括单、双精度)
整数部分全部输出,小数部分6位
%m.nf 输出数据共占m位,其中n位小数。如数值长度<m,则左端补空格 %-m.nf 输出数据共占m位,其中n位小数。如数值长度<m,则右端 补空格
例
#include <stdio.h> main() { float f=123.456; printf("%f,%10f,%10.2f,%-10.2f,%.2f\n",f,f,f,f,f); }
[例3] 求二元一次方程 分析
ax2 + bx + c = 0 的实根,已知b*b-4ac>0。
已知b*b-4ac>0 则实根为 -b± b2 -4ac x1,2= 2a 算法 1.输入已知值a,b,c 2.代入公式求x1,x2 3.输出x1,x2
#include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%-7.2f\nx2=%-7.2f\n", x1,x2); }
4.6.2 scanf()函数 函数 格式 scanf(格式控制,地址表列) 其中 1.格式控制是用双引号括起来的字符串,字符串由格式说明 和普通字符构成 (1) 格式说明由%和格式字符构成,说明输入数据的格式 格式字符见page43表3.3、表3.4 (2)普通字符作为输入数据之间的分隔符。如 , 空格 2.地址列表是输入数据存入内存的地址,可以是变量的地 址、字符串的首地址,每个内存地址之间用逗号分隔。 怎么知道变量的地址?利用地址运算符求出变量的地址 格式 &变量名 例 int a,b ; 则 &a,&b 表示取a,b变量的地址 操作 将键盘键入的数据按指定类型格式存入指定内存存储单元
4最简单的C程序设计
while()~
do~while() continue break
switch
goto
return
(2)函数调用语句
printf("I am your teacher! ");
(3)表达式语句
a=3;
(4)空语句
;
(5)复合语句,用{ }括起来的一些语句
{z=x+y;
t=z/100;
printf("%f ",t); 2
12
>f=%%+15.4f\n",f);
格式化输出小结 格式化输出时,通过格式控制字符控制的格式要素主要有: ➢数据类型及其长度,比如用%d输出int型数据,用%ld 输出long型数据,用%f输出double型数据,用%lf输出 long double型数据。 ➢输出数据所占的宽度(域宽),比如,%4d表示输出 至少占4格。 ➢输出数据的精度,比如,%4.2f表示输出2位小数, %3s表示要输出字符串的前3个字符,%6.4u表示至少 要输出4位数。 ➢对齐特性,比如%-16d表示输出的数据左对齐。缺省 情况下,输出将右对齐。 ➢数制形式,比如,%x要求以16进制形式输出整数。
5
5-格式输入与输出
printf 函数(格式输出函数) 格式:printf(“格式控制字符串”,表达式1,表达式2,…,表达
式n); 功能:按照“格式控制字符串”的要求,将表达式1,表达式2,…,
表达式n的值显示在屏幕上。
格式控制字符串中包含有两类字符: 常规字符:包括可显示字符和用转义字符表示的字符。原样输出
21
根据以上分析,这个求三角形面积的程序应这样设计: 定义5个变量,分别用来存放a,b,c,s和面积的值。 首先要调用scanf函数由用户输入边长a、b、c的值。 根据公式先计算s的值,再计算三角形面积。 最后调用printf函数输出面积的值。 sqrt是标准库函数,它的原型位于math.h文件中,因此,
e 第四章 最简单的C程序设计1
4.1 C语句概述
C程序:包含N个原程序文件; 原程序文件:预处理命令、全局变量声名、
N个函数; 函数: 函数首部、函数体; 函数体: 局部变量、执行语句
C语句的分类
(1) 控制语句 if()~else~ for()~ while()~ do~while() continue break switch goto return
(9) g格式符 用来输出实数,取e,f宽度小者,舍去无效的
零.
m: 最小宽度
n: 小数的位数, 截取的字符个数
说明:
(1) X、E、G外,其它都是小写 (2)格式控制中包含转义字符 (3)格式字符:%d、o、x、u、c、s、f、
e、g,可以插入其它字符 (4)%%:输出%
4.5.2 scanf函数
5.3s\n”,“CHINA”,“CHINA”,“CHINA”, “CHINA”); }
7 f格式符
用来输出实数,以小数形式输出
%f 整数部分全部输出,小数部分输出6位 %m.nf 指定输出的数据共占m列,其中有n位小数. %-m.nf 输出的数值向左端靠,右端补空. 例4.8 输出实数时指定小数的位数 main() {float f=123.456; printf(“%f %10f %10.2f %.2f %-
1、一般形式 scanf(格式控制,地址表列) 地址表列:有若干个地址组成的表列. 例4.9 用scanf函数输入数据 main() {int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%d\n”,a,b,c); }
输入数据:
(1)两个数据之间用一个或多个空格分开; (2)用回车键分开 (3)跳格键tab
第04章 最简单的C程序设计
4.5 格式输入输出 4.5.1 printf 函数(格式输出函数) 格式: int printf( const char *format [, argument]... ); 功能: 按指定格式向终端输出若干个任意类型的数据。
函数名 printf("a= %d b= %d", a,b); 格式说明 输出表列
输入三角形的三条边a,bc 根据公式: s=(a+b+c)/2和√s(s-a)(s-b)(s-c) 计算三角形面积area 输出三角形的面积
3. 源程序代码: #include <stdio.h> #include <math.h> void main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f,s=7.2f\n", a,b,c,s); printf("area=%7.2f\n", area); } 4. 运行结果: 3,4,6↙ a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33
4.3 数据输入输出的概念及在C语言中的实现 ⑴ C语言本身不提供输入输出语句,输入和输出操作 是通过 “标准输入输出函数”实现, putchar(输出字符)、getchar(输入字符)、 printf(格式输出) 、scanf(格式输入)、 puts(输出字符串) 、gets(输入字符串)等。 ⑵ 通过预编译命令来使用标准输入输出函数 #include <stdio.h> //在C函数库头文件目录中找 或 #include “stdio.h” //先在用户当前目录中找,然后 按标准方式找
4.最简单的C程序设计
赋值语句是程序中使用最多的语பைடு நூலகம்之一。
返回
在赋值语句的使用中需要注意以下几点:
由于在赋值符“=”右边的表达式也可以又是 一个赋值表达式,因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。 其展开之后的一般形式为: 变量=变量=…=表达式; 例如: a=b=c=d=e=5; 结果是a、b、c、d、e的值均为5。
其一般形式为:putchar(字符变量)
返回
例如: putchar('A'); (输出大写字母A) putchar(x); (输出字符变量x的值) putchar(„\101‟); (也是输出字符A) putchar(„\n‟); (换行) 使用本函数前必须要用文件包含命令: #include<stdio.h> 或 #include “stdio.h”
123.456001 123.456001 123.46 123.46 123.46
(9)g格式符,用来输出实数,它根据数值的 大小,自动选f格式或e格式(选择输出时 占宽度较小的一种),且不输出无意义 的0。 f=123.456 printf(“%f %e %g”,f,f,f); 结果:
考虑到printf和scanf函数使用频繁,系统 允许在使用这两个函数时可不加: #include < stdio.h > 或 #include ”stdio.h”
4.4
字符数据的输入输出
4.4.1 putchar 函数(字符输出函数)
putchar 函数是字符输出函数,其功能是在 显示器上输出单个字符。
注意在变量说明中给变量赋初值和赋值语句 的区别。
给变量赋初值是变量说明的一部分,赋初值后的变量 与其后的其它同类变量之间仍必须用逗号间隔,而赋 值语句则必须用分号结尾。
语言学习_最简单的C程序设计----顺序程序设计
2. scanf()函数: scanf(格式控制,地址列表 函数: 格式控制, 函数 格式控制 地址列表)
格式控制字符串的作用与printf函数相同,但不能显示非格式字符串, 格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也 printf函数相同 就是不能显示提示字符串. 就是不能显示提示字符串. 地址表列中给出各变量的地址. 地址是由地址运算符" 地址表列中给出各变量的地址. 地址是由地址运算符"&"后跟变量名组 成的(&a &b). (&a, 成的(&a,&b).
A=10;B=20; printf("\nA=%d and B=%d, \'OK\'.", A,B); A=10 and B=20, 'OK'.
main() { int a=88,b=89; printf("%d %d\n",a,b); printf("%d,%d\n",a,b); printf("%c,%c\n",a,b); printf("a=%d,b=%d",a,b); } 本例中四次输出了a,b的值, 本例中四次输出了 的值,但由于格式控制 的值 串不同,输出的结果也不相同. 串不同,输出的结果也不相同.
file1.c #include " file2.c" A
包含
file2.c B
file1.c B A
4.4 字符数据的输入输出
℡getchar()函数得到的字符代码值可以不赋予任何变量 如: 函数得到的字符代码值可以不赋予任何变量,如 函数得到的字符代码值可以不赋予任何变量 getchar(); ℡getchar()的返回值可以作为函数的参数,表达式的一部分. 的返回值可以作为函数的参数, 的返回值可以作为函数的参数 表达式的一部分. 如:putchar(getchar()); c=getchar()+23; ℡getchar()可以接受回车等控制字符. 可以接受回车等控制字符. 可以接受回车等控制字符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出结果: 输出结果:8=8,a=5,a+8=13 ,a=5,a+8
“%” 后的字符称格式字符,不同格式字符对应不同的数据类型。 % 后的字符称格式字符,不同格式字符对应不同的数据类型。
d格式符:按整数格式输出 格式符: 几种用法: 几种用法: 不指定宽度, %d 不指定宽度,按实际宽度输出 %md 按指定宽度输出,m为宽度 按指定宽度输出, %ld 用于输出长整型数
函数(格式输入) scanf 函数 printf函数相反 函数相反。 与printf函数相反。 用于输入若干任意类型的数据。 用于输入若干任意类型的数据。 scanf(“%d%d%d”,&a,&b,&c); scanf( % ,&a,&b,&c) 格式控制 地址列表
scanf( % scanf(“%d%d%d”,&a,&b,&c); ,&a,&b,&c) 执行此函数时, 执行此函数时 , 等待从键盘输入三个整 数给a,b,c 数给a,b,c 若从键盘输入 3 5 8 则系统即从键盘缓冲区取出这三个数分 别赋给a,b,c 别赋给a,b,c 注意与printf的区别, printf的区别 注意与printf的区别,注意格式的匹配
c格式符:用于输出字符 格式符:
eg4-5-4.c
c=’A ; char c= A’; printf(“c= c,% ,c, ) c=% ,c,’B printf( c=%c,%c”,c, B’); 输出结果: 输出结果:c=A,B
输出对象既可以是字符变量、字符常量,还可以是整型表达式。 输出对象既可以是字符变量、字符常量,还可以是整型表达式。
printf函数 格式输出函数) 函数( 2. printf函数(格式输出函数) 任意类型、任意格式、任意个数。 任意类型、任意格式、任意个数。 例如: 例如: eg4-5-1.c a=5 int a=5; printf( printf("8=%d,a=%d,a+8=%d\n",8,a,a+8); )
输出结果: 输出结果: a=123,b= 456,c= ,c=65432 a=123,b= 456,c=65432 123
例eg4-5-3.c main() {long a=134579; printf (a=%d\n”, a); } 结果:a=3507 main() {long a=134579; printf (a=%ld\n”,a); } 结果:a=134579 main()
x=5 x=5; y=2*x*x+3*x-1; y=2*x*x+3*x} 该程序语法上完整,但还缺少输出。 该程序语法上完整,但还缺少输出。
■数据的输出 用输出函数实现,其中的两种输出函数: 用输出函数实现,其中的两种输出函数: 字符输出函数) 1.putchar 函数 (字符输出函数) 用于输出一个字符。 用于输出一个字符。 如: putchar (‘a’); putchar (100); char c=’b’; putchar (c);
例: eg4-5-6.c
main( ) { printf (“%3s,%7.2s,%.4s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA”, “CHINA” ); } 运行结果: CHINA, _ _ _ _ _CH, CHIN,CHI_ _
f格式符:按小数形式输出实数 格式符: %f 由系统指定宽度( 位小数) 由系统指定宽度(6位小数)
输出转义字符
• 参见 参见P48有关字符常量的内容 有关字符常量的内容 • eg4-4-2.c putchar(‘\101’); putchar(‘\’‘); putchar(‘\015’); //输出字母 输出字母A 输出字母 //输出单撇号字符’ 输出单撇号字符’ 输出单撇号字符 //回车不换行 回车不换行
前面的欧姆定律:eg4-5-UI-2.c main() { U,R1,R2,R3 int U,R1,R2,R3; float I; scanf(“% ,&U,&R1 scanf( %d%d%d%d”,&U,&R1,&R2,&R3); ,&U,&R ,&R2,&R3 I=(float)U/R1+(float)U/R2+(float)U/R3 I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“\ I=% ,I) ,I); printf( \n I=%f”,I); }
考虑通用: 考虑通用 main() { U,R1,R2,R3 int U,R1,R2,R3; float I; U,R1,R2,R3 输入 U,R1,R2,R3 I=(float)U/R1+(float)U/R2+(float)U/R3 I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“\ I=% ,I) ,I); printf( \n I=%f”,I); }
■数据的输入 getchar函数 字符输入) 函数( getchar函数(字符输入) stdio. #include “stdio.h” stdio main() { char c; c=getchar(); 等待键盘输入 c=getchar(); putchar(c); putchar(c); }//eg4 eg4 }//eg4-4-3.c~ eg4-4-5.c
例:输出单词Boy的完整程序: 输出单词Boy的完整程序: Boy的完整程序 #include “stdio.h” 注意该语句的作用 main() { char a, b, c; a=’B’; b=’o’; c=’y’; putchar (a); putchar (b); putchar (c); putchar (‘\n’); } eg4-4-1.c
如: scanf(“% ,&a,&b,&c); scanf( %3d%2d%4d”,&a,&b,&c); ,&a,&b,&c) 若从键盘输入123456789 若从键盘输入123456789 a=123,b=45,c=6789 123,b=45,c= a=123,b=45,c=6789 若想使a=12,b= ,c=100 a=12,b=5 若想使a=12,b=5,c=100 则键盘输入应为: 则键盘输入应为: 12 5 100 指定宽度, 方便的输入格式一般不 指定宽度, eg4 如:eg4-5-9.c scanf(“% ,&a,&b,&c); scanf( %d%d%d”,&a,&b,&c); ,&a,&b,&c)
正确的程序: 正确的程序:eg4-5-UI-1.c main() { U=220,R1 30,R 60,R 45; 220,R ,R2 ,R3 int U=220,R1=30,R2=60,R3=45; float I; I=(float)U/R1 (float)U/R2 (float)U/R3 I=(float)U/R1+(float)U/R2+(float)U/R3; (float)U/R U/R U/R printf(“I= I=% ,I); printf( I=%f\n”,I); ,I) }
在键盘输入时, 用分隔符把每个数据隔开, 在键盘输入时 , 用分隔符把每个数据隔开 , 标准的分隔符是空格。 标准的分隔符是空格。 如:123 150 23 若想用逗号作分隔符, eg4 10. 若想用逗号作分隔符,则: eg4-5-10.c scanf(“% ,&a,&b,&c); scanf( %d,%d,%d”,&a,&b,&c); ,&a,&b,&c) eg4 不 要 随 便 使 用 普 通 字 符 , 如 使 用 : eg4-511.c 11. scanf(“a= d,b=%d,c=% ,&a,&b,&c) a=% scanf( a=%d,b=%d,c=%d”,&a,&b,&c) 对应数据输入: 对应数据输入: a=123,b=150,c=23 123,b=150,c= a=123,b=150,c=23
s格式符:用于输出字符串 格式符: %s %-ms %ms 不指定宽度 指定宽度, 指定宽度,左靠齐 指定宽度, 指定宽度,右靠齐 右靠齐 指定宽度m 只取左端n个字符, %-m.ns 指定宽度m,只取左端n个字符, 左靠齐
指定宽度m 只取左端n个字符, %m.ns 指定宽度m,只取左端n个字符,
运行结果:123.456001, 123.456001, _ _ _ _123.46, 123.46, 123.46_ _ _ _ //P79:单精度有效数字7位(前7位);双精度有效数字16位(小数6位)
程序设计例: 程序设计例: 编写程序计算如图中的电流I 编写程序计算如图中的电流I.
I
U
R1
长整形的输出
(134579)10=(406663)8
0000000000000010
0000110110110011
(3507)10 3507
{ long a=134579; printf (“a=%10l d\n”, a); } 结果:a=_ _ _ _134579
注意: 注意:格式字符的类 型要与对应的输出对 象的类型一致。 象的类型一致。
R2
R3
U=220,R1 30,R 60,R 220,R ,R2 ,R3 假设 U=220,R1=30,R2=60,R3=45
程序设计: 程序设计: main() { 已知:U=220、R1=30、R2=60、R3 已知: 220、 30、 60、 =45 求解: 求解:I int U=220,R1=30,R2=60,R3=45; float I; 算法描述: I=U/R1+U/R2+U/R3 算法描述: I=U/R1+U/R2+U/R3; I=U/R1+U/R2+U/R3; printf(“\ I=%f”,I); printf( \n I=%f ,f 指定宽度m,小数位数n,右靠齐 %-m.nf 指定宽度m,小数位数n,左靠齐 指定宽度m 小数位数n 注意:宽度包括符号和小数点 注意:宽度包括符号和小数点。