S
sunjunfeng3
Unregistered / Unconfirmed
GUEST, unregistred user!
俺是边看边哭
---------------------------------------------------------------------------------------
二级C语言实例解答
2004年07月30日 赛迪网 山东 崔永良
C语言牵涉的概念比较复杂,规范繁多,使用灵活,容易出错,不少初学者感到困难,下面通过几个实例的分析来说明c语言学习中容易混淆的几个问题,以期抛砖引玉,对初学者有所帮助。
问题1:下面的程序
int a=3,b=4;
char str=’c’;
printf(“%d,%d”,a,b,str);
执行后, 输出结果为:
(A)3,4,c (B)3 4 c
(C)3,4 (D)程序出错
分析:在格式输出时一般要求格式说明符与输出项相一致,当输出项多余格式说明符时多余的输出项不输出,所以答案为C。
问题2:有下面的程序段
char a[3],b[]=“china”;
a=b;
printf(“%s”,a);
则输出结果为:
(A)运行后输出china (B)运行后输出ch (C) 运行后输出chi (D)编译出错
分析:这个题容易错选a?实际答案为d,由于定义了字符数组后,数组名作为数组的首地址,是一个常量,给一个常量赋值的语句是错误的,换句话说,不能用赋值语句将一个字符常量或字符数组直接赋值给一个字符数组,以答案选D。
问题3:下列说明不正确的是:
(A)char a[10]=“china” (B)char a[10],?p=a;p=“china” (C)char ?p;p=“china”(D)char a[10],?p;p=a=“china”;
分析:此题易知A是正确的,D是错误的,对于B、C就很难选择了。有人认为p是一个字符变量,以为把”china”赋给该字符变量是不对的,实际上它是一个指针变量,只能指向一个字符变量或其他字符类型数据,不是把”china”存放到p中(指针变量只存放地址),只是把
“china”的首地址赋给指针变量 p,所以B,C也是正确的。
问题4:下面的程序执行结果是:
main()
{int x[5]={2,4,6,8,10},?p???pp;
p=x;
pp=&&p;
printf(“%d”,?(p++));
printf(“%d/n”,??pp);
}
(A)4 4 (B)2 4 (C)2 2 (D)4 6
分析:在此题中p++是后加方式,先输出?p的值,p再自加,pp是二级指针,指向一级指针p,执行第一条输出语句前后,存在下列指向关系:
所以本题应选b
问题5:下列输出语句执行后结果为:
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:设有以下语句,
struct st
{int n;
struct st ?next;
};
static struct st a[3]={5,&&a[1],7,&&a[2],9,’/0’},?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语言的学习会大有裨益。
------------------------------------------------------------------------------------------
出题的人不是畜生也是流氓,这随便选这么几道题都有问题 看看 3.4.6题,根本就是错误的,那些出题的猪又不经过测试就拿出来考人,对考生的严重不负责,看看第三题 他说B,C都正确,真不知道这位出题的高人怎么了得,我大惊反来复去的测试得出BC都是错的要使B,C正确必须前面加*号即 B)char a[10],?*p=a;p=“china” (C)char ?*p;p=“china”
还有第四题 明明是错误的 编译通不过 那硬要问你结果如何且看
main()
{int x[5]={2,4,6,8,10},?p???pp;
p=x;
pp=&&p;
printf(“%d”,?(p++));
printf(“%d/n”,??pp);
}
无论怎么都说不过去吧 p=x 这里x已经是地址了能赋值给整型!!!还有最经典的是pp=&&p;我反来复去看不懂,而且在vc上编译都错,我十在想不出来是我的错,出题人到底想做什么明明&&是逻辑与运算符,他用在这里小弟实在看不懂,是想表达pp=(pp&&p)呢还是pp=&(&p) 我想应该是他当初是pp=&(&p) ,而定义*p **pp 两个指针吧 ,可是这又是什么意思 那样p=x;这一句正确了,可是pp=&(&p) 括号里面的取p的地址,而外面还要取一次,这是他想取撒?取内裤吗!!!后面的就不想说了
----------------------------------------------------------------
计算机等级考试分笔试和上机 笔试用铅笔图机读卡-铅笔是最容易被图改的,而又是机器改卷,且过后你永远无法拿到曾经的试卷,如果被人暗算是百发百中的;上机考试更是不思议,考完后题被复制走然后,而这一切都是在考生走了之后,而且之后不留任何备份,过于不过,由老师或上面的人说了算,即使你想查自己的考题是不可能的,而且这个过程完全可以被人替做等等.今天偶而在网上看到二级的试题分析,真的想吐了,那些题给大家贴上来看看 ,也只那么几道就出这么大的乱子,看了我想哭.
大学里黑呀,小弟学C++也有近四年了,由于爱好,很早就自学起了,用VC++和DELPHI+SQL SERVER做过几个中型项目,还代过低年级学生的辅导C课程,在本校学算得上是前一二,曾参加计算机等级二级考试多达三次,到现在还没有过二级,白白送了人民币,每次考试下来我都沾沾自喜,题做得很拿手,可是第次都没过,而且都是差几分那样子,我要求学校拿试卷下来我看 他们却所是不可能的,这样的考试制度怎么了得,而那些整天没来上课的人,才学半年的人过关率在80%以上,我看着自己太可怜了(申明:我在学校跟大多数老师的关系很不好)我已经对这个等级考试不抱希望了 ,我现在正在报考高程,学校是畜生之所吗
---------------------------------------------------------------------------------------
二级C语言实例解答
2004年07月30日 赛迪网 山东 崔永良
C语言牵涉的概念比较复杂,规范繁多,使用灵活,容易出错,不少初学者感到困难,下面通过几个实例的分析来说明c语言学习中容易混淆的几个问题,以期抛砖引玉,对初学者有所帮助。
问题1:下面的程序
int a=3,b=4;
char str=’c’;
printf(“%d,%d”,a,b,str);
执行后, 输出结果为:
(A)3,4,c (B)3 4 c
(C)3,4 (D)程序出错
分析:在格式输出时一般要求格式说明符与输出项相一致,当输出项多余格式说明符时多余的输出项不输出,所以答案为C。
问题2:有下面的程序段
char a[3],b[]=“china”;
a=b;
printf(“%s”,a);
则输出结果为:
(A)运行后输出china (B)运行后输出ch (C) 运行后输出chi (D)编译出错
分析:这个题容易错选a?实际答案为d,由于定义了字符数组后,数组名作为数组的首地址,是一个常量,给一个常量赋值的语句是错误的,换句话说,不能用赋值语句将一个字符常量或字符数组直接赋值给一个字符数组,以答案选D。
问题3:下列说明不正确的是:
(A)char a[10]=“china” (B)char a[10],?p=a;p=“china” (C)char ?p;p=“china”(D)char a[10],?p;p=a=“china”;
分析:此题易知A是正确的,D是错误的,对于B、C就很难选择了。有人认为p是一个字符变量,以为把”china”赋给该字符变量是不对的,实际上它是一个指针变量,只能指向一个字符变量或其他字符类型数据,不是把”china”存放到p中(指针变量只存放地址),只是把
“china”的首地址赋给指针变量 p,所以B,C也是正确的。
问题4:下面的程序执行结果是:
main()
{int x[5]={2,4,6,8,10},?p???pp;
p=x;
pp=&&p;
printf(“%d”,?(p++));
printf(“%d/n”,??pp);
}
(A)4 4 (B)2 4 (C)2 2 (D)4 6
分析:在此题中p++是后加方式,先输出?p的值,p再自加,pp是二级指针,指向一级指针p,执行第一条输出语句前后,存在下列指向关系:
所以本题应选b
问题5:下列输出语句执行后结果为:
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:设有以下语句,
struct st
{int n;
struct st ?next;
};
static struct st a[3]={5,&&a[1],7,&&a[2],9,’/0’},?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语言的学习会大有裨益。
------------------------------------------------------------------------------------------
出题的人不是畜生也是流氓,这随便选这么几道题都有问题 看看 3.4.6题,根本就是错误的,那些出题的猪又不经过测试就拿出来考人,对考生的严重不负责,看看第三题 他说B,C都正确,真不知道这位出题的高人怎么了得,我大惊反来复去的测试得出BC都是错的要使B,C正确必须前面加*号即 B)char a[10],?*p=a;p=“china” (C)char ?*p;p=“china”
还有第四题 明明是错误的 编译通不过 那硬要问你结果如何且看
main()
{int x[5]={2,4,6,8,10},?p???pp;
p=x;
pp=&&p;
printf(“%d”,?(p++));
printf(“%d/n”,??pp);
}
无论怎么都说不过去吧 p=x 这里x已经是地址了能赋值给整型!!!还有最经典的是pp=&&p;我反来复去看不懂,而且在vc上编译都错,我十在想不出来是我的错,出题人到底想做什么明明&&是逻辑与运算符,他用在这里小弟实在看不懂,是想表达pp=(pp&&p)呢还是pp=&(&p) 我想应该是他当初是pp=&(&p) ,而定义*p **pp 两个指针吧 ,可是这又是什么意思 那样p=x;这一句正确了,可是pp=&(&p) 括号里面的取p的地址,而外面还要取一次,这是他想取撒?取内裤吗!!!后面的就不想说了
----------------------------------------------------------------
计算机等级考试分笔试和上机 笔试用铅笔图机读卡-铅笔是最容易被图改的,而又是机器改卷,且过后你永远无法拿到曾经的试卷,如果被人暗算是百发百中的;上机考试更是不思议,考完后题被复制走然后,而这一切都是在考生走了之后,而且之后不留任何备份,过于不过,由老师或上面的人说了算,即使你想查自己的考题是不可能的,而且这个过程完全可以被人替做等等.今天偶而在网上看到二级的试题分析,真的想吐了,那些题给大家贴上来看看 ,也只那么几道就出这么大的乱子,看了我想哭.
大学里黑呀,小弟学C++也有近四年了,由于爱好,很早就自学起了,用VC++和DELPHI+SQL SERVER做过几个中型项目,还代过低年级学生的辅导C课程,在本校学算得上是前一二,曾参加计算机等级二级考试多达三次,到现在还没有过二级,白白送了人民币,每次考试下来我都沾沾自喜,题做得很拿手,可是第次都没过,而且都是差几分那样子,我要求学校拿试卷下来我看 他们却所是不可能的,这样的考试制度怎么了得,而那些整天没来上课的人,才学半年的人过关率在80%以上,我看着自己太可怜了(申明:我在学校跟大多数老师的关系很不好)我已经对这个等级考试不抱希望了 ,我现在正在报考高程,学校是畜生之所吗