欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年C语言习题 .pdf

    • 资源ID:32499169       资源大小:302.37KB        全文页数:33页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年C语言习题 .pdf

    - 1 - C 语言第 1 章 C 语言的历史、特点11978 年美电话电报公司(AT&T )的贝尔实验室正式发表了C 语言。2C 语言把括号、赋值、强制类型转换等作为运算符处理。3C 语言的数据类型有整型、实型、字符型、数组型、指针型、结构体类型、共用体类型等。(树、栈、链表等为数据构)4C 语言允许直接访问物理地址,能进行位(bit)操作。第2章 C语言程序的基本结构【例 1】(2002 年4月) 编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑( )。A. 仅为整个程序作注释B. 仅为每个模块作注释C. 为程序段作注释D. 为每个语句作注释【答案】 C 【例 2】(2002 年4月) 以下叙述正确的是( ) 。A. 可以把 define 和if 定义为用户标识符。B. 可以把 define 定义为用户标识符,但不能把if 定义为用户标识符。C. 可以把 if 定义为用户标识符,但不能把define 定义为用户标识符。D. define 和if 都不能定义用户标识符。【答案】 B (define 不是关键字, if 是关键字,所以define 可以定义为用户的标识符。)【例 3】(2002 年9月) 源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括选择合适的标识符注释和( )。A. 程序的视觉组织B. 尽量不用或少用GOTO 语句C. 检查输入数据的有效性D. 设计良好的输出报表【答案】 A (源程序文档中主要包括标识符命名,注释和视觉组织。)【例 4】(2002 年9月) 以下叙述中正确的是( ) 。A. 构成 C语言程序的基本单位是函数。B. 可以在一个函数中定义另一个函数。C. main( )函数必须放在其他函数之前。D. 所有被调用的函数一定要在调用之前进行定义。【答案】 A (C语言是由函数构成的,所以C语言的基本单位是函数,在C语言中不能嵌套定义,就是说不能在函数中定义函数,main() 函数可以放在程序的任意位置,但是程序的执行都是从main()函数开始的,所有被调用的函数一定要在调用之前进行声明。)【例 5】(2002 年9月) 以下选项中合法的用户标识符是( )。A. long B. _2Test C. 3Dmax D. A.dat 【答案】 B 【例 6】(2003 年9月) 以下叙述中正确的是( ) 。A. C程序中注释部分可以出现在程序的任意合适地方。B. 花括号 “ ” 和“ ” 只能作为函数体的定界符。C. 构成 C程序的基本单位是函数,所有函数名都可以由用户命名。D. 分号是 C语言之间的分隔符,不是语句的一部分。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 33 页 - - - - - - - - - - 2 - 【答案】 A 【例 7】(2003 年9月) 若已定义的函数有返回值,则以下关于该函数调用叙述错误的是( ) 。A. 函数调用可以作为独立的语句存在。B. 函数调用可以作为一个函数的实参。C. 函数调用可以出现在表达中。D. 函数调用可以作为一个函数的形参。【答案】 D 在C语言中,当函数有返回值时可以作为表达式或表达式的一部分,而函数调用只能作为实参,不能作为形参。第3章数据类型、运算符、表达式与基本语句31数据类型【例 1】(2000 年4月) 下列变量定义中合法的是( ) 。A. short _a=1-.le-1 B. double b=1+5e2.5 C. long do=0 xfdaL D. float 2_and=1-e-3 【答案】 A 【例 2】(2001 年4月) 以下只有在使用时才为该类型变量分配内存的存储类说明是( ) 。A. auto 和 static B. auto 和 register C. register和 static D. extern 和 register 【答案】 B 根据 C 语言的规定, auto 和register在C语言程序中当它们被用到时才会分配内存,在它们声明时并不占用内存空间的。【例 3】(2002 年4月) 以下选项中不属于C语言类型的是 ( ) 。A. signed short int B. unsigned long int C. unsigned int D. long short 【答案】 D 【例 4】(2002 年9月) 以下选项中合法的实型常数是( ) 。A. 5E2.0 B. E3 C. 2E0 D. 1.3E 【答案】 C 【例 5】(2002 年9月) 已知大写字母 A的ASCII 码的值是 65,小写字母 a的ASCII 码是 97,则用八进制表示字符常量 ,101 ?是( ) 。A. 字符 A B. 字符 a C. 字符 e D. 非法的常量【答案】 A 本题中 101的八进制在十进制表示则是65,也就是 A的ASCII 码值。【例 6】(2002 年9月)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( ) 。A. void B. int C. float D. double 【答案】 B 【例 7】(2003 年9月) 以下选项中可作为C语言合法整数的是( ) 。A. 10110B B. 0386 C. 0Xffa D. x2a2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 33 页 - - - - - - - - - - 3 - 【答案】 C 【例 8】(2003 年9月) 已定义 c为字符变量,则下列语句中正确的是( ) 。A. c=,97? B. c=“ 97” C. c=97 D. c=“ a”【答案】 C 【例 9】(2004 年4月) 以下符合 C语言语法的实型常量是( ) 。A. 1.2E0.5 B. 3.14159E C. 5E-3 D. E15 【答案】 C 【例 10】(2002 年4月) 设有以下变量定义, 并已赋确定的值char w; int x; float y; double z; 则表达式 :w*x+z-y 所求得的数据类型为。【答案】 double 【考点解析】当不同数据类型一起运算时,如果有精度大的数据类型参加时,结果会上最后会以精度大的,这样能保持数据的精度。3 2运算符【例 1】(2000 年4月) 设有 int x=11; 则表达式 (x+*1/3) 的值是 ( ) 。A. 3 B. 4 C. 11 D. 12 【答案】 A 【考点解析】在题目中,有三个运算符,其中“ ” 可以把 1/3 看成一个整体,也就是一个数,那么根据运算符优先级知道,+的优先级比 *高,那么先运行+,再运行 * ,最后结果是 3。【例 2】(2000 年4月) 设 int x=1,y=1; 表达式 (!x|y-)的值是 ( ) 。A. 0 B. 1 C. 2 D. -1 【答案】 B 【考点解析】在这一题中,我们要注意的是- 或+的位置,在这里y- 是指先把 y与!x 进行或运算,后y再减 1,那么这个表达式的值是1。如果 -y 是指y减1后再与 !x 进行或运算。【例 3】(2000 年4月) 设int b=2;表达式 (b2)/(b1)的值是 ( ) 。A. 0 B. 2 C. 4 D. 8 【答案】 A 【考点解析】移位运算是用于一个整数的二进制数向左或向右移动。先是把b化成二进制,再右移两位,则是 0;而右移一位,则是1,所以整个表达式的结果是0。【例 4】(2000 年9月) C 语言中运算对象必须是整型的运算符是( ) 。A. %= B. / C. = D. = 【答案】 A 【考点解析】在C语言程序设计中“ % ” 是表示求余运算,是必须是整形的数据类型,而其它三种运算符的运算对象可以是整形也可以是其它数据类型。【例 5】(2000 年9月) 若已定义 x和y为double 类型,则表达式x=1,y=x+3/2 的值是 ( ) 。A. 1 B. 2 C. 2.0 D. 2.5 【答案】 B 【考点解析】 在这一题中, 我们清楚 C语言中的自动数据类型的转换,在这里 3/2 是整形除以整形,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 33 页 - - - - - - - - - - 4 - 所以结果自动转换成整形,再加上1,所以最后结果是2。【例 6】(2001 年9月) 整型变量 x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是( ) 。A. x | y B. x | y C. x & y D. x y 【答案】 D 【考点解析】 | 是C语言的逻辑或运算符,表示只要有一个表达式为真,则整个表达式都为真;| 是按位或运算符,先是把操作数转化成二进制,再按位进行或运算;&是按位与运算符,先是把操作数转化成二进制,再按位进行与运算;是按位异或运算符,先是把操作数转化成二进制,再按位异或运算,就是相同的为,不同的为1。【例 7】(2002 年9月) 已有定义 :int x=3,y=4,z=5;,则表达式!(x+y)+z-1 & y+z/2的值是 ( ) 。A. 6 B. 0 C. 2 D. 1 【答案】【考点解析】在本题中,优先级最高的是括号,因此先计算x+y,跟着是 ! 的优先级高,即运算!(x+y),接着是 / 的优先级高,即运算z/2 ,再是 +、- 的运算符优先级,在本表达式中优先级最低的是& ,最后的结果是 1。【例 8】(2002 年9月) 设a和b均为 double 型变量,且 a=5.5 、 b=2.5 ,则表达式 (int)a+b/b的值是 ( ) 。A. 6.500000 B. 6 C. 5.500000 D. 6.000000 【答案】 D 【考点解析】在本题表达式中,优先级最高的是int ,跟着是 /,最后是 +。根据优先级分析,先运算(int)5.5,是指对 5.5 取整,这里也是数据类型的强转换。跟着运算b/b ,因为 b是double 类型,则结果也是 double 类型,最后运算“ +” 运算符,则可以计算出最后的结果。【例 9】(2003 年4月) 下列关于单目运算符+、- 的叙述中正确的是( ) 。A. 它们的运算对象可以是任何变量和常量。B. 它们的运算对象可以是char 型变量和 int 型变量,但不能是float型变量。C. 它们的运算对象可以是int 型变量,但不能是double 型变量和 float型变量。D. 它们的运算对象可以是char 型变量、 int 型变量和 float型变量。【答案】 D 【考点解析】在C 语言中, +、- 是单目运算符,分别表示进行加1、减 1运算,一般是在char 、int 、float数据类型中运算。【例 10】(2004 年9月) 有以下定义语句double a,b; int w;long c; 若各变量已正确赋值,则下列选项中正确的表达式是( ) 。A. a=a+b=b+ B. w%(int)a+b) C. (c+w)%(int)a D. w=a=b 【答案】 C 【考点解析】在C 语言程序设计中,表达式不允许作为值来直接赋值给表达式;在表达式中运用“ % ” 时应该注意,运算符“ % ” 的使用对象必须是整型;“ =” 是关系运算符,在这里并不正确,赋值符应该是“ =” 。【例 11】(2004 年9月) 若x和y代表整型数,以下表达式中不能正确表示数学关系名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 33 页 - - - - - - - - - - 5 - x-y 10的是( ) 。A. abs(x-y)-10&x-y10 C. !(x-y)10 D. (x-y)*(x-y)100 【答案】 C 【例 12】(2004 年9月) 设有定义语句:char c1=92,c2=92; 则以下表达式中值为零的是( ) 。A. c1c2 B. c1&c2 C. c1c2 D. c1|c2 【答案】 A 3 3表达式【例 1】(2000 年9月) 若变量已正确定义并赋值,下面符合C语言语法的表达式是( ) 。A. a:=b+1 B. a=b=c+2 C. int 18.5%3 D. a=a+7=c+b 【答案】 B 【考点解析】 表达式是由运算符把字符连接起来所构成的。在上面选项中, A中的字符变量定义错误,C选项不是表达式,D选项中等号左边必须是一个可以确定的值。【例 2】(2001 年4月) 若a为int 类型,且其值为3,则执行完表达式a+=a-=a*a 后, a的值是 ( ) 。A. -3 B. 9 C. -12 D. 6 【答案】 C 【考点解析】 这题中,有多个赋值关系。 从右到左计算, 可以这样理解: 首先 a*a 等于 9,再计算 a=a-9 ,得到 a=-6 ,再计算 a=a+(-6) ,所以最后答案是-12。【例 3】(2002 年4月) 变量 a已被定义为整型,下列表达式不正确的是( )。A. a=A+20 B. a-=a C. a=c+d D. a=c+d 【答案】 C 【考点解析】在语言中我们得知字符变量可以参与任何整数的运算,在项中,c和d如果是字符变量应刻有单引号括住,如果是其它变量应提前定义,以避免编绎出错。【例 4】(2002 年4月) 若有定义: int a=8,b=5,c;执行语句 c=a/b+0.4 后, c的值为 ( ) 。A. 1.4 B. 1 C.2.0 D.2 【答案】 B 【考点解析】在本题中,首先计算的是优先级高的/, a/b(8/5=1),再将 1+0.4 的值赋给 c,由于 c为整型变量所以要将1.4 转换为整型,即是舍弃小数位0.4(c 的值变为 1) 。【例 5】(2002 年9月) 与数学式子对应的 C语言表达式是 ( ) 。A. 3*xn(2*x-1) B. 3*x*n(2*x-1) C. 3*pow(x,n)*(1/(2*x-1) D. 3*pow(n,x)/(2*x-1) 【答案】 C 【考点解析】 在 C语言程序设计中,数学运算次方在C语言中运用函数pow() 来表达, 例如: x的y次方,在C语言中应该这样表达:pow(x,y) ,所在选项中,选项D表达写反了,则只有选项C才是正确的选项。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 33 页 - - - - - - - - - - 6 - 【例 6】(2002 年9月) 以下选项中,与k=n+完全等价的表达式是( ) 。A. k=n,n=n+1 B. n=n+1,k=n C. k=+n D. k+=n+1 【答案】【考点解析】在本题中,k=n+为后辍运算,根据其运算规则,应先把n的值赋给 k,然后 n的值再加上1,选项的表达式与本题中的表达式等价。【例 7】(2003 年9月) 以下选项中非法的表达式是( ) 。A. 0=x100 B. i =j=0 C. (char)(65+3) D. x+1=x+1 【答案】 D 【考点解析】在C 语言程序设计中,表达式不允许作为值来直接赋值给表达式。【例 8】(2004 年4月) 设有定义: float a=2,b=4,h=3;以下语言表达式中与代数式1/2*(a+b)h计算结果不相符的是 ( ) 。A. (a+b)*h/2 B. (1/2)*(a+b)*h C. (a+b)*h*1/2 D. h/2*(a+b) 【答案】 B 【考点解析】本题实质上是要把数学表达式在C语言程序设计中表达出来,在C语言中优先级最高是括号,那么先计算所有的括号,可以看到选项B中的(1/2)结果是 0,那么整个表达式的结果就是0,而其它三项的结果并不是0。第4章程序设计三种基本结构一、选择题:【例 1】(2002 年4月) 下面的程序的输出结果是( ) 。#include main( ) int i=010,j=10; printf(%d,%d,+i,j-); A. 11,10 B. 9,10 C. 010,9 D. 10,9 【答案】 B (i的值是以八进制定义的) 【例 2】(2002 年4月) 以下的程序的输出结果是( ) 。main( ) int a=5,b=4,c=6,d; printf(dn,d=ab?)(ac?a:c):(b); A. 5 B. 4 C. 6 D. 不确定【答案】 C 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 33 页 - - - - - - - - - - 7 - 【例 3】(2002 年4月) 以下程序的输出结果是( ) 。main( ) int a=4,b=5,c=0,d; d=!a&!b|!c;printf(%dn,d); A. 1 B. 0 C. 非0的数 D. -1 【答案】 A 【例 4】(2002 年4月) 以下程序的输出结果是( ) 。main( ) char x=040; printf(%on,x1); A. 100 B. 80 C. 64 D. 32 【答案】 A 【例 5】(2002 年9月) 已知 i ,j ,k为int 型变量,若从键盘输入:1,2,3,使 i 的值为 1、j 的值为 2,k的值为 3,以下选项中正确的输入语句是( )。A.scanf(%2d%2d%2d,&I,&j,&k); B.scanf(%d %d %d,&I,&j,&k); C.scanf(%d,%d,%d,&I,&j,&k); D. scanf(i=%d,j=%d,k=%d,&I,&j,&k); 【答案】 C 【例 6】(2002 年9月) 若有以下程序main( ) int k=2,i=2,m; m=(k+=i*=k); printf(“%d,%dn”,m,i); 执行后的结果是( ) 。A. 8,6 B. 8,3 C. 6,4 D. 7,4 【答案】 C 【考点解析】根据C语言中 printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=k 得i=i*k=2*2=4,k+=i 得k=k+i=2+4=6 ,所以 m的值为 6。输出结果为 m=6 ,i=4 。【例 7】(2003 年4月) 若有以下程序段(n 所赋的是八进制数) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 33 页 - - - - - - - - - - 8 - int m=32767, n=032767; printf(“%d,%on”,m,n); 执行后输出结果是( )。A. 32767,32767 B. 32767,032767 C. 32767,77777 D. 32767,77777 【答案】 A 【例 8】(2003 年4月) 有以下程序段int m=0,n=0,char c=a; scanf(%d%c%d,&m,&c,&n); prinft(%d,%c,%dn,m,c,n); 若从键盘上输入:10A10,则输出结果是( ) 。A. 10,A,10 B. 10,a,10 C. 10,a,0 D. 10,A,0 【答案】 A 【例 9】(2003 年4月) 有以下程序main( ) int i=10,j=1; printf(%d,%dn ,i-,+j); 执行输出的结果是( )。A. 9,2 B. 10,2 C. 9,1 D. 10,1 【答案】 B 【例 10】(2003 年9月) 有以下程序main() int a ;char c=10; float f=100.0;double x; a=f/=c*=(x=6.5); printf(%d %d %3.1f %3.1fn ,a,c,f,x); 程序运行后的输出结果是( ) 。A. 1 65 1 6.5 B. 1 65 1.5 6.5 C. 1 65 1.0 6.5 D. 2 65 1.5 6.5 【答案】 B 【例 11】(2003 年9月) 有以下程序main() int a=1,b=2,m=0,n=0,k; k=(n=ba)|(m=ab); printf(%d,%dn,k,m); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 33 页 - - - - - - - - - - 9 - 程序运行后的输出结果是( ) 。A. 0,0 B. 0,1 C. 1,0 D. 1,1 【答案】 C 【例 12】(2003 年9月) 有定义语句: int x,y;若要通过 scanf(%d,%d,&x,&y);语句使变量 x得到数值 11,变量 y得到数值 12,下面四组输入形式中,错误的是 A. 11 12 B. 11, 12 C. 11,12 D. 11, 12 【答案】 A 【例 13】(2003 年9月) 设有以下程序段:int x=2002,y=2003; printf(“%dn”,(x,y); 则以下叙述中正确的是 A. 输出语句中格式说明符的个数少于输出项的个数,不能正确输出。B. 运行时产生出错信息。C. 输出值为 2002。D. 输出值为 2003。【答案】 D 【例 14】(2003 年9月) 有以下程序main ( ) int x=3,y=2,z=1; printf(%dn,x/y&z); 程序运行后的输出结果是( ) 。A. 3 B. 2 C. 1 D. 0 【答案】 D 【例 15】(2004 年4月) 有以下程序main() int x=102,y=012; printf(%2d,%2dn,x,y); 执行后输出结果是( )。A. 10,01 B. 02,12 C. 102,10 D. 02,10 【答案】 C 【例 16】(2004 年4月) 有以下程序main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 33 页 - - - - - - - - - - 10 - unsigned char a,b; a=4|3; b=4&3; printf(%d%dn,a,b); 执行后输出结果是( )。A. 70 B. 07 C. 11 D. 430 【答案】 A 【例 17】(2004 年9月) 有以下程序main() char a,b,c,d; scanf(%c,%c,%d,%d ,&a,&b,&c,&d); printf(%c,%c,%c,%cn ,a,b,c,d); 若运行时从键盘上输入:6,5,65,66。则输出结果是( ) 。A. 6,5,A,B B. 6,5,65,66 C. 6,5,6,5 D. 6,5,6,6 【答案】 A 【考点解析】在C语言程序设计中,scanf 函数的格式控制参数中“d”表示输入整数,“%c ”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII 码转化为字符。则输出的是6,5,A,B。【例 18】(2004 年9月) 有以下程序main ( ) int m=3,n=4,x; x=-m+; x=x+8/+n; printf(“%dn”,x); 程序运行后的输出结果是( ) 。A. 3B. 5 C. -1 D. -2 【答案】 D 【考点解析】在本题中,根据C语言中 printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m+可以转换成 x=-(m+) ,可得 x的值为 -3 ,而表达式 x=x+8/+n 可以转换成x=x+8/(+n),代入 x的值得 x=-3+8/5=-2 ,所以最后的输出结果是-2。【例 19】(2004 年9月) 有以下程序main ( ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 33 页 - - - - - - - - - - 11 - char a= a,b; printf(“%c ”,+a); printf(“%cn”,b=a+); 程序运行后的输出结果是( ) 。A. b,b B. b,c C. a,b D. a,c 【答案】 A 【例 20】(2004 年9月) 有以下程序main ( ) int m=0256,n=256; printf(%o %on,m,n); 程序运行后的输出结果是( ) 。A. 0256 0400 B. 0256 256 C. 256 400 D. 400 400 【答案】 C 【例 21】(2004 年9月) 有以下程序main ( ) int a=666,b=888; printf(“%dn”,a,b); 程序运行后的输出结果是( ) 。A. 错误信息B. 666 C. 888 D. 666,888 【答案】 B 【例 22】(2004 年9月) 有以下程序main ( ) unsigned int a; int b=-1; a=b; printf(“%u ”,a); 程序运行后的输出结果是( ) 。A. -1 B. 65535 C. 32767 D. -32768 【答案】 B 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 33 页 - - - - - - - - - - 12 - 【考点解析】在本题中,有一无符号变量和一整型变量,它们的值都是-1 ,在计算机整型的存储是以二进制存在,即是1000000000000001,输出函数的要求输出无符号a的值,即要把1000000000000001转化为十进制,得65535。二、填空题:【例 23】(2002 年4月) 以下程序的输出结果是_。main() int a=177; printf(%on ,a); 【答案】 261 【考点解析】本题中先定义了一个十进制整数值为177的a,而 printf()函数格式控制参数是o,也就是以八进制的整数形式输出,a的十进制数值是177转换为八进制数是261。【例 24】(2002 年4月) 以下程序的输出结果是_。main() int a=0; a+=(a=8); printf(“ %dn” ,a); 【答案】 16 【考点解析】在程序是用printf函数输出十进制的整数,表达式经过复合运算:a=a+a=8+8=16,则结果是 16。【例 25】(2002 年4月) 以下程序的输出结果是_。main() int a=5,b=4,c=3,d; d=(abc); printf(“ %dn” ,d); 【答案】 0 【考点解析】在C语言中规定了关系运算符” ” 按左结合来运算的,所以在本题中先计算ab,结果是真,即是 1,再计算 ac,结果是假,所以最后结果是0。【例 26】(2003 年4月) 若有语句int i=-19,j=i%4; printf(“ %dn” ,j); 则输出结果是。【答案】 -3 【考点解析】 根据 C语言中 printf函数的用法可知,格式控制参数是d, 即是输出是十进制的数,%运算符是取除运算运算符,j=-19%4=-3 。即答案是 -3 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 33 页 - - - - - - - - - - 13 - 【例 27】(2003 年9月) 以下程序运行后的输出结果是。main() int p=30; printf(%dn,(p/30?p/10:p%3); 【答案】 3 【考点解析】 printf函数的格式控制参数是d,即是输出是十进制的数,三目运算符:( 条件表达式) ?( 条件为真时的表达式) :( 条件为假时的表达式) ,条件表达式 p/30=100 为真, 按照规则求表达式 p/10 的值就是输出的值,因此最后的输出表达式的值为3。【例 28】(2003 年9月) 以下程序运行后的输出结果是。main( ) char m; m= ?B? +32; printf(%Cn,m); 【答案】 b 【考点解析】 printf函数的格式控制参数是C,即输出的是字符,在本题中,表达式m= ? B?+32是表示字符 B的ASCII码加上 32再赋予 m,而字符 B的ASCII码是 66,因此字符 m 的ASCII 为66+32=98,最后输出的结果是ASCII码为 98的字符 , 通过计算得字符b的ASCII码是 98, 则最后结果是输出 b。【例 29】(2004 年4月) 已知字符 A的ASCII码值为 65,以下语句的输出结果是_。char ch= ? B?; printf(%c%dn,ch,ch); 【答案】 B66 【考点解析】本题中printf函数的格式控制参数有两个,分别是c d ,即是以字符格式和十进制整数格式输出,的ASCII 码值为 66,即输出的十进制数是66,则最后输出答案为B66。【例 30】(2004 年9月) 以下程序段的输出结果是_。int i=9; printf(“ %on” ,i); 【答案】 11 【考点解析】本题中有一个十进制整数值为9的变量 i ,printf函数参数要求输出八进制的数,值为9的变量i 的八进制数是 11,则最后的结果是11。【例 31】(2004 年9月) 以下程序运行后的输出结果是_。main() int a,b,c; a=25; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 33 页 - - - - - - - - - - 14 - b=025; c=0 x25; printf(%d %d %d na,b,c); 【答案】 25 21 37 【考点解析】本题中有十进制整数值为25的a,八进制整数值为025的b,十六进制整数值为0 x25的c,printf函数要求输出结果是十进制整数,且中间要用空格分隔。那么三个变量的十进制整数值分别是 25,21,37。即 25 21 37也就是答案。4 2选择结构一、选择题:【例 1】(2002 年9月) 有以下程序main() int a=15,b=21,m=0; switch(a%3) case 0:m+ ;break; case 1:m+; switch(b%2) default:m+; case 0:m+;break; printf(%dn,m); 程序运行后的输出结果是( ) 。A. 1 B. 2 C. 3 D. 4 【答案】 A 【考点解析】在本题中是运行switch 语句,当中有 break 语句,而 break 语句的作用是跳出switch 语句,即如果没有 break 语句,程序将继续执行到switch 语句的结束。 程序中, 首先执行表达式a%3=0 ,则执行 case 0 ,即 m=m+1=1 ;所以最后输出1。【例 3】(2003 年4月) 有以下程序main() int i=1,j=1,k=2; if(j+|k+)&i+) printf(%d,%d,%dn,i,j,k); 执行后输出结果是( ) 。A. 1,1,2 B. 2,2,1 C. 2,2,2 D. 2,2,3 【答案】 C 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 33 页 - - - - - - - - - - 15 - 【考点解析】在本题中,先计算if 语句后面表达式(j+|k+)&i+,当j=j+1=2 成立时,程序并不继续运行 k+,即 k=2,再运行 i=i+1=2 ,最后输出 i 、j 、k的值分别是 2,2,2。【例 4】(2003 年4月) 有以下程序main() int a=5,b=4,c=3,d=2; if(abc) printf(%dn,d); else if(c-1=d)=1) printf(%dn,d+1); else printf(%dn,d+2); 执行后输出结果是( ) 。A. 2 B. 3C. 4 D. 编译时有错,无结果【答案】 B 【考点解析】在语言中if 总是与离它最近的else 语句配对。首先执行第一个if 语句,判断表达式(abc),” ” 运算符为左结合性,即abc的值为假,所以执行else 后面的语句。而else 后面语句又是 if else语句,判断表达式(c-1=d)=1),整个表达式成立,则执行输出d+1=3。【例 6】(2004 年4月) 以下程序中与语句k=ab? (bc?1 :0) :0功能等价的是 ( ) 。A. i f(ab)&(bc)k=1; B. if(ab)|(bc) k=1; else k=0 ;; else k=0; C. i f (ab) k=1; else if (b=c) k=1; else if (bb和bc同时为真 k=1,否则 k=0。明显选项 A符合条件。二、填空题:【例 10】(2003 年4月) 若有以下程序main() int a=4,b=3,c=5,t=0; if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; printf(%d %d %dn,a,b,c); 执行输出结果是。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 33 页 - - - - - - - - - - 16 - 【答案】 5 0 3 【考点解析】根据C语言选择结构if 语句知道,当条件成立时,程序将执行其后的一条语句或一个语句块。当条件不成立时,程序将跳过if 语句后的语句或语句块, 然后继续执行。在本题中,我们先计算第一个if 后面的表达式ab为假,则执行表达式a=b、b=t ,所以 a的值为 3,b的值为 0。接着判断第二个if 后面的表达式ac,35为真则执行语句t=a, 最后执行表达式a=c、c=t ,即 a的值变为 5,c的值变为 3,所以最后的输出结果是5 0 3 。【例 12】(2004 年4月) 有以下程序main() int n=0,m=1,x=2; if(!n)x-=1; if(m)x-=2; if(x)x-=3; printf(%dn,x); 执行后输出结果是。【答案】 -4 【考点解析】在本题中,是多个if 构成的选择结构。!n=!0 为真执行 x=x-1=2-1=1 ,m 1, 而 m 又为真,执行 x=x-2=1-2=-1 ,再 x的值为真,执行x=x-3=-1-3=-4。4 3循环结构一

    注意事项

    本文(2022年C语言习题 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开