竞赛(变量定义、赋值及转换)

1.打印ASCII码

竞赛(变量定义、赋值及转换)

点睛:打印函数中%d 很重要,直接将字符类型转换为10进制,进而打印出ASCII码值

2. 分别定义int,short类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。

可以直接在sizeof括号内输入int  short

竞赛(变量定义、赋值及转换)

3. 分别定义bool,char类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。

新概念:bool类型

在C语言中,没有bool这种类型,但是在C++中,把bool当做一种基本的数据类型。

可以变成_Bool,占用一个字节

为了让我们能够写出与C++兼容的代码,添加了一个头文件<stdbool.h>

竞赛(变量定义、赋值及转换)

注意要引头文件!

4.输出“hello world!”所占空间大小

先来一个明显的错误示范

竞赛(变量定义、赋值及转换)

这个是错误代码!!!!!!!!!!!

char是用来存放字符数据的,例:'x'和  '*'

所以打印出来答案恒为1.

在此处" Hello, World!"明显超出了这个范围,因此我们没有必要先用char来声明,我们可以直接输出sizeof(" Hello, World!"),这样得出的值就是整数,可以直接输出

竞赛(变量定义、赋值及转换)

TIP:如何定义字符串,可以用char定义,然后存放在数组里面

例:char arr[]="  hello world!   "

5.有两个变量a和b,在执行了如下代码后:

a = 1.000000001;

b = a;

printf("%.9f %.9fn", a, b);

输出两个数:1.000000001 1.000000000

请问a和b分别是以下哪种类型?

A. bool   B. char   C. short   D. int   E. float   F. double

答案为F E

double和float的区别在于有效数字位数, 

b的最后一个1没了,说明b的精度没有a高

有效位数之外的数字会生成随机数

此题考点在与区分float 和 double

6.有两个变量a和b,在执行了如下代码后:

a = 32768;

b = a;

printf("%d %dn", a, b);

输出两个数:32768 -32768

请问a和b分别是以下哪种类型?

A. bool   B. char   C. short   D. int   E. float   F. double

TIP:int和short的区别:

一、字节数不同

1、int:int占用32字节,32比特。

2、short:短整型变量不得低于16位,即两个字节。

二、范围不同

1、int:数据范围为-2147483648~2147483647[-2^31~2^31-1]。

2、short:数据范围为范围-32768~+32767。

而此题变量a为32768,超出了short表示的范围,就会从-32768开始循环

7.ASCII码值转换

输入一个整数,即字符的ASCII码,保证存在对应的可见字符。输出一行,包含相应的字符。样例输入

65

样例输出

A

竞赛(变量定义、赋值及转换)

若简单地这样输入,会报错

竞赛(变量定义、赋值及转换)

应加入判断语句

EOF用法:

EOF适用范围:

针对多组输入输出且数据没有固定数据量问题:采用while(scanf("%d",&n) != EOF)

发表评论

相关文章