美文网首页C语言学习程序员联盟简书收藏--C语言
C语言探索之旅 | 第一部分第四课第三章:变量的世界之显示变量内

C语言探索之旅 | 第一部分第四课第三章:变量的世界之显示变量内

作者: 程序员联盟 | 来源:发表于2016-08-08 02:55 被阅读1012次

-- 作者 谢恩铭 转载请注明出处

【变量的世界】这一课内容有点多,经过上一章C语言探索之旅 | 第一部分第四课第二章:变量的世界之变量声明,今天我们来学习最后一章《变量的世界之显示变量内容》。

在上几次的课中,我们已经知道了如何用 printf 函数在屏幕上显示内容。但那时候还只是显示一些简单的文字,比如“Hello World”,“你好吗”,“饭吃了没”,之类。

下面我们来学习如何用printf函数来显示变量内容。

用printf来显示变量内容其实也是类似,只不过在我们要插入变量内容的地方要用一个特殊符号代替,例如:

printf("你有 %d 只狗");

这里的特殊符号其实是“%”加上一个字母(上例中是d),这个字母表明要显示什么类型,d表示要显示整数。下表列出了一些常用的字母和对应的变量类型:

格式 类型
"%d" int
"%ld" long
"%f" float
"%f" double

可以看到用于显示float(单精度浮点数)和double(双精度浮点数)的符号是一样的(因为说到底它们都是浮点数嘛)。

在适当的时候,我们还会介绍其他的符号,暂时只需要记得这几个就够了。

我们差不多要完工了,我们在确切的位置指明了我们要显示一个整数,但是我们还没指定要显示哪一个数。所以上面的代码还不完整,必须告诉printf函数我们要显示的变量。

其实也很简单,我们只需要在双引号后面再写一个逗号,在逗号后面写上我们要显示的变量的名字,如下:

printf("你有 %d 只狗", numberOfDogs);

程序运行时,printf函数就会把%替换成变量numberOfDogs的值了。

我们在一个完整的程序中来测试一下:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int numberOfDogs = 5; // 一开始,你有5只狗

    printf("你有 %d 只狗\n", numberOfDogs);
    printf("**** 跑了一只狗 ****\n");
    numberOfDogs= 4; // 刚跑了一只狗,只有4只了
    printf("啊呀,你只剩下 %d 只狗了\n", numberOfDogs);

    return 0;
}

运行以上程序,屏幕会显示:

你有 5 只狗
**** 跑了一只狗 ****
啊呀,你只剩下 4 只狗了

很简单吧!

显示多个变量

用一个printf函数也可以显示多个变量的值

如下

int main(int argc, char *argv[])
{
    int numberOfDogs= 5, numberOfCats= 6;
    printf("你有 %d 只狗,还有 %d 只猫\n", numberOfDogs, numberOfCats);

    return 0;
}

运行,输出:

你有 5 只狗,还有 4 只猫

提取程序中的输入

从现在开始,变量对我们会越来越重要,也会越来越有意思。我们这一章的最后一个知识点:如何提取用户输入的值,并将其储存到变量里面。

为了能够让用户在控制台输入,我们需要借助另一个函数: scanf

这个函数和printf函数算是一对,用法有点类似,一个负责输入,一个负责输出。

给出一个scanf使用的例子:

int numberOfDogs = 0;
scanf("%d", &numberOfDogs);

是不是和printf很类似呢,但是我们注意到了,numberOfDogs前面多了一个&符号。为什么printf里面变量名前不需要这个符号而scanf却需要呢?

回答是: 这个符号的作用暂时不必深究,知道scanf是这样用就好,以后的课程我们再一起学习。相信我,如果我们一定要讲的话,今天的课就结束不了了。

scanf和printf函数还有一点差异:

对于float和double来说,printf里面他们的替代符号都是%f, 但是在scanf里面却不一样。在scanf中,float是%f,而double是%lf

例如:

double sum = 0;
scanf("%lf", &sum);

下面是一个完整的例子,演示我们如何用scanf提取用户输入,存储到变量中,再用printf函数输出变量的值:

int main(int argc, char *argv[])
{
    int sum = 0; // 把钱数初始化为零

    printf("你身上有多少钱 ? ");
    scanf("%d", &sum); // 请求用户输入钱数
    printf("你有 %d 块钱啊,那还不快快地交出来 !\n", sum);
    
    return 0;
}

运行,程序会先显示“你身上有多少钱 ?”,然后光标会停在后面,等待用户输入;用户输入数据之后,按回车,printf那句话才会显示,如下:

你身上有多少钱 ? 12000
你有 12000 块钱啊,那还不快快地交出来 !

好了,你应该已经明白了大致的原理,多亏了scanf函数,我们的程序可以和用户交互啦!

还要注意scanf一个“任性”的地方,就是虽然上例中我们指定了用户输入整数类型,但是假如用户输入的是其他类型,scanf也不会出错:

比如说用户输入 5600.45,这是一个浮点数,不是整数,但是scanf还是会将其读入,但是储存在sum变量里的数会变成5600(舍去了小数部分,只保留整数部分)

同样的,假如用户输入一些奇怪的字符,例如:g^b@&* , 那变量sum的值就不会变,还是它的初始值(上例中是0,因为我们初始化sum为0, 假如没有初始化,那sum的值会是任意的)

总结:

“变量的世界”这一课终于结束了,我们回顾一下重要的知识点:

  • 我们的电脑有好几种不同的存储器类型,从速度最快到最慢排序是: 寄存器,高速缓存,内存,硬盘。
  • 硬盘中的数据不会随电脑关机而消失,其他三类都是暂时性的储存。
  • 为了存储信息,我们的电脑需要把数据存放在存储器里,一般暂时的数据都是存放到内存里,当然也可能存放到寄存器或者高速缓存中,我们不用操心,电脑自会分配。
  • 在我们的源代码中,变量指的是暂时存放在内存中(主要),在程序运行期间值会改变的数据。
  • 我们也有constant变量(只读变量,不是常量),值在程序运行期间不会改变。
  • 变量有好多类型,每种类型在内存中所占据的空间大小不一样;一般来说,int类型是声明整数的首选,而double类型是声明浮点数的首选。
  • scanf函数使用户可以输入数据,printf函数输出数据。

今天的课就到这里,一起加油吧。

下回预告

C语言探索之旅 | 第一部分第五课:运算那点事

下一课我们学习第五章,来做一些运算吧。

相关文章

  • C语言探索之旅 | 第一部分第四课第二章:变量的世界之变量声明

    -- 作者 谢恩铭 转载请注明出处 上一课我们学习的是C语言探索之旅 | 第一部分第四课第一章:变量的世界之内存那...

  • C语言探索之旅 | 第一部分第四课第三章:变量的世界之显示变量内

    -- 作者 谢恩铭 转载请注明出处 【变量的世界】这一课内容有点多,经过上一章C语言探索之旅 | 第一部分第四课第...

  • C语言探索之旅 | 第一部分第五课:运算那点事

    -- 作者 谢恩铭 转载请注明出处 之前变量的世界我们分了三章来讲,大家辛苦了。 C语言探索之旅 | 第一部分第四...

  • 栈基础知识

    1.C语言变量的分布 : C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄...

  • C语言内存

    在阐述C语言内存布局之前,首先我们来介绍一下C语言变量的类型;在C语言中的变量类型有自动变量,全局变量,静态变量以...

  • C语言基础

    C语言定义变量 定义一个变量 给变量赋值 定义一个变量的同时给变量赋值 C语言使用变量之前必须赋值或者初始化 试试...

  • c语言点滴

    在c语言中,变量占用的字节数仅与数据类型有关,而和变量内数据的大小无关。 指针变量的数据类型,必须和它指向的变量的...

  • 变量的基本使用

    如何定义变量? C语言定义变量的格式: 数据类型 变量名称; Go语言中定义变量的格式: var 变量名称 ...

  • Python中的变量

    第三章 变量 变量的声明 python语言是动态语言 变量不需要事先声明 变量的类型不需要声明 每个变量在使用前都...

  • Block变量捕获

    变量分类 在了解变量捕获之前,我们首先了解一下C语言中变量的分类。C语言中变量分为三类 全局变量: 作用域在全局,...

网友评论

  • 71ab7f02bb25:那里的猫数字错了
    numberOfCats应该是4才符合下面的输出
  • d6ee74989bba:#include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[]) {
    int workTime=0;
    double workMoney = 14.0;
    int totalMoney;
    totalMoney = workTime*workMoney;
    printf("请输入工作时间%d");
    scanf("%d",&workTime);
    printf("总工资为%d", totalMoney);
    return 0;
    }
    d6ee74989bba:@程序员在法国 后面的程序运行也会闪退,不知道是不是vs配置的问题。
    d6ee74989bba:@程序员在法国 还是会闪退,加了getchar()也没用。
    程序员联盟:#include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[]) {
    int workTime=0;
    double workMoney = 14.0;
    double totalMoney = 0;

    printf("请输入工作时间: ");
    scanf("%d",&workTime);

    totalMoney = workTime*workMoney;
    printf("总工资为%f", totalMoney);
    return 0;
    }
  • d6ee74989bba:求教大神,我用vs做的,没有报错,运行结果闪退是怎么回事啊。

本文标题:C语言探索之旅 | 第一部分第四课第三章:变量的世界之显示变量内

本文链接:https://www.haomeiwen.com/subject/mqalsttx.html