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题的话,c语言进行计算时,即便是前面认为d的类型是int ,但由于出现了double型,还是会自动转换吧,如果没有加(int)
追答你说得也对。但是,只有在d参与运算的表达式中会自动提升到double型,这里d只是所谓“左值”变量,就是等号右边的运算结果要赋值给它;这时遵照的法则是只把右值表达式的整数部分赋给左值变量d而忽略小数部分。自动类型转换是临时的,只在运算时使用一下,不永久改变变量原来的类型。
追问恩,谢谢
太给力了,你的回答完美解决了我的问题!