第5章 数据类型和表达式(2)

2019-04-13 19:47

}

输出: 1 2 3 4 5 6 7 8 9 10 输出位 f g d e h j k

\\t跳格的绝对位置8个。但,如果已经有2个了,就跳6格再接着打印跟在后面的字符,如下: 1、前面有2个,如:21\\tx // 输出6个空格 则会输出:21空空空空空空x // 第9个位置上打印x 2、前面没有,如: \\tx // 输出8个空格 则会输出:空空空空空空空空x // 第9个位置上打印x 3、前面有7个,如:1234567\\t // 输出1个空格 则会输出:1234567 x // 第9个位置上打印x 4、前面有8个,如:12345678\\tX // 输出8个空格 则会输出:12345678X // 第17个位置上打印x 5、前面有9个,如:123456789\\tX // 输出7个空格 则会输出:123456789空空空空空空空X // 第17个位置上打印x

举例:

#include main()

{ printf(“21\\t3\\n”); //出现6个空格,第9位是3 printf(“\\t3\\n”); //出现8个空格,第9位是3 printf(“1234567\\tx\\n”); //出现1个空格,第9位是x

printf(“12345678\\tx\\n”); //出现8个空格,第17位是x printf(“123456789\\tx\\n”); //出现7个空格,第17位是x }

5.2.2 变量

在程序运行过程中,其值可以改变的量称为变量。C语言中遇到的所有变量都必须先定义,然后才能使用。定义变量时需要确定变量的名字和数据类型。 1、变量名

变量名应该采用一个合法的表示符,如average(平均)、price(价格)、sum(总数)等,其中的英文字母习惯用小写字母。变量名的选择应尽量遵循“见名知义”的原则,用有明确含义的英文单词(或拼音)来作为名字,这样看到变量名就知道它代表的含义,便于自己或他人阅读程序。 变量名中的英文字母习惯上用小写字母。 2、变量的类型

C语言中,常量的数据类型通常由书写格式决定,而变量的数据类型在定义时指定。用于定义变量的基本数据类型见表5.1所示。 3、变量的定义方法

变量定义的一般形式是: 类型名 变量表;

类型名必须是有效的数据类型,变量表中可以有一个变量名或由逗号间隔的多个变量名。 定义变量需要确定变量的名字和数据类型,每个变量必须有一个名字作为标识,变

6

量名代表内存中的一个存储单元,用于存放该变量的值,而该存储单元的大小由变量的类型决定。例如:字符型变量用来存放字符,需个1个字节,而整型变量用来存放整数,需4各字节。 4、变量的使用 定义变量后,就可以使用它,在程序中使用变量,就是使用该变量所代表的存储单元。 对变量的使用,包括赋值和引用。在定义变量后,首先应该对它赋值,然后就可以在该程序中引用它的值,必要时还可以改变它的值,即再次赋值。 对变量的赋值有3种方法。

(1)在定义变量时对它赋值,称为变量赋初值。例如:

int a = 5 , b = 3 ;

(2)在可执行语句中,用赋值表达式对变量赋值。例如: int a , b ; a = 5; b = 3;

(3)调用输入函数对变量赋值。例如: int a , b;

scanf(“%d%d”,&a,&b);

运行时输入: 5 3 对变量a 和 b 分别赋值5和3。

5.3 数据的输入和输出

C语言中,数据的输入和输出都是通过函数调用来实现的。

5.3.1 整型数据的输入和输出

调用函数scanf()和printf()实现整型数据的输入和输出时,应根据数据的类型和输入输出的形式,在函数调用的格式控制字符中使用相应的格式控制说明,见表5.3所示。 基本的格式控制说明有:%d ( 以十进制形式输入/输出一个整数)、%o (以八进制形式输入/输出一个整数) 、%x (以十六进制形式输入/输出一个整数),%u (以十进制形式输入/输出一个无符号整数)。

在格式控制说明中,可以加宽度限定词,指定整型数据的输出宽度。例如:输出格式控制说明为%md,指定了数据的输出宽度为m( 包括符号位 ),若数据的实际位数(含符号位)小于m,则左侧补空格,若大于m,则按实际位数输出。

表5. 3 格式控制说明 ( 整型数据 )

数据类型 输入输出形式

十进制 八进制 十六进制 int %d %o %x long %ld %lo %lx unsigned %u %o %x unsigned long %lu %lo %lx

7

例5.2 使用基本格式控制说明%d、%o、%x输入输出整型数据 #include int main()

{ printf(\ printf(\ printf(\ return 0; }

运行结果: 10,12,a

10,8,16

10,a

可以看出数据以十进制、八进制、十六进制3种形式输出一个整数;输出结果以格式控制说明为准。例如,八进制数012就可以用十进制和十六进制的形式输出。因此,不管一个整数采用哪种表现形式,它的数值是确定的。 例5.3 用%o输入整型数据示例 #include int main() { int a,b;

printf(\

scanf(\ // 输进一个8进制数和一个十进制数 printf(\ // ]指定变量b的输出宽度为5 return 0;

}

运行结果:input a,b: 17 17 // 第一个17为8进制数,第二个17是十进制数 15 17 // 8进制17,十进制是15

输入时,用格式控制说明指定的形式来读入数据,以八进制形式读入17,相当于将017(即十进制15)赋值给变量a。以]输出b的值17,左端补了3个空格。 5.3.2 实型数据的输入和输出

调用函数scanf()和printf()实现实型数据的输入和输出时,在函数调用的格式控制字符串中使用相应的格式控制说明,见表5.4所示。 表 5. 4 格式控制说明( 实型数据 )

函数 数据类型 格式 含义 printf float %f 以小数形式输出浮点数(保留6位小数)

double %e 以指数形式输出浮点数(小数点前面有且仅有一位非零的数字

%f

scanf float %e 以小数形式或指数形式输入一个单精度浮点数 %lf

double %le 以小数形式或指数形式输入一个双精度浮点数

8

输出浮点数时,单精度和双精度浮点型数据使用相同的格式控制说明%f和%e;输

入浮点数时,格式控制说明%f和%e可以通用。但是,输入double型数据时,在格式控制说明中必须加限定字符 ? l ? ( ? l ? 是long的首字母 )。

双精度double型数据的输入格式控制说明必须用%lf或%le 。

在输出格式控制说明中,可以加宽度限制,指定实数数据的输出宽度。例如,输出格式控制说明%m.nf,指定输出浮点型数据时,保留n位小数,且输出宽度是m ( 包括符号位和小数点 )。若数据的实际位数小于m,左端补空格,若大于m,按实际位数输出。

例5.4 输出数值 #include main()

{ double pi=3.1415926; printf(\

printf(\ return 0; }

运行结果:

3.141593, 3.141593e+000 3.142, 3.14, 3.14

输出pi的值3.1415926时,%5.3f输出3.142 (保留3位小数),%5.2f输出3.14(保留2位小数,左端补1个空格),%.2f输出3.14(保留2位小数,按实际位数)。

5.3.3 字符型数据的输入和输出

字符的输入输出可以调用函数getchar()、putchar()和scanf()、printf() 。 getchar()函数和putchar()函数只能处理单个字符的输入和输出。

scanf()函数和printf()函数除处理整型数据和浮点型数据的输入输出外,也可以处理字符型数据的输入和输出。此时,在函数调用格式控制字符串中相应的格式控制说明用 %c 。

例5.5 输入输出字符 #include main()

{ char ch1,ch2,ch3;

scanf(\

printf(\}

运行结果: 输入 abc 输出 a # b # c

若输入 a bc 输出 a # # b

若printf() 函数里是连续的%c%c%c,则输入多个字符时,这些字符之间不能有间隔。

9

如果使用了间隔符(如空格 ? ? )。由于它本身也是字符,该间隔符就被作为输入字符。输入字符 a 后,输入了一个空格,所以ch2的值是? ?,ch3的值是 ? b ? 。 与字符型常量在程序中的表示不同,输入/输出字符时,字符两侧没有单引号(如ch1、ch2、ch3)。

C语言中,一个字符型数据在内存中用一个字节存储它的ASCII码,它即可以按字符形式输出,也可以按整型形式输出。按字符形式输出时,可以调用函数putchar()或printf()(格式控制说明用%c),系统自动将存储的ASCII码转换为相应的字符后输出;按整数形式输出时,可以调用函数printf()(格式控制说明选用%d、%o、%x等),直接输出它的ASCII码。

同样,一个整型(在有效的ASCII码范围内)也可以按字符形式输出,此时,输出字符的ASCII码等于该数。

例5.6 已知字符 ? b ? 的ASCII码值是98 ,? A ? 的ASCII码值是65,写出下列程序的运行结果。 #include main()

{ char ch = 'b';

printf(\ printf(\ printf(\

printf(\

return 0; }

运行结果: b , 98 b , 98 a , 97 B,66

程序中包括了一些字符运算,这在实际编程中是很有用的。例如,如变量ch的值是小写字母 ? a ? ~ ? z ?,则运算ch - ? a ? + ? A ? 把小写字母转换为大写字母。又如,若变量ch的值是数字字符?0 ? ~? 9 ?,运算ch – ? 0 ? 把数字字符转换为数字;若变量val的值是数字0~9,运算val + ? 0 ? 把数字转换为数字字符。

练习1、输入一个十进制数,输出相应的八进制数和十六进制数。例如,输入31,输出37和1F。 练习2、在例5.2源程序2中,如果将程序中的 scanf ( “ %o%d “,&a,&b ); 改为:

scanf (“ %x%d “,&a,&b); 输入不变,输出是什么?

练习3、如果变量ch的值是大写字母,怎样的运算可以把它转换为小写字母?

5.4 类型转换

在C语言中,不同类型的数据可以混合运算。但这些数据首先要换成同一类,然后再作运算。数据类型的转换包括自动转换和强制转换。自动转换由C语言编译系统自动完成,强制转换则通过特定的运算完成。

10


第5章 数据类型和表达式(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:省级机关事业单位在职无房职工住房补贴申请表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: