一些c语言题求详解

2.

已知:char a=’a’;float b=2.3;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为
(A) int (B) char (C) float (D) double

3.

字符串“\ta\017bc”的长度(不包括结束符)是
(A) 9
(B) 5
(C) 6
(D) 7

4.

设整型变量x和y的值均为7,则表达式“x/(y-4)”的值是
A. 3
B. -3
C. 2
D. 1

6.

若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为:
A. scanf("%d%f",a,b);
B. scanf("%d%f",&a,&b);
C. scanf("%d%lf",&a,&b);
D. scanf("%d%lf",a,b);

7.

若变量a的数据类型为double,执行下面两条语句后:
a=3.5;
printf("%d",a);
输出的数据或判断正确的是:
A. 3
B. 4
C. 3.500000
D. 输出格式错误

8.

在执行以下程序过程中
#include<stdio.h>
void main() {
char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c5,c6);
}
如果输入数据:
987<CR>
65432<CR>
(注意:从第一列开始,<CR>表示回车)
输出结果为
(A)9843
(B)9854
(C)9832
(D)9865

由于这是刚上完两节留的作业,越详细越好。。。。。。。。。

2.A(d的类型不变)
3.B(\t a \017 b c)
4.C(取整7/3=2)
6.C(%d对应int型a,%lf对应doublr型b)
7.D(一般会输出0)
8.D(注意scanf要等CR才生效,而getchar不等待CR)追问

2题的话,c语言进行计算时,即便是前面认为d的类型是int ,但由于出现了double型,还是会自动转换吧,如果没有加(int)

追答

你说得也对。但是,只有在d参与运算的表达式中会自动提升到double型,这里d只是所谓“左值”变量,就是等号右边的运算结果要赋值给它;这时遵照的法则是只把右值表达式的整数部分赋给左值变量d而忽略小数部分。自动类型转换是临时的,只在运算时使用一下,不永久改变变量原来的类型。

追问

恩,谢谢

太给力了,你的回答完美解决了我的问题!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-16
2A:不改变
3A:我不怎么确定
4C:整形自动去余数
6C:只有它是对的
7D:应该为printf("%lf",a);
8D:
第2个回答  2013-09-16
2.B 3.D 4.C 6.B 7.A 8.D
第3个回答  2013-09-17
第三题选c
相似回答