关于c语言的问题: 拜托大家给我解答这两道题,我想知道为什么,

2025-03-28 16:40:20
推荐回答(4个)
回答1:

你的程序有问题,分析题意,我做了一点变化:
1、有以下程序
printf("%o %o\n",m,n);

2、已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。输出结果是
a=a-'A'+'0';
对于第一题:m=0256,赋值语句将m变为八进制数,所以,输出时以八进制直接输出256,;n=256,n是十进制变量,以八进制输出时,系统自动转换,就是400.
对于第二题:getchar()只提取一个字符赋给a,故a='B',scanf()则是输入int型到b,则b的值为33,之后是相应的运算,只有自己体会,无法向你说明白!

回答2:

1 A
m = 0256 ,这是8进制数256,因此用8进制显示就是256
n = 256,这是10进制数256,用8进制显示就是400

2 A
a = a - A + 0;//该句会报错,A未定义,应是'A'才对

回答3:

1.m=256,n=400
%o是输出八进制数,0256本身是八进制数,而256是十进制,需转换成八进制。
2.1 B
首先你的程序没定义A,其次,a应该以整数输出是吧
加上char A,并且printf("%c %c",a,b);改成printf("%d %c",a,b);
B-A是1;b=33*2=66,再改成字符型是B

回答4:

除8取余

a=a-A+'0' 这时 a='1'

b=b*2; ==66 66的ASCII代表的是B

所以答案是 B