黑马程序员——C语言基础---数据类型

                                                      ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

一、关键字的基本概念

基本概念 

关键字就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等

C语言中一共有32个关键字

auto      double    int    struct    break    else    long    switch    case      enum    register    typedef   char extern    return    union  const     float    short   unsigned  continue  for     signed     void      default  goto     sizeof    volatile  do       if      while   static  

数据类型关键字(20个)

          A.基本数据类型(5个)

    void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果

    char :字符型类型数据,属于整型数据的一种

    int :整型数据,通常为编译器指定的机器字长

    float :单精度浮点型数据,属于浮点数据的一种

    double :双精度浮点型数据,属于浮点数据的一种

          B .类型修饰关键字(4个)

    short :修饰int,短整型数据,可省略被修饰的int。

    long :修饰int,长整形数据,可省略被修饰的int。

    signed :修饰整型数据,有符号数据类型

    unsigned :修饰整型数据,无符号数据类型

          C .复杂类型关键字(5个)

    struct :结构体声明  

    struct :结构体声明

    union :共用体声明

    enum :枚举声明

    typedef :声明类型别名

    sizeof :得到特定类型或特定类型变量的大小

          D .存储级别关键字(6个) 

    auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配

    static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部

    register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形,建议编译器通过寄存器而不是堆栈传递参数

    extern :指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,示编译器遇到此变量和函数时在其他模块中寻找其定义。

    const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)

    volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变, 强制编译器每次从内存中取得该变量的值 

流程控制关键字(12个)

     A.跳转结构(4个) 

    return :用在函数体中,返回特定值(或者是void值,即不返回值)

    continue :结束当前循环,开始下一轮循环

    break :跳出当前循环或switch结构

    goto :无条件跳转语句

     B .分支结构(5个)

    if :条件语句,后面不需要放分号

    else :条件语句否定分支(与if连用)

    switch :开关语句(多重分支语句)

    case :开关语句中的分支标记

    default :开关语句中的“其他”分支,可选。

     C .循环结构(3个) 

    for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。在整个for循环过程中,表达式1只计算一次,表达           式2和表达式3则可能计算多次,也可能一次也 不计算。循环体可能多次执行,也可能一次都不执行。

    do :do循环结构,do 1 while(2); 的执行顺序是1->2->1...循环,2为循环条件

    while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件 以上循环语句,当循环条件表达式为真则继续循环,为假             则跳出循环。

二、标识符概念及其命名原则 

1、标识符 

     在C语言中,符号常量,变量,数组,函数等都需要一定的名称,我们把这种名称成为标识符。

     标识符划分:关键字,预定义标识符和用户标识符 

#include <stdio.h>
int main(int argc, const char * argv[]) {
    int abcd;  //abcd 就是一个标识符
    int _a$b;  //_a$b 就是一个标识符
    int 8a;    //不对的,不能以数字开头
    int int;   //不对的,标示符不能与关键字同名
    int ABCD;  //ABCD 是一个合法的标识符
               //标识符严格区分大小写
    int 中国;
    int _;     //_这是一个合法的标识符
    return 0;
}

2、标识符命名原则

     命名规则: 

     1、只能由字母、数字、下划线或者美元符号($)组成

     2、不能以数字开头

     3、不能与关键字重名

     4、严格区分大小写

     命名规范: 

     1、起一个有意义名字(能够提高代码的可读性

     2、驼峰命名 

     第一个单字以小写字母开始,第二个单字的首字母大写或每一个单字的首字母都采用大写字母

标示符命名规范还有哪些? 

1)命名应当直观且可以拼读,要望文知意,便于记忆和阅读。

2)命名的长度应当符合“min-length&& max-information”原则。 

3)当标识符由多个词组成时,建议采用“驼峰命名法”。

4)尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。 

5)对在多个文件之间共同使用的全局变量或函数要加范围限定符

6)标识符名分为两部分:规范标识符前缀(后缀)+ 含义标识。

三、注释

1、为什么要使用注释?

    良好的代码注释习惯可以提高程序的可读性

2、使用注释的目的和应用的场景

    注释是对代码的解释说明,是写给程序员看的,方便程序员之间的交流

1)解释代码

2)函数说明

3)思路分析

4)调试BUG

3、使用注释的特点 

    注释是不参与编译,编译器遇到注释就跳过

4、注释的使用和注意

1)单行注释:

//进行单行注释

快捷键:Command+/

2)多行注释

/*内容*/进行多行注释

3)使用注意

1)单行注释只有这一行是注释,并且两个斜杠后面才是注释内容 

2)command + / 可以增加或取消单行注释 

3)多行注释是可以嵌套单行注释的

4)单行注释是可以嵌套多行注释的,多行注释必须写到一行里面 

5)多行注释不可以嵌套多行注释 

四、 常量的概念和分类及不同类型常量的表示方法

1、常量概述

常量表示一些固定的数据,也就是不能改变的数据

2、常量分类

1)整型常量,也就是整常数

2)实型常量

3)字符型常量

4)字符串常量,注释字符串产量和字符型常量是不一样的

3、常量分类

整型常量

整型常量可以用三种样子:

十进制整数
八进制整数:八进制形式的常量都以0开头
十六进制整数:十六进制的常量都是以0x开头
二进制整数:逢二进一,0b开头

实型常量

实型常量又分两种:

单精度小数: f 结尾
双精度小数: 十进制小数形式。 注意:0.0也是实型常量。  

实型的另一种表示形式:

指数形式:上过初中的都应该知道科学计数法吧,指数形式的常量就是科学计数法的另一种表 示,比如123000,用科学计数法表示为1.23×105次方,C语言表示就是1.23e51.23E5,注意e或E的前面必须要有数字,而且e或E后面的数字一定要是整数。

字符型常量 

字符型常量都是用''(单引号)括起来的,其表现形式可以有两种:

1)一般形式。一个字符用''括起来,注意只能有一个字符。

2)特殊形式。特殊形式都是以\开头,它们在屏幕上不会直接显示出来,而是根据其特定的功能来显示的,这些特殊字符常量有: 

\n 换行,相当于敲一下回车。

\t跳到下一个tab位置,相当于按一下键盘上的tab键。 

\b 退格,相当于按一下backspace。

\r 回车。

\f 换页,光标移到到下页开头。

\\输出\字符,也就是在屏幕上显示一个\字符。

\'输出'字符,也就是在屏幕上显示一个'字符。

\"输出"字符,也就是在屏幕上显示一个"字符。

\ddd 1位到3位八进制数表示的字符。

例如:使用'\376',则在屏幕上显示一个黑色的方块。\xhh 1位到2位十六进制数表示的字符。注意x不能丢了。

字符串常量 

字符串常量与字符常量不同的地方是,字符串常量是用""把字符串括起来,所以'a'和"a"是不一 样的,而且系统会在字符串常量的末尾自动加一个字符串结束标志('\0')。

定义常量的方法

常量CONST常量标识符 = 常量;

五、 变量的概念

1、变量的基本概念

所谓变量,它代表内存的某个空间,它的取值可以变的,是数据的基本单元。

变量由两要素构成:变量名与变量类型。

变量分为全局变量,局部变量。

全局变量定义在函数外部,程序开始到结束都一直在。

局部变量定义在函数内部,只能供函数使用,在函数内部有效;

数据类型常用的:整型,实型,字符型;

2、变量的定义和使用

     定义(声明) 

格式: 变量类型 变量名称 ; 

int a;

float b;

char ch;

//定义一个变量

格式2:变量类型 变量名称,变量名称;

//表示定义了两个相同类型的变量

//如果定义多个变量,每个变量中间使用","分隔但是最后一个变量之后不需要加逗号

int a,b;

int a,b,c,d;

3、变量命名的规范:

1)严格的遵守标识符的命名原则 

2)变量名要尽可能的望文知意、简洁

3) 变量名要按照驼峰命名法(遵从命名规范) 

六、常量的初始化和引用

1、变量的初始化 

为什么必须初始化?

一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据,所以通常情况下我们为一个变量,为一个数组,分配好存储空间之前都要对该内存空间初始化

int a; //不会报错

没有初始化的a里面存的内容:

1)随机数

2)上次程序分配的存储空间,存数一些 内容,“垃圾”

3)系统正在用的一些数据

1)定义的同时进行初始化 

int a = 10;

int a,b=10;//部分初始化

int a=4,b=2;

2)先定义,后初始化 

int a; a = 10; 

3)使用一个变量进行初始化

int a;

int b = 10;

a = b; //使用b去初始化a

4)还可以批量的进行初始化 

int a,b,c;

a = b =c =0;

注意:变量的第一次赋值被成为称为初始化,以后再赋值相当于覆盖了上一次的值 

2)变量的使用 

1)进行赋值,赋值是要使用“=” ,把等号右侧的值放到等号左侧的变量中 

int a;

int b = 10;

a = b; //把b的值赋值给a a和b就相等了

//不是相等,是赋值

注意:

(1)赋值的时候,= 号的左侧必须是变量 (10=b,错) 

(2)规范:习惯将 = 的两侧 各加上一个空格 

(2)变量的操作:运算、判断....

七、变量的作用域

1)局部变量

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该 函数后再使用这种变量是非法的。

     关于局部变量的作用域还要说明以下几点:

(1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。

(2)形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。 

(3)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。虽然允许在不同的函数中使用相同的变量名,但是为了使程序明了易懂,不提倡在不同的函数中使用相同的变量名

2)全局变量 

全局变量也称为外部变量,它是在函数外部定义的变量。

它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用。

全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说 明。

     对于全局变量还有以下几点说明:

(1)对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。其一般形式为: [extern] 类型说明符 变量名,变量名... 其中方括号内的extern可以省去不写。

(2)而外部变量说明出现在要使用该外部变量的各个函数内,在整个程序内,可能出现多次,外部变量说明的一般形式为: extern类型说明符 变量名,变量名,...; 外部变量在定义时就已分配了内存单元,外部变量定义可作初始赋值,外部变量说明不能再赋初始值, 只是表明在函数内要使用某外部变量。

(3)外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,因而使得函数的独立性降低。从模块化程序设计的观点来看这是不利的, 因此在不必要时尽量不要使用全局变量。

(4)在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用

八、printf函数介绍

1、printf函数介绍 

printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果。printf函数的调用格式为:

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

如:printf("%d,%d",a,b);

#include <stdio.h>
int main(int argc, const char * argv[]) {
    //定义一个整型变量
    int sb=10,sb2=34;
    printf("sb = %d,%d\n",sb,sb2);
    //定义一个实数型(单精度)变量
    float f1 = 3.14159f;
    printf("f1 = %f\n",f1);
    //只打印小数点后两位
    printf("f1 = %.3f\n",f1);
    //%m.n格式
    printf("%6.3f\n",f1);
    //定义一个字符型变量
    char  ch = 'a';
    printf("ch = %c\n",ch);
    return 0;
}

2、格式控制符使用说明

 

printf的格式控制的完整格式:% - 0 m.n lh格式字符

%

表示格式说明的起始符号,不可缺少。 

-

-表示左对齐输出(右侧补空格),如省略表示右对齐输出(左侧补空格)。 

0

有0表示指定空位填0,如省略表示指定空位不填。 

m.n

m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度,用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。 

l或h

l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。 格式字符 格式字符用以指定输出项的数据类型和输出格式。 

 

格式字符:格式字符用以指定输出项的数据类型和输出格式 

d

用来输出十进制整数。有以下几种用法: %ld:输出长整型数据。 

o

以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽 度用“%mo”格式输出。例:

main()

int a = -1; printf("%d, %o", a, a);

}

运行结果:-1,177777 程序解析:-1在内存单元中(以补码形式存放)(1111111111111111)2,转换为八进制数为(177777)8

x

以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段 宽度用"%mx"格式输出。 

u

以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽 度用“%mu”格式输出。 

c

输出一个字符。 

 

 

s格式:用来输出一个串,有几种用法:

%s

例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。 

%ms

输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若字符串长度小于m,则左补空格。

%-ms

如果串长小于m,则在m列范围内,字符串向左靠,右补空格。 

%m.ns

输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,注意:如果n未指定,默认为0。 

%-m.ns

其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n 值,即保证n个字符正常输出,注意:如果n未指定,默认为0。

如果是sprintf(desc, "%m.ns", sour); 如果desc空间够的话,会在%m.ns 串 的结尾自动补null 字符,不同于strncpy。

例如 :sprintf(desc, "%.3s", "123456"); desc如果空间>=4字节的话,第4个字节将是null字 符。

%f

不指定宽度,整数部分全部输出并输出6位小数。 

%m.nf

输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 

通过%m.n的形式,依然无法解决精度不准的问题,

原因是float类型,小数点后6位有效 

%-m.nf

输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。 



e

以指数形式输出实数。可用以下形式: %e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。 %m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整 个输出数据所占的宽度。 

g

自动选f格式或e格式中较短的一种输出,且不输出无意义的零。 

p

输出变量在内存中的地址(指针)

九、格式字符%输出精度问题

关于实型的精度问题

对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位。

对于双精度数,使用%lf格式符输出时,前15位是有效数字,小数14位。

 

float

double 

二进制有效位数

24位

53位 

十进制有效位数

7位

15位

有效数字的位数与指定输出的小数位数(%.7f)是两码事。 

“有效数位为7”:是指此数据从第一个非零数字开始,误差不超过本数位半个单位的、精确可信的数位是7位(包括小数点前的非零数位)。

%.7f:是指输出此数据的时候,小数点之后要显示7位数字(但是如果小数点前还有一些非零数位,那么小数点后的这7位并不能保证都是精确可信的有效数位,)

#include <stdio.h>
int main(int argc, const char * argv[]) {
    //float类型的变量
    float f1 = 3.1415926f;
    //默认输出6位小数
    printf("f1 = %f\n",f1);
    //打印7位小数
    printf("f1 = %.7f\n",f1);  //3.1415926
    //注意:%f打印出来后,float类型精度小数点后6位,有效数字是7位
    //要打印3.1415926到底怎么破
    double d1 = 3.1415926;
    //%f打印出来后,double类型精度小数点后6位,有效数字是15位
    printf("d1 = %.7f\n",d1);
    float a = 11111.111111f;  //
    float b = 22222.222222f;
    //float c = a+b;
    double a1 =1.1111111111;
    double b1 =2.2222222222;
    d1 = a1+b1;
    printf("a+b = %f\n",a+b);
    printf("a1+b1 d1 = %.10f",d1);
    return 0;
}

十、printf函数注意

1、域宽问题 

%d:按整型数据的实际长度输出。

关于整数数据打印的时候域宽的问题。

%md-->m域宽,打印出来以后,在控制台上,显示m位

如果我们要打印的数的位数如果超过我们设定 m 则原样输出 

如果我们要打印的数的位数如果小于我们设定的位数,则补空白

如果m为正数,则左对齐(左侧补空白) 

如果m为负数,则右对齐(右侧补空白) 

%0md 表示,位数不足部分补“0”

2、关于转义字符 

关于printf函数的进一步说明:如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如: 

printf("%f%%",1.0/3); 输出0.333333%。

\n

换行,相当于敲一下回车。

\t

跳到下一个tab位置,相当于按一下键盘上的tab键。 

\b

退格,相当于按一下backspace。

\r

使光标回到本行开头。

\f

换页,光标移到到下页开头。

\\

输出\字符,也就是在屏幕上显示一个\字符。

\'

输出'字符,也就是在屏幕上显示一个'字符。

\"

输出"字符,也就是在屏幕上显示一个"字符。 

#include <stdio.h>
int main(int argc, const char * argv[]) {
    //如果要输出的数的位数 < 域宽m   要不空格
    printf("%-5d\n",10);
    //如果要输出的数的位数 > 域宽m   按照数据的实际位数输出
    printf("%3d\n",1888);
    //%02d
    for (int i=0; i<20; i++) {
        printf("%02d\n",i);
    }
    //printf打印转义字符
    printf("a\nb\n");
    printf("a\tb\n");
    printf("\\\n");
    printf("%%\n"); 
    printf("\"\n");
    printf("\'\n");
    printf("aaaa\rb\nbb");
    return 0;
}

字符串常量

字符型常量所表示的值是字符型变量所能包含的值。我们可以用ASCII表达式来表示一个字符型常量,或者用单引号内加反斜杠表示转义字符。

'A', '\x2f', '\013';

其中:\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。

注意:在Turbo C 2.0中,字符型常量表示数的范围是-128127,除非你把它声明为unsigned,这样就是0255

上面我们见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要用特殊的方式进行处理。

  转义字符 意义ASCII码值(十进制) 
  \a 响铃(BEL) 007 
  \b 退格(BS) 008 
  \f 换页(FF) 012 
  \n 换行(LF) 010 
  \r 回车(CR) 013 
  \t 水平制表(HT) 009 
  \v 垂直制表(VT) 011 
  \\ 反斜杠 092 
  \? 问号字符 063 
  \' 单引号字符 039 
  \" 双引号字符 034 
  \0 空字符(NULL) 000 
  \ddd 任意字符 三位八进制 
  \xhh 任意字符 二位十六进制 

十一、scanf函数介绍和使用

1、scanf函数(阻塞式函数)

scanf函数原型包含在标准输入输出头文件“stdio.h”中,用于接受键盘输入的内容。

格式:

scanf("格式控制字符串",输入项地址列表);

格式控制字符串:规定数据输入的格式,由格式控制符和普通字符组成,格式控制符和百分号(%)一起使用, 用来说明输入数据的数据类型(格式字符)。

输入项地址列表:需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。

另外:在C语言中,一个变量的地址可以通过地址运算符&得到。

例如:定义inta,b;则a,b的 地址为&a,&b

2、scanf函数格式控制符 

常见的格式控制符:o 输入一个八进制整数


格式 

意义 

输入一个十进制整数 

输入一个八进制整数 

输入一个十六进制整数 

输入一个有符号或无符号的十进制、八进制、十六进制整数

输入一个无符号十进制整数

f 、e或E、 g或G 

输入一个小数形式或指数形式的浮点数

输入一个字符 

输入一个字符串 

scanf的时候不能指定%m.n格式

#include <stdio.h>
void test(){
    //从键盘上接收一个人得年龄,然后打印出来
    //获取变量的地址:用取地址符号 &
    //1、定义变量
    int age=-1;
    //2、给一个提示,让用户输入一个年龄
    printf("请输入年龄:\n");
    //把用户输入的值,放到age变量中
    //如果输入的是小数,此时age只保存整数部分
    scanf("%d",&age);  //获取了age这个变量的地址
    //3、打印用户输入的年龄
    printf("您输入的年龄是:%d\n",age);  //
}
int main(int argc, const char * argv[]) {
    //接收一个小数
    float score=0.0f;
    printf("请输入一个分数:\n");
    //接收用户输入的值保存到score中
    scanf("%f",&score);  //此处不允许写%m.nf,但是%mf是可以的
    //打印score的值
    printf("%3.2f\n",score); 
    return 0;
}

十二、scanf使用注意事项    

1、scanf使用注意事项 

注意:

1)如果在输入时,输入了多个空格、回车、Tab都会被系统忽略的。

2)如果要获取的内容是多个整数,中间输入了多个空格、回车、Tab都会被系统忽略 

3)非法的格式输入,得不到想要的结果 

4)混合整形和字符型数据接收当整形的数和字符混合输入时,要避免“空格” 添麻烦

为防止混合输入空格造成的错误,可以通过添加普通的分隔符解决

2、scanf中的修饰符 

scanf函数的修饰符有:数据读入宽度(域宽)、*和长度

 

标识符 

意义 

域宽 

指定输入数据的宽度 

跳过相应数据不作处理 

l或h 

读入长整形、双精度型或短整型数据

#include <stdio.h>
void test(){
    //scanf的注意事项
    //0、scanf函数当遇到回车的时候,会结束执行
    //1、接收单个变量值的时候,在输入值之前,如果我们输入了空格 回车 tab,都会被忽略
    int age=-1,num=-1;
    //%d%d,要求我们在键盘上输入的时候,输入两个整数,并且以空格或者回车隔开12 34
    //输入完第一个数以后,如果中间添加了回车 空格 tab 都会被忽略
    scanf("%d%d",&age,&num);
    printf("age = %d,num = %d\n",age,num);
    //12,34  age 12 num -1
}
void test2(){
    int a=-1,b=-1;
    char ch;
    //接收键盘输入的值
    //scanf("%d,%c,%d",&a,&ch,&b);
    scanf("%d%c%d",&a,&ch,&b);
    //打印变量的值
    printf("%d,%c,%d\n",a,ch,b);  // 理想:12,a,45 实际:12, ,-1
}
void test3(){
    //关于*号的使用
    int a,b;
    a = b = -1; //连续赋值
    // %*d 跳过一个整数
    scanf("%d%*d%d",&a,&b);
    printf("%d,%d",a,b);
}
int main(int argc, const char * argv[]) {
    int age=-1;
    //关于scanf中,尽量不要使用 \n
    //如果一不小心使用了,怎么破
    // 1) 输入值后,随便输入一个内容
    // 2) \n要原样输入
    scanf("%d\n",&age);
    printf("age = %d\n",age);
    return 0;
}

                              -------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值