编程C本: 帖子 3 – 在c输入发

在以前的帖子, 我们结识了许多程序,打印到屏幕上的一些信息了如指掌. 本文我们将了解如何在C进入生产.

1. 格式字符串数据

此前出台, 数据变量,我会讲一些格式的导入和导出. 这里的招牌描述格式:

  • %Ç : 单个字符
  • %s : 链
  • %ð : 整我们 10 标
  • %˚F : 浮数 (首席执行官 5.54 将打印出 5.540000)
  • %和 : 浮数 (与指数符号)
  • %克 : 浮数 (首席执行官 5.54 打印将打印出 5.54)
  • %X : 十六进制无符号整数 (往来 16)
  • %该 : 无符号的八进制整数 (往来 8)
  • 升 : 与%D使用的前缀, %X, %Ø指示长整型 (例如,LD%)

2. 用printf导出数据

我们使用该函数 的printf 将数据导出到控制台 (从打印装置打印). 上面的格式串组合, 我们考虑一个简单的例子如下.

例 1:

#include <stdio.h>

int main()
{
    int a = 12;
    float b = 13.5;
    char c = 'Q';
    long d = 3454;
    char* s = "nguyenvanquan7826"; // khai bao kieu chuoi

    printf("Vi du ve su dung lenh printf\n");
    printf("Tong cua %d va %f la %f \n", a, b, a+b);
    printf("Tich cua %d va %ld la %ld \n", a, d, a*d);
    printf("Ky tu c la: %c \n", c);
    printf("Chuoi s la: %s \n", s);
    printf("Dinh dang so mu cua b la %e \n", b);
    printf("So he 16 va he 8 cua %d la %x va %o \n", a, a, a);
    printf("Ma ASCII cua %c la %d", c, c);

    return 0;
}

上面我已经使用了一些控制字符 (\ñ – 下了线) 在以前的帖子中提到的, 您可以查看,如果不是我. 你运行该程序,并绘制自己的意见.

他的解释 1 声明澄清公布我们.

出口数据

printf语句来打印相应的变量

格式字符串放在引号: “”. 分别对应于每个格式类型的变量, 如果另一种类型会导致错误.

还注意,对于整数和字符具有彼此通过ASCII码,所以我们可以在格式%D以及在字符数字代码打印的字符代码通过格式%C. 然而,该变量的性质不改变. 血管性痴呆的命令在C将整数C中的性质,但仍是ASCII码是char类型的变量.

例 2:

#include <stdio.h>

int main()
{
    int a = 12;
    float b = 13.5;
    char c = 'Q';
    long d = 3454;
    char s[] = "nguyenvanquan7826"; // khai bao kieu chuoi

    printf("%6d %5.3f %.3f \n", a, b, a+b);
    printf("%-5d %5ld %5ld \n", a, d, a*d);
    printf("%5c \n", c);
    printf("%30s \n", s);

    return 0;
}

你看这个例子中,我们使用的格式%d, %F,但在6D%的中间插入, %5.3˚F. 它的含义如下::

  • %5Ç : 出口字符宽度 5
  • %5ð : 宽度整数 5
  • %20s : 出口环宽度 20
  • %5.3˚F : 出口的实际宽度 5 含 3 逗号后的数
  • %-5ð : 宽度整数 5 但对齐左

运行程序, 查看查看更多结果. TH如果我们的更小尺寸的广度,数星星的长度? 例如,我们有一些INT A = 1234 但只有在2D%, 为清晰 2 的空间小于罐 4 数字,但结果仍然是全. 你可以试试.

例 3:

把这个问题是假设我们已经证明任何出生日期变量 (例如,右= 12, 胜= 8, 男性= 1992). 请打印格式为DD / MM / YYYY. 意味着我们必须打印出结果 12/08/1992.

#include <stdio.h>

int main()
{
    int ngay = 12;
    int thang = 8;
    int nam = 1992;

    printf("KQ: %02d/%02d/%04d\n", ngay, thang, nam);

    return 0;
}

以上, 你注意到我们使用 %02ð 即星? Nhiá是印刷将是数 2 数字, 如果原来的数小于 2 将增加 0 前面足够 2 数字. 实例号 8 会成功 08. 如果您使用%05D将 00008.

3. 使用输入数据的scanf

在前面的例子, 我们只是声明变量,并赋值给变量,但不灵活,因为程序只与预定值工作, 想用不同的数据进行工作,我们必须修改代码, 所以它不是一个好的方案. 一个软件程序是由对许多不同的价值观,可以使用.

因此,数据将包含在所使用的软件是具体的和简单的数据输入到键盘. 我们使用命令 scanf函数 从键盘输入数据 (从扫描单元,其扫描和我们使用的数据来自键盘扫描LEU).

例 1:

#include <stdio.h>

int main()
{
    int a;
    float b;

    printf("Nhap so nguyen a = ");
    scanf("%d", &a);

    printf("Nhap so thuc b = ");
    scanf("%f", &b);

    printf("a = %d \t b = %.3f", a, b);

    return 0;
}

使用命令 scanf函数 与用于数据输入的字符串格式组合将是由命令类似于数据 的printf.

注意不要忘记字符 & 每个变量进入之前. 没有脚麻.

例 2:

/* Tinh dien tich hinh chu nhat */
#include <stdio.h>

int main()
{
    int a, b;
    printf("Nhap chieu dai, chieu rong: \n");
    scanf("%d%d", &a, &b);

    printf("Dien tich HCN: %d\n", a * b);

    return 0;
}

在上面的例子, 你看,我们可以使用 1 scanf的命令输入几个变量数据, 每个相应的可变 1 某些格式.

4. 输入字符串用C

4.1 错误输入字符串的scanf

如果使用scanf函数输入您看到之前链条不能输入空格,或者如果你没有输入,然后再输入字符串的字符串. 如果你不相信,你可以尝试后运行该程序:

#include <stdio.h>

int main()
{
    int tuoi = 0;
    // khai bao chuoi co toi da 30 ky tu
    char ten[30], tenNguoiYeu[30];

    printf("Ho va ten cua ban ten la gi? ");
    scanf("%s", ten); // nhap chuoi khong can dau &

    printf("Ban bao nhieu tuoi roi? ");
    scanf("%d", &tuoi);

    printf("Nguoi yeu cua ban ten la gi? ");
    scanf("%s", tenNguoiYeu);

    printf("\n====\n");
    printf("Ten: %s \nTuoi:%d \nNY:%s \n", ten, tuoi, tenNguoiYeu);

    return 0;
}

其结果是,你将无法进入爱情的年龄和名字,如下图所示.

用C特洛伊命令

结果用于输入的字符串时scanf函数

其原因是,只能读取数据scanf函数没有空格 (怎么玩, 标签, 进入, ...) 和距离将被存储在键盘缓冲区,所以你只能得到第一个字符串赛前唯一途径 (字 ), 每个空格后, 下一个值,如果用的下一回合的数据类型相一致,它总是分配给他们,你将不会再进入. 的 您的 材料类型不应该接受, tenNguoiYeu 将接收中接收到的值的下一个值是词 .

4.2 浮动命令的现象

等现象的现象被称为漂移命令. 如果你现在做输入字符串之前和之后立即这一现象也会发生,因为 scanf函数 刚读正确的格式数量,当你按下回车键即不可读当输入的号码 (输入字符或也可以被认为是链), 它被存储在缓冲和读出的输入值串,当它发现在缓冲器看到的字符输入字符串所以它总是被分配给该字符串.

要输入字符串用空格 (空间) 我们使用功能得到.

输入命令时,不洗前和后的字符串,我们需要清除键盘缓冲区的命令 fflush(标准输入); 进入后,立即.

#include <stdio.h>

int main()
{
    int tuoi = 0;
    // khai bao chuoi co toi da 30 ky tu
    char ten[30], tenNguoiYeu[30];

    printf("Ho va ten cua ban ten la gi? ");
    gets(ten); // nhap chuoi khong can dau &

    printf("Ban bao nhieu tuoi roi? ");
    scanf("%d", &tuoi);
    fflush(stdin);

    printf("Nguoi yeu cua ban ten la gi? ");
    gets(tenNguoiYeu);

    printf("\n====\n");
    printf("Ten: %s \nTuoi:%d \nNY:%s \n", ten, tuoi, tenNguoiYeu);

    return 0;
}

如果你使用Linux时, fflush(标准输入); 将无法正常工作, 您可以通过输入修复 1 进入后临时序列立即. 这种临时链记录只删除字符, 过量的字符串在缓冲液如下 (这种方式也可以,当你在Windows上使用做).

#include <stdio.h>

int main()
{
    int tuoi = 0;
    // khai bao chuoi co toi da 30 ky tu
    char ten[30], tenNguoiYeu[30], temp[255];

    printf("Ho va ten cua ban ten la gi? ");
    gets(ten); // nhap chuoi khong can dau &

    printf("Ban bao nhieu tuoi roi? ");
    scanf("%d", &tuoi);
    //fflush(stdin);
    gets(temp);

    printf("Nguoi yeu cua ban ten la gi? ");
    gets(tenNguoiYeu);

    printf("\n====\n");
    printf("Ten: %s \nTuoi:%d \nNY:%s \n", ten, tuoi, tenNguoiYeu);

    return 0;
}

5. 解释有关的printf一点点, scanf函数和stdio.h中

5.1 printf和scanf函数中的字母f

如你所知 打印 意味着 , 扫描 或者被称为进入. 那么,为什么他们有信 ˚F 回形成 的printfscanf函数 ?

˚F 这意味着, 格式 (格式). 正如你所见,我们导入或导出变量的值被格式化 % 某事,例如%d是整数, %f为实数,… 和字母 ˚F 这是这样有意义.

5.2 库stdio.h中 ?

在所有的程序不断, 我们总是有 #include <stdio.h>, 那么是什么?

#include 即意味着包括我们的节目将宣布使用的东西, 但这里是使用图书馆 stdio.h

所以 stdio.h中 什么? STD 看台 标准 , 看台 输入, 看台 产量, ħ 看台 (头 – 头, 在上面 – 因为它是在节目的开头声明). 因此,这意味着 标准输入输出 – 进口标准输出. 我们理解这是程序标准的进口和出口的图书馆服务. 输入标准输出从键盘和输出到屏幕上输入. 也有许多来源从文件导入和导出导入, 从光标进口,… 输出到打印机, 输出文件,… 但他们认为 键盘和屏幕是进口和出口的标准体系.

锻炼

  1. 在某些任写一个程序和打印值2, 该3, 该4
  2. 编写一个程序,从键盘读取 3 执行整数天, 月, 并输出到屏幕上在“日/月/年”的形式.
  3. 读取和写入程序 2 整并打印出的结果 (+), 减法 (-), 乘法 (*), 师 (/). 评审结果划分 2 整.
  4. 写一个程序,该球体的半径, 计算并打印区域, 球体的体积.
    指南: S = 2并且V = ^4πR (4/3)πR^ 3.
  5. 输入一个数字是多少秒, 改变的GIO下制造的分针和时针格式的秒数:砰:闪耀, 每个组件 2 数字. 例 3661 = 01:01:01.