C程序设计(第五版) 第三章(3)C语句和数据的输入输出


四、C语句

4.1 C语句的作用和分类

一个函数包含声明部分和执行部分。C程序可以由多个源程序文件组成,一个C语句经过编译后产生若干条机器指令。具体的C程序结构如下图所示。
在这里插入图片描述


C语句分为以下5类。
(1)控制语句。C语言只有9种控制语句。
在这里插入图片描述


(2)函数调用语句。有由一个函数调用加一个分号构成。例如:

printf("This is a C statement.");

其中的printf(“This is a C statement.”)是一个函数调用,加一个分号成为一个语句。


(3)表达式语句。由一个表达式加上一个分号组成,最典型的就是赋值表达式构成赋值语句,a=3是一个赋值语句,a=3;是赋值语句。函数调用语句也属于表达式语句。


(4)空语句。此语句只有一个分号,可以作为流程的转向点,或循环语句的循环体。即:


(5)复合语句。用{}将一些语句和声明括起来成为复合语句(又称语句块)。如:

float pi = 3.14159, r=2.5, area;//定义变量
area =pi * r * r;
printf("area = %f",area);

可以在符合语句中包含声明部分,可以放在复合语句中任何地方,但习惯放于语句块开头。


4.2 最基本的语句——赋值语句

C语言中最常用的语句是赋值语句和输入输出语句。最基本的是赋值语句。
在这里插入图片描述
编写程序

#include<stdio.h>
#include<math.h>

int main()
{
    double a,b,c,s,area;
    int d, e, f;
    d = e = f =1;//no int a=b=c=3;
    a=3.67;
    b=5.43;
    c=6.21;
    s=(a+b+c)/2;
    area= sqrt(s*(s-a)*(s-b)*(s-c));
    printf("a=%lf\tb=%lf\tc=%lf\n",a,b,c);
    printf("area=%lf\n",area);
    printf("d=%d\te=%d\tf=%d\n",d,e,f);
    return 0;
}

其中有些要点需要注意:
(1)赋值运算符 = 。
(2)复合的赋值运算符 。+=、-=、*=、/=、%=。简化程序同时提高编译效率。
(3)赋值表达式。变量 赋值运算符 表达式,左侧变量必须是一个可修改的左值(left valua)。左值都可以作为右值。
(4)赋值过程中的类型转换。

  • 若赋值运算符两侧类型一致直接赋值
  • 浮点型赋给整型,浮点数取整赋值整型变量
  • 整型赋给浮点型,数值不变,以浮点数形式存储
  • double赋值给float,先将双精度转换为单精度
  • 字符型数据赋给整型变量,ASCII代码赋给变量
  • 占字节多的整型(int)赋给少的(short)只将低字节送给变量,即截断
    在这里插入图片描述
    (5)赋值表达式和赋值语句。区别在于分号;。
    (6)变量赋初值。可以在定义时赋值.

五、数据的输入输出

5.1 输入输出举例

在这里插入图片描述
编写程序:

#include<stdio.h>
#include<math.h>

int main()
{

    double a,b,c,p,q,x1,x2;
    printf("please input a b c\n");
    scanf("%lf %lf %lf",&a,&b,&c);
    if((b*b-4*a*c)>=0)
    {
        ;
    }
    else
    {
        printf("please input a b c again\n");
        scanf("%lf %lf %lf",&a,&b,&c);
    }
    p=-b/(2*a);q=(sqrt(b*b-4*(a*c)))/(2*a);
    x1=p+q;x2=p-q;
    printf("x1=%7.2lf\nx2=%7.2lf\n",x1,x2);
    return 0;
}

5.2 有关数据输入输出的概念

(1)所谓输出输出是以计算机主机为主体而言的。输出设备数据称为输出,输入设备数据称为输入。
(2)C语言本身不提供输入输出设备,输入输出操作是由C标准函数库中的函数实现的。
(3)要在程序文件的开头用于处理指令#include把有关头文件放在本程序中。如:

#include<stdio.h>//标准方法,搜索C编译系统的子目录。系统提供的头文件。
#include"stdio.h"//先寻找当前目录,若找不到再按标准方法查找。自己编写的文件。

5.3 用printf函数输出数据

printf(格式控制,输出表列)
格式控制包括格式声明%、普通字符;输出表列可以是常量变量表达式。
【例3.7】float型数据的有效位数
编写代码:

#include<stdio.h>
int main()
{
    float b;double a;long long c=-1;
    //a=10000/3;
    a=10000.0/3;
    b=10000.0/3;//整型与整型运算得到整型,故必须其中一个使用浮点数进行转换。
    //printf("%f\n",a);
    printf("%9.8f\n",b);//float有效位数,6位。
    printf("%21.15f\n",a);
    printf("%-25.15f,%25.15f\n",a,a);
    printf("%-13.2E\n",123.456);
    printf("%12x%%",c);
    return 0;
}

在这里插入图片描述
在这里插入图片描述
注意:如果想输出字符%,则可以用两个连续的%%表示。


5.4 用scanf函数输入数据

1.scanf函数的一般形式
scanf(格式控制,地址表列)
格式控制的含义和printf函数一样。地址表列是若干个地址组成的表列,可以是变量的地址或字符串的首地址,应为变量地址(&)而非变量名。

2.scanf函数中的格式声明
格式声明与printf函数类似。

3.使用scanf函数时应注意的问题
(1)scanf函数中的格式控制后面应当是变量地址,不是变量名。&a而不是a。
(2)如果在格式控制字符串中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入与这些字符相同的字符。

scanf("a=%f,b=%f,c=%f", &a,&b,&c);//则在输入数据时应输入同样的格式:
a=1,b=3,c=2 //如果输入1 3 2就会出错,因为系统是将它和格式字符串对照检查的。

(3)注意空格

scanf("%c%c%c", &a,&b,&c);//则在输入数据时应输入同样的格式:
abc //如果输入a b c就会出错,因为系统是将它和格式字符串对照检查的。会把空格赋给第二个字符。

在输入数值时,再两个数值之间需要插入空格或其他字符,以便于系统能区分两个数值;在连续输入字符时,在两个字符之间不要插入空格或其他分隔符,系统自己可以区分。

(4)在输入数值数据时,如输入空格、回车、Tab键等,认为该数据结束。
在这里插入图片描述


5.5 字符输入输出函数

1.putchar函数输出字符
在这里插入图片描述
编写程序:

#include<stdio.h>
int main()
{
    char a,b,c;
    a='B';
    b='O';
    c='Y';
    putchar(a);
    putchar(b);
    putchar(c);
    putchar('\n');
    putchar(127);
    putchar('\101');
    putchar('\'');
    putchar('\015');
    return 0;
}

2.getchar函数输入字符
在这里插入图片描述
编写程序:

#include<stdio.h>
int main()
{
/*     char a,b,c;
    a=getchar();
    b=getchar();
    c=getchar();
    putchar(a);
    //putchar(b);
    putchar(c);
    //putchar('\n'); 

    putchar(getchar());
    putchar(getchar());
    putchar(getchar());
    putchar(getchar());
    putchar('\n'); */

    printf("%c",getchar());
    return 0;
}

在这里插入图片描述
编写程序:

#include<stdio.h>
int main()
{
    char a,b;
    a=getchar();
    b=a+32;
    putchar(b);
    putchar('\n');

    return 0;
} 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正在輸入......

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

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

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

打赏作者

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

抵扣说明:

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

余额充值