您当前的位置:首页 > 互联网教程

c语言题目,

发布时间:2025-05-17 08:45:16    发布人:远客网络

c语言题目,

一、c语言题目,

1、因为98是int类型,被赋给char型变量时会自动转型为ASCII码表中数字98对应的字符'b',所以这句执行完,c1存放的是字符'b',不是98。

2、printf("%d%c\n", c1, c1- 32);

3、控制字符串里的第一个格式说明符%d把后面的第一个参数c1以整数(int)类型输出,第二个格式说明符%c把后面的第二个参数(c1- 32)以字符(char)类型输出。因为此时c1实际代表字符'b',当它被转化成int类型时,会先按照ASCII码表转化成int型数字98,所以第一个输出是98。根据C语言自动类型转换规则:char型参与运算时,必须先转换成int型。所以(c1- 32)相当于(98-32),运算结果是int型整数66,当int数通过%c指定转化成char型的时候,又根据ASCII码表转化成对应字符'B',所以第二个输出是B。

二、c语言中a、 b怎么转换成97、98

1、首先需要知道字符本来就是用ascII码储存的,所以需要函数转换。打开VS。

3、红色方框内,将变量定义为char类型,然后输出的时候输出为%d(ASII码)。

4、写好代码后按下F7或者依次选择构建-组建,等待结果如果所示即可。如果出现1 error,表示代码出错,具体错误可根据提示排除。

5、按下Ctrl+F5执行程序,也可以选择构建-执行,运行代码,如此a b转换为97 98。

三、C语言问题

1、这里应该说可以选A也可以选择 D,看不同理解了。

2、是这样的, a='\';是显然错误的,在 C语言中\后面是不能为空的,\是一个特殊的字符,后面的部分是作为输入 ASCII码和特殊字符的标志,因此,如果要令 a为字符\,就必须写成 a='\\',这样系统才能识别,同样的,如果要让 a为'或者"这类特殊字符,也是要这么写的。

3、对于 c='\0xab'是 warning。具体运行的时候是这么处理的。'\0xab'相当于四个字符\0, x, a, b。在字符串中,16进制是直接表示成 x..不用写成 0x..这里其实应该写成 c='\xab',就没有warning了,因为这样系统就自动识别这个字符为 ASCII码为16进制数(ab)所代表的字符了。

4、但是这么些为什么能通过编译呢?在 C语言里,其实并不存在正真的 char,而是一个数,存放 ASCII码,因此 char和 int是互通的,只不过 int是 32位有符号,而 char是 8位无符号。于是这里'\0xab'表示的就是256进制中数位从高到低每一位ASCII码表示的字符分别为 0 x a b的数,显然这个数很大,而又由于 char是无符号的8位整数,也就相当于把这个大数 Mod 256,因此,此时 c='b'

5、同样的道理,对于这么一句话 prinf("%c%d\n",'ab','ab')

6、因为 a对应的 ASCII码是 97, b是 98,而 24930也就是 97* 256+ 98

7、转换成 char格式的时候,mod了 256,也就是98,也就是 b

8、这样的好处就是,比如要开一个 2000000的大数组,如果写成 f[2000000],那么需要 10个字符,而如果写成 f[''],同样是开了200万多一点的数组,但是却只要 8个字符,这样就省下了2个字符,在一些比赛 C语言技巧的地方,或者有兴趣玩玩缩短代码游戏的地方就会派上用场了。