2004年9月二级C语言的几个选择题

(13) 以下定义语句中正确的是 A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; 答案是C B为什么不对? (18) 有以下程序 main() { int m=0256,n=256; printf("%o %o\n",mn,n); } 程序运行后的输出结果是 A) 0256 0400 B) 0256 256 C) 256 400 D) 400 400 答案是C 为什么不是A?八进制不是要在前面加0吗? (23) 下列条件语句中,功能与其他语句不同的是 A) if(a) printf("%d\n",x); else printf("%d\n",y); B) if(a==0) printf("%d\n",y); else printf("%d\n",x); C) if (a!=0) printf("%d\n",x); else printf("%d\n",y); D) if(a==0) printf("%d\n",x); else printf("%d\n",y); 答案是C 我知道=是赋值 ==是判断是否相等,那!=是赋值还是判断是否相等? (27) 以下能正确定义二维数组的是 A) int a[][3]; B) int a[][3]=2{2*3}; C) int a[][3]={}; D) int a[2][3]={{1},{2},{3,4}}; 我的书答案是B,我同学的答案是C,到底是哪个,分析一下吧 A为什么不对呢 (42) 有以下程序 main() { char s[]"Yes\n/No",*ps=s; puts(ps+4); *(ps+4)=0; puts(s); } 程序运行后的输出结果是(选项D中的第一行是空行) A) n/No B) /No C) n/NO D) Yes Yes Yes /No /No /No Yes 答案是B 不明白什么意思 (43) 有以下程序 main() { unsigned int a; int b=-1; a=b; printf("%u",a); } 程序运行后的输出结果是 A) -1 B) 65535 C) 32767 D) -32768 答案是B 不知道怎么算 (13) 以下程序中, for循环体执行的次数是 【13】 。 #define N 2 #define M N+1 #define K M+1*M/2 main() { int i; for(i=1;i<K;i++) { ... } ... } 答案是4 请解释展开过程 谢谢大家

第1个回答  2019-05-09
13,
B)
float
a=b=10.0;
定义变量时的变量名要用逗号隔开,改成这样才对:
float
a,b;
a=b=10.0;
18,只有赋值输入时,需要书写格式,输出是不会有格式符的;
23
!=为逻辑运算符,符号两边不相等返回1,相等返加0;
27
数组可以分两种定义,一种叫显示定义,一种叫赋值定义
A)
int
a[][3];
//显示定义,但第一维未指明
B)
int
a[][3]={2*3};
//赋值定义,第一维是1;
C)
int
a[][3]={};
//未赋值,第一维未指明
D)
int
a[2][3]={{1},{2},{3,4}};
赋值越界
42
main()
{
char
s[]"Yes\n/No",*ps=s;
//串中的\n为一个字符,
puts(ps+4);
//从下标为4的位置输出字符串也就是:/No
*(ps+4)=0;
//在下标为4的位置赋值为ascii码0;也就是'\0'
puts(s);//输出字符串,也就从第0个字符到*(ps+4)
//所指的'\0'这个置
}
43,补码知识
13,编译预处理
#define
N
2
#define
M
N+1
#define
K
M+1*M/2
K=M+1*M/2=N+1+1*N+1/2=2+1+1*2+1/2=2+1+2+0=5
//其中int
1/2=0
for(i=1;i<K;i++)
i=1,2,3,4成立执行循环体四次;
相似回答