C语言程序设计-顺序结构、分支语句、循环结构、赋值语句、格式输入输出函数(scanf、printf)、字符输入输出函数(getchar、putchar)

目录

第二章 顺序结构程序设计

2.1 结构化程序设计的基本结构

2.1.1 语句的概念

2.1.2 3种基本结构

2.2 赋值语句      

2.3 输入输出语句

2.3.1 格式输入输出函数

2.3.2 字符输入输出函数

传送门-上一章习题:C语言-基础知识练习习题1

传送门-上一节:C语言程序设计-不带参数的主函数、赋值运算符、数据类型

传送门-本章习题:C语言-基础知识练习习题2

传送门-下一节:C语言程序设计-关系运算符和关系表达式、逻辑运算符和逻辑表达式


第二章 顺序结构程序设计

2.1 结构化程序设计的基本结构

2.1.1 语句的概念

        C语言中的语句是向计算机系统发出的操作指令。语句应该出现在函数体内定义部分之后。

【例 2.1】编写一个语句示例的程序。

#include<stdio.h>
int main(void)
{
    int a=0,i=5;
    a=i+3;  //该语句在赋值表达式a=i+3后面加分号而得
    i=i+1,a=a+i;    //该语句在逗号表达式i=i+1,a=a+i后面加分号而得
    i+1;    //该语句在算术表达式i+1后面加分号而得
    printf("a=%d,i=%d\n",a,i);  //该语句在输出函数后面加分号而得
    return 0;
}

运行结果:

a=14,i=6

程序说明:

(1)本程序中的所有语句都是在表达式后面加上分号而得的,这种语句称为表达式语句。程序中使用最多的语句是赋值语句(将在2.2节介绍)和输入输出语句(将在2.3节介绍)。

(2)不是任何表达式语句都在C程序中有作用,例如,语句“i+1;”虽然没有语法错误,但在程序中毫无实际意义,编写程序时应避免使用这样的语句。

        C语言中,还有其它类型语句,例如,控制类语句、空语句、复合语句,这些内容将在后续章节中介绍。

2.1.2 3种基本结构

        用计算机解题,要按确定的步骤进行,这些步骤的执行则要通过程序的控制结构来实现。计算机语言提供3种基本控制结构--顺序结构分支结构循环结构。由于使用这3种基本结构可以解决任何复杂问题,而且编写出来的程序清晰可读又便于理解,所以人们提倡使用这3种结构编写程序,并称这样的程序设计为结构化程序设计。下面将依次介绍这3种基本结构。

        在程序设计中,使用goto语句也可以控制某些流程,但这样的程序层次不清、可读性差,一般不提倡使用。

1、顺序结构

        前面介绍的程序都是按照语句在程序中出现的顺序逐条执行,称这种程序结构为顺序结构。顺序结构中的每一条语句都被执行一次,而且只能被执行一次。顺序结构是程序设计中最简单的一种结构。

【例 2.2】 顺序结构程序示例。从键盘输入3个实型数并分别存入变量a、b和c中,求它们的平均值。

#include<stdio.h>
int main(void)
{
    double a=0,b=0,c=0,ave=0;
    printf("Input a,b,c:");
    scanf("%lf%lf%lf",&a,&b,&c);    //从键盘输入3个实型数分别赋给a、b、c
    printf("a=%lf,b=%lf,c=%lf\n",a,b,c);
    ave=(a+b+c)/3;
    printf("ave=%lf\n",ave);
    return 0;
}

运行结果:

Input a,b,c:1.5 2.3 6.7
a=1.500000,b=2.300000,c=6.700000
ave=3.500000

程序说明:

(1)语句"scanf("%lf%lf%lf",&a,&b,&c);"的作用是:从键盘输入3个实型数分别赋值给a,b,c,其具体使用方法将在2.3节中介绍。

(2)程序的执行过程是从函数体内的第一条语句开始,由上到下按顺序逐条执行,为便于理解,其执行过程可用流程图或N-S图表示,如图2.1所示。

        图2.1(a)中给出的流程图中有开始和结束框、输入输出框以及处理框,各框之间的流程用流程线和箭头表示。图2.1(b)是N-S图,它只适合于结构化程序设计。在编写较大程序时,应根据问题的分析情况,先精心设计流程图,然后再严格按流程图所表示的算法编写程序。

图2.1 例2.2程序的执行过程

2、分支语句

        流程不是按照语句在程序中出现的先后顺序逐条执行,而是根据判断项的值有条件地选择部分语句执行,这样的程序结构称为分支结构(或选择结构)。分支结构将在第3节详细介绍。

3、循环结构

        根据需要反复执行程序中的某些语句,称这样的循环结构为循环结构。循环结构将在第4章中详细介绍。

  

2.2 赋值语句      

        在赋值表达式的尾部加一个分号构成赋值语句,例如,a=i+3是赋值表达式,而“a=i+3;”是赋值语句。赋值语句是C语言中最常用的一种语句。

【例 2.3】 编写交换x和y中值的程序。

#include<stdio.h>
int main(void)
{
    int x=3,y=5,t=0;
    printf("x=%d,y=%d\n",x,y);  //输出交换前的值
    t=x;    //将x中的值暂存到t中
    x=y;    //将y中的值存放到x
    y=t;    //将x中原来值存放到y
    printf("x=%d,y=%d\n",x,y);  //输出交换后的值
    return 0;
}

运行结果:

x=3,y=5
x=5,y=3

【讨论题 2.1】起交换作用的3条语句“t=x; x=y; y=t;”能否用“x=y; y=x;”两条语句替代?

【例2.4】输入一个3位数,计算其每位数字之和。

#include<stdio.h>
int main(void)
{
    int n=0,a=0,b=0,c=0,sum=0;  //因进行整除运算,n需定义成整型。
    printf("Input n:");
    scanf("%d",&n); //从键盘输入一个整型数赋给n
    a=n/100;    //求百位数
    b=n/10-a*10;    //求十位数,等价于b=(n/10)%10;
    c=n%10;     //求个位数
    sum=a+b+c;
    printf("n=%d,sum=%d\n",n,sum);
    return 0;
}

运行结果:

Input n:678
n=678,sum=21

以上两个例题涉及交换两个数据和求某数各位数字的算法,这些算法在程序设计中常被使用。需要注意的是,解决某一问题时其算法并不唯一,但有些算法效率高,易于理解,而有些算法则不然。所以接到一项较大任务后,不要急于编程序,应遵循分析问题--设计算法--画流程图的顺序做好准备工作,然后开始编制程序。程序设计的一般过程包括问题分析、算法设计、流程图设计、程序编制、程序测试、调试、文档编制等步骤。由于这里我们重点介绍C语言程序设计的方法,所举的例题程序较短,算法也简单,因此没有严格按照上述步骤执行。

2.3 输入输出语句

        在C语言中,数据的输入输出语句是在输入输出函数后面加上分号而得的。C语言提供了丰富的输入输出函数,下面仅介绍其中几个常用的输入输出函数。

2.3.1 格式输入输出函数

【例 2.5】编写使用格式输入输出函数的程序。

#include<stdio.h>
int main(void)
{
    int a=0,b=0,sum=0;
    printf("Input a and b:");
    scanf("%d%d",&a,&b);    //从键盘输入两个数,分别放入a和b中
    sum=a+b;
    printf("%d+%d=%d\n",a,b,sum);
    return 0;
}

运行结果:

Input a and b:3 5
3+5=8

程序说明:

(1)scanf("%d%d",&a,&b)是格式输入函数,函数尾部加上分号得到输入语句。该语句中%d%d是两个格式说明符(格式说明由%开头),要求从键盘输入两个十进制的整数,输入项“&a,&b”的作用是将所输入的两个数分别存入变量a和b中。需要注意的是,a和b前面必须要有&,&是C语言的取地址运算符,&a和&b分别表示变量a和b的地址,有关地址的概念将在第6章介绍。

(2)程序的运行过程是:从上到下按顺序逐条执行,当程序运行到“scanf("%d%d",&a,&b);”系统等待用户从键盘输入两个整形数据,当用户按要求操作后,系统会继续执行。

(3)系统执行输入函数时,等待用户输入数据,此时由于屏幕上没有任何信息,用户往往无法知道应该做什么。最简单的解决办法就是在输入函数之前添加一个printf语句,例如本程序中的“printf("Input a and b:");”系统执行该语句后会在屏幕上显示"Input a and b:",为正确的输入起到提示作用。

(4)最后一个输出函数中使用了3个格式说明符,输出时在各格式符的位置上分别输出a,b,sum的值,而且按原样输出双引号中的其他字符。

        

        格式输入函数的一般格式如下:

        scanf("若干字符和格式说明",输入项表)

        输入函数的格式说明见表2.2.输入项表中的各项要用逗号分隔,使用输入函数时,输入数据的格式必须按照前面双引号内指定的格式进行,否则执行时出错或得不到预期的结果。表2.1给出使用scanf函数为整型变量a和b输入值的几种形式,希望大家通过上机熟练掌握(假设每个scanf函数中的a,b与所对应的格式说明符类型一致)。

        

表2.1 scanf函数示例

        格式输出函数有两种,其一般形式如下:

        printf("若干字符")

        printf("格式说明和若干字符",输出项表) 

        第一个输出函数将输出双引号内的所有字符;第二个输出函数在各格式符的位置上分别输出输出项表的位置,双引号中的其他字符原样输出。输出函数的格式说明见表2.2。

表2.2 输入输出函数的格式说明

        格式输入输出函数中的格式说明符个数要与输入项表或输出项表的个数相同。

        本节仅仅介绍了格式输入输出中最简单、最常用的内容,更多介绍请参见2.5.1节。

        在编写程序时,经常会出现各种各样的错误。属于语法性质的错误,系统在编译的过程中极易发现,并及时给出有关信息,指出错误位置、错误原因等等,测试时很容易改正。对于那些非语法性错误,系统往往不给出错误信息,只是运行结果不正确,这样一类的错误纠正起来具有一定的难度,需要调试者认真观察,不断积累调试经验。

        程序的测试、调试过程就是查找、排除、修改程序中的错误的过程,常常需要反复多次进行,直至运行结果正确为止。

        

2.3.2 字符输入输出函数

        输入输出一个字符,除了可以使用格式输入输出函数scanf和printf外,还可以使用getchar、putchar等字符输入输出函数。

【例 2.6】编写一个有字符输入输出函数的程序。

#include<stdio.h>
int main(void)
{
    char ch='\0';
    printf("Input ch:");
    ch=getchar();   //相当于scanf("%c",&ch);
    putchar(ch);    //相当于printf("%c",ch);
    putchar("\n");  //相当于printf("\n");
    return 0;
}

运行结果:

Input ch:A
A

程序说明:

用getchar函数输入字符时,一般用赋值语句将得到的字符赋给字符变量。字符输入输出函数的更多介绍参见2.5.1节。

传送门🚪来喽~

传送门-上一章习题:C语言-基础知识练习习题1

传送门-上一节:C语言程序设计-不带参数的主函数、赋值运算符、数据类型

传送门-本章习题:C语言-基础知识练习习题2

传送门-下一节:C语言程序设计-关系运算符和关系表达式、逻辑运算符和逻辑表达式


Nothing could ever replace you.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值