【C语言基础01】算法的组成要素、C语句概述、数据的输入输出等

目录

 

3.1 算法的组成要素

3.1.2 算法的表示方法

3.1.3 自顶向下、逐步细化的设计过程

3.2 C语句概述

3.2.1 控制语句

3.2.2 表达式语句

3.3 数据的输入和输出

3.3.1 数据的输出函数

3.3.2 刷新输出

3.3.3 scanf函数

3.4 getchar函数与putchar函数


3.1 算法的组成要素

1. 算法的特征

     有穷性,确定性,有0个或多个输入,有1个或多个输出,有效性;

     算法的组成要素=操作+结构控制。

     三种基本结构=顺序结构+选择结构+循环结构

3.1.2 算法的表示方法

自然语言表示算法;流程图表示算法,N-S流程图表示算法,伪代码表示算法

1. 流程图:起止框(开始/结束)+处理框(处理步骤)+判断框(判断条件,一入两出)+输出输入框+流程线

     整个算法的结构是由上而下地将各个基本结构顺序排列起来

     特点:只有一个入口,不能从结构外随意转入结构中某点;

     只有一个出口,不能从结构内某位置随意转出(跳出);

     结构中每一部分都有机会被执行到(无死语句);

     结构内部不存在死循环

2. N-S流程图:

     当型循环:当条件P成立是,反复执行A操作,直到P条件不成立才结束。先做判断,再决定是否执行循环体,在条件P一次都不满足时,循环体A一次都不执行。

     直到型循环:当条件P不成立时,反复执行A操作,直到P条件成立才结束。先执行循环体,再判断条件P,循环体至少被执行一次。

3.1.3 自顶向下、逐步细化的设计过程

   自顶向下、逐步细化的设计过程,包括如下方面:

    将一个复杂的问题的解法分解和细化由若干个模块组成的层次结构;将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句和某种机器指令。

    优点:提高设计效率;层次结构清晰。

    例:在3个数中取最大数算法。

    例:百钱百鸡的问题

3.2 C语句概述

    C语句分为控制语句、表达式语句、复合语句

3.2.1 控制语句

    9种控制语句,用于控制程序流程。

    条件语句:if-else

    循环语句:for、while、do-while、

    结束本次循环语句:continue

    终止执行switch或循环语句:break

    多分支选择语句:switch

    转向语句:goto

    函数返回语句:return

3.2.2 表达式语句

    最后加上一个;所组成的语句。

    表达式与表达式语句的区别:

    常见的语句形式:

    赋值语句、函数调用语句、空语句、复合语句

3.3 数据的输入和输出

3.3.1 数据的输出函数

    数据的输出函数:

    格式输出函数基本形式:

    ① 原样输出格式

    printf("要输出的字符串");

    ② 输出变量的值

    按格式控制字符串输出表列的值,调用的一般形式,

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

    输出表列:输出的变量、常量、表达式等,个数是1个到若干个;前后须匹配。

 

    格式控制字符串:

    非格式字符:原样输出

    格式说明符:由%和转换字符组成,如%d、%f等,将输出的数据转换为指定的格式输出。

    1)%d格式字符:

    ① %d:整数的实际位数输出一个整数

    ② %md:在m列的位置上以数据右对齐的方式输出一个整数,m大于整数的宽度时,多余的位数空格留在数据前面,小于整数的宽度时m不起作用

    ③ %-md:左对齐输出一个整数,m大于整数的宽度时多余位数的空格留在数据后面,m小于整数的宽度时m不起作用

    ④ %0md:左对齐输出一个整数,m大于整数的宽度时多余的位数在数据前面补0,m小于整数的宽度时m不起作用

    2)%o格式字符:八进制整型数据格式

    3)%x格式字符:十六进制整数型数据格式

    4)%u格式字符:十进制无符号整数数据格式

    5)%c格式字符:字符型数据格式

    6)%s格式字符:字符串数据格式

    ① %s:原样输出

    ② %ms:按给定的宽度m输出;小于m,则在左侧用空格补足(右对齐);大于m则输出全部

    ③ %-ms:给定宽度m输出;小于m,则在右侧用空格补足(左对齐输出);大于m则输出全部

    ④ %m.ns:在m列的位置上输出一个字符串的前n个字符;

    若m>n,则在左侧用空格补足(右对齐输出);

    若m<n;则输出n个字符;

    若n大于字符串长度,则输出整个字符串

    ⑤ %-m.ns:在m列的位置上输出一个字符串的前n个字符;

    若m>n,则在右侧用空格补足(左对齐输出);

    若m<n,则输出n个字符;

    若n大于字符串长度,则输出整个字符串

    7)%f格式字符:实型数据(单精度和双精度)格式

    ① %f:系统默认输出,整数全部输出,小数输出6位;单精度7位有效数字,双精度16位有效数字

    ② %m.nf:在m列的位置上输出一个实数,保留n位小数,系统自动对数据进行四舍五入处理。

    m>实数总宽度时,多余的位数空格留在数据前面

    m<实数总宽度时,m不起作用,系统正确输出

    ③ %-m.nf:在m列的位置上输出一个实数,保留n位小数,系统自动对数据进行四舍五入。

    m>实数总宽度时,多余的位数空格保留在数据后面;

    m<实数总宽度时,m不起作用,系统正确输出该数

    例:

    printf("%25f\n",x); 右对齐;

    printf("%.2f\n",x); 两位小数,左对齐

    8)%e格式字符:实型数据指数形式格式

    ① %e:按规范的指数形式输出,即小数点前1位非0数字,小数点后6位小数,指数部分占5位,再加上小数点共13位,如1.123456e+007

    ② %m.ne:给定宽度m输出,包括n位小数和5位指数;

    数据长度小于指定宽度m,左侧用空格补足

    数据长度大于指定宽度m,实际长度输出

    ③ %-m.ne:给定宽度m输出,包括n位小数和5位指数

    数据长度小于指定宽度,右侧用空格补足;

    数据长度大于指定宽度m,实际输出

    9)%g格式字符:以实型数形式输出,根据数值大小自动选用%f或%e格式以来输出宽段较小,且不输出无意义的零

3.3.2 刷新输出

    printf()语句将输出传递给一个被称为缓冲区的中介储存区域,缓冲区中的内容再不断地被传递给屏幕。

    ① 缓冲区满

    ② 遇到换行符\n

    ③ 需要输入的时候

3.3.3 scanf函数

    用于输入函数。按照格式参数的要求,从终端上把数据传送到地址参数所指定的内存空间中。

    scanf("格式控制参数",地址1,地址2);

    1.地址参数

    通过对变量名“求地址”运算得到,地址的运算符为&,得到的是符号地址

    &a、&b为两个符号地址

    &a给出的是变量a四字节空间的首地址;&b给出的是变量b四字节空间的首地址

    2.格式控制参数

    scanf函数的个数参数有两种成分:格式说明项、输入分隔符

    格式说明项:

    ① 格式字符与printf函数中的使用方式相同,输入数据分为整型、字符型、实型

    ② 整型与实型可再加长度修正说明符,短整型h,长整型l

    ③ m用以指定输入数据的宽度

    输入分隔符:

    ① 根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,认定这一数据项结束。

    ② 根据格式项中指定的域宽分隔出数据项

    ③ 用分隔符。空格、跳空格('\t')、换行符('\n')

3. 抑制字符*:作用是在按格式说明读入数据后不送给任何变量,即虚读

    1.scanf的停止与返回

    停止情况:

    格式参数中的格式项用完-正常结束;

    发生格式项与输入域不匹配时-非正常结束

    2.scanf函数与输入缓冲区

    输入数据时,实际上并不是输入完一个数据项就被读取给一个变量,而是在键入一行字符并按回车键之后才被输入。先放在缓冲区中,再按scanf函数格式的要求从缓冲区中读数据。

3.4 getchar函数与putchar函数

    只对字符数据进行输入输出操作的函数putchar和getchar函数,该函数包含在stdio.h中。

    1.字符输出函数putchar()

    一般调用格式putchar(ch);

    ch为字符型变量或整型变量

    功能:将变量ch的值输出到终端(显示器)设备上。

    2.字符输入函数getchar()

    调用格式:getchar();

    该函数为无参函数,功能:从终端(或指定输入设备)获取一个输入字符。

    执行getchar()函数,虽然是读入一个字符,但并不是从键盘读,而是输入完后按回车键,将该行的字符输入缓冲区中。

    例:putchar(getchar()):读入一个字符,将它输出到终端

    处理文字数据:输入若干字符,只要输入的字符不是#就执行指定的操作。

    if((ch=getchar())!'#')

    或

    while((ch=getchar())!='#')

    {…}

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李秋天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值