C语言第五天笔记

最简单的C程序设计 ——顺序程序设计

一个程序应包含两部分内容

著名计算机科学家沃思提出一个公式:   数据结构 + 算法 = 程序

对数据的描述:数据结构(data structure)

对操作步骤的描述:算法(algorithm)

广义地说,为解决一个问题而采取的方法和有限的步骤,就称为“算法”。

算法的特征

1:有穷性;包含有限的操作步骤,不能无限制地执行下去;

 2:可行性;算法中的每一条指令必须是切实可执行的;

 3:确定性;算法中的每一条指令必须有确切的含义,不能产生歧义:

美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号

算法描述-流程图

对于计算  s=1+2+3+4+5+6+7+8+9+10  

用流程图表示为:

程序的三种基本结构

⑴  顺序结构

各操作是按先后顺序执行的。是最简单的一种基本结构。

其中A和B两个框是顺序执行的。即在完成A框所指定的操作后,必然接着执行B框所指定的操作。

数据输入输出的概念及在C语言中的实现

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

  从计算机向外部设备输送数据称为输出。通常输出设备包括:显示器、打印机等;

从外部设备向计算机输送数据称为输入。通常输入设备包括:键盘、鼠标、扫描仪等。

在C语言中,输入与输出是用标准库函数中的输入、输出函数实现的

库函数已编译成目标文件,在链接时与编译源程序得到的目标文件(.obj)相连接,生成可执行程序。

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

用简单的printf函数输出数据

1. printf函数的一般格式

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

⑴ 格式控制 ,用一对双引号括起来,包括两种信息:    

 ① 格式说明  由“%”和特定字符组成,如:%d、%c、%f等,是格式说明符,用于说明输出项目所采用的格式;      

② 普通字符  作为说明性的文字、符号等,照原样显示出来。

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

⑶ 例如:        printf("a=%d  b=%f\n",a,b) ;

 基本的格式字符

 %d    按十进制整型数据的实际长度输出。

 %c   仅输出一个字符。

 %s   printf("%s\n", "CHINA"); 输出的结果是字符串 CHINA

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

%e 或%E   以指数形式输出一个实数(含单双精度数)。 小数点前仅1位非0数字,并输出6位小数。

用简单的scanf函数输入数据

1. scanf函数的一般格式

scanf(“格式控制”,地址表列);

作用

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

说明

“格式控制”的含义同printf函数,说明输入的数据应使用的格式。        

“地址表列”是由若干个地址组成的,可以是变量的地址或字符串的首地址。&是取地址运算符,用于取出变量的地址。        

与格式输出一样,在格式控制中,用于说明输入数据格式的格式说明符总是以%开头,后面紧跟的是具体的格式。

 用scanf函数输入数据。

说明

⑴ scanf函数中的“格式控制”后面应当是变量的地址,由取地址运算符和变量名共同组成,不能仅是变量名:       scanf("%f%d", &a,&b);     

⑵ 如果“格式控制”中除了格式说明以外还有其它字符,则在输入数据时必须在对应位置输入与之相同的字符:       scanf("%d,%d", &a,&b);      从键盘输入时必须输逗号:  3,4 ↲

⑶ 用%c格式输入字符时,空格和转义字符都作为有效字符输入,应注意:      scanf("%c%c%c", &a,&b,&c);      只有输入:xyz ↲      才能使a得到x,b得到y,c得到z

说明

⑷ 在输入数值型数据时,遇到空格、回车、Tab键或遇非法输入,则认为该数据结束:       scanf("%d%c%f", &a,&b,&c);

若输入:1234a123o.26  

                       a=(1234)    b=(a)  c=(123)

⑸ 对于unsigned型变量所需的数据,可以用%u或%d格式输入。

较复杂的输入输出格式控制

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

输出数据格式控制  

1 整型格式说明符

十进制形式----------%d 或 %md     用于基本整型int

                              %ld 或 %mld   用于长整型long

                               %u 或 %mu     用于无符号基本整型unsigned

                               %lu 或 %mlu   用于无符号长整型unsigned

八进制形式-----------%o 或 %mo       用于基本整型int

                                 %lo 或 %mlo     用于长整型long

十六进制形式---------%x 或 %mx       用于基本整型int

                                 %lx 或 %mlx      用于长整型long

可见:用于输入与输出整型数据的格式说明符是完全一样的。      

m表示输入数据时的宽度(即列数)。            

与输出情形一样,对于八进制形式与十六进制形式的输入格式,主要用于输入无符号整型的数据。

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

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

2 字符型格式说明符

字符char型----------- %mc  输出的字符占m列,如: printf(“%3c”,’a’); 实际输出为: a

字符串-----------------%ms  输出的字符串占m列。若串长>m,全部输出;若串长<m,左面补空格。 %-ms  输出的字符串长<m,右面补空格 %-m.ns  只取字符串前n个字符。若n<m,右面补空格;若n>m,m自动取n值。

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

 在输出前,系统会自动将该整数作为ASCII码转换成相应的字符;反之,一个字符也可以输出成一个整数。

 字符串的输出。

3 实型格式说明符

十进制数形式 %m.nf 或 %-m.nf

指数形式%m.ne 或 %-m.ne

%g或%G形式根据数值的大小,自动选%f 或 %e中宽度较短的一种格式,不输出无意义的0。

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

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

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

 输出实数时,指定小数位数。

求3个圆的周长,输出结果时上下按小数点对齐,取两位小数。

设有如下C程序:

 显然,这个程序中的 第二个格式输出语句输出 的结果是错误的,这是因 为在第二个格式输出语句 中,格式说明符%d是基本 整型格式说明符,而输出 项目是双精度型的数据, 它们是不匹配的。

实型格式说明符

单精度实型 %f 或 %e

双精度实型 %lf

与输出不同,输入时无论是单精度还是双精度实型,都不能用m.n来指定输出的宽度和小数点后的位数;

可以指定输入数据所占的列数,系统自动按它截取所需数据,如:scanf(“%3d%3d”,&a,&b); 当输入1234567时,a得到123,b得到456,多余的7无用;

若在%号后有一个“*”和一个数字,表示跳过它指定的列数,如:scanf(“%2d%*3d%3d”,&a,&b);当输入12345678时,a得到12, %*3d表示读入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=%f,d=%f”,&a,&b,&c,&d);  

   (即格式说明符中没有宽度说明,但各格式说明符之间有其它字符。)    

  输入数据的形式应为   a=12,b=78,c=12.5,d=7.6↲    

 (即在输入的两个数据之间同时要输入这些非格式说明符的字符。)

在用于输入的实型格式说明符中不能用m.n来指定输入的宽度和小数  

    点后的位数(这是与输出的不同之处)。          

  例如:    scanf(“%7.2f”,&a);× 此用法是错误的

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

如果输入缓冲区中已经有数据(上一个输入函数剩下的),则依次按照“格式控制”中的格式说明符从输入缓冲区中取出数据转换成计算机中的表示形式(二进制),最后存放到内存地址表中指出的对应地址中。

顺序结构程序设计举例

程序中所有语句都是按自上而下的顺序执行的,不发生跳转

 输入三角形的三边长,求三角形的面积。

分析:

 ① 设输入的三边能构成三角形;

② 求三角形面积的公式为

据此编写程序如下:

本章小结

一个具有良好结构的程序均是由以下三种基本结构组成的:

C语言中语句使计算机执行特定的操作,所以称执行语句;

●  对变量的定义是为了在编译时给变量指定类型、分配空间;

●   “表达式+分号”构成语句。“赋值表达式+分号”构成赋值语句;  

●   赋值时应注意赋值号两边的类型应该兼容,以免丢失数据;

●   数据的输入输出靠调用函数实现,熟练掌握scanf和printf函数;

●  格式控制、格式说明%d、格式字符d,f,u,c,s,i,e,g、格式修饰符%3d, %7.2f, %-10.3f。

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值