计算机等级二级C语言实例解答
C语言涉及的概念复杂、规范、灵活、易错,很多初学者觉得很难。下面举几个例子来说明C语言学习中一些容易混淆的问题,以便提供一些建议,帮助初学者。
问题1:以下程序
int a=3,b = 4;
char str = ' c
printf("%d,%d ",a,b,str);
执行后,输出结果是:
(A)3,4,c
(C)3,4 (D)程序错误
分析:在格式输出中,一般要求格式说明符与输出项一致。当输出项有多余的格式说明符时,多余的输出项不会输出,所以答案是c。
问题2:有以下几个节目片段
char a[3],b[]=“中国”;
a = b;
printf("%s ",a);
输出结果是:
(a)运算后输出China)运算后输出ch(c)运算后输出chi(d)编译错误
解析:此题容易选错A。实际答案是d .由于数组名作为数组的第一个地址是一个常数,所以给常数赋值的语句是错误的。换句话说,你不能用赋值语句直接把一个字符常量或者一个字符数组赋给一个字符数组,选择D作为答案。
问题3:下列说法不正确:
(A)char a[10]=“中国”(b)char a[10],p=a;p= "中国"(c)夏尔p;p= "中国"(d)夏尔a[10],p;p=a= "中国";
解析:这个问题很容易知道A是对的,D是错的,所以很难选择B和c,有人认为P是一个字符变量,把“中国”赋给它是错的。其实就是一个指针变量,只能指向一个字符变量或者其他字符类型的数据。而不是将“中国”存储在P中(指针变量只存储地址),而是只将“中国”的第一个地址赋给指针变量P,所以B和C是正确的。
问题4:以下程序的执行结果是:
主()
{ int x[5]={2,4,6,8,10},ppp;
p = x;
PP = & & p;
printf("%d",(p++));
printf("%d\n",pp);
}
(A)4 4 (B)2 4
2 2 (D)4 6
解析:本题中,p++是一种后置加法。先输出P的值,然后P自己加。pp是二级指针,指向一级指针p,第一条output语句执行前后,有如下指向关系:
所以,这道题应该选b。
问题5:执行以下output语句后,结果是:
int I = 3;
printf("%d ",-i++);
(A)3 (B)4
(C)-3 (D)-4
解析:本题考察的是运算符的优先级。负运算符和++运算符优先级相同,组合方向是“从左到右”,即-I++等价于-i++,所以先取出I的值3,输出-I的值-3,再把I的值增大到4,而不是I先把值增大到4再输出-4,所以答案是c。
问题6:提供以下陈述,
结构st
{ int n;
圣next教堂;
};
静态结构圣a[3]={5,&&a[1],7,&&a[2],9,'[44]'},p;
则值为6的以下表达式为:
(A)p++→n (B)p→n++
(C)(p).n++ (D)++p→n
解析:本题还考察了运算符的优先级,→优先级高于++的,组合方向是从左到右,后一种组合方向是从右到左。答案A相当于P++→ N。
答案B相当于P → N++,所以表达式A、B、C的值都是5,答案D相当于++P → N自加,所以它的值是6。
以上是我的学生在教学过程中比较集中的一些问题。只要你认真体会和总结,加强上机实践,对你的C语言学习大有裨益。
0条评论