2.奥鹏南开复习资料阅读程序题答案及解析

时间:2023-03-25 23:05:55  热度:1°C

1、2/奥鹏南开c语言程序设计复习资料阅读程序题答案及解析2/奥鹏南开c语言程序设计复习资料阅读程序题答案及解析 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(2/奥鹏南开c语言程序设计复习资料阅读程序题答案及解析)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为2/奥鹏南开c语言程序设计复习资料阅读程序题答案及解析的全部内容

2、。导读/学会阅读程序对于初学者来说很重要/一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路/就所谓见多识广。读者通过阅读理解程序,从给出的四个备选参考答案中/选择程序的正确输出。如果选择有误,就要认真分析原因/是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解/提高程序设计能力。程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案/增强动手能力。习题基本上是按照教材的章节来安排的/读者可以根据学习的进度选择部分习题。 【2/1】以下程序的输出结果是 。 main()float a/a=1/

3、100000000/printf(%g”/a);a) 0。00000e+00 b) 0。0 c) 1。00000e07 d) 0d除法运算的两个操作都是整型/运算结果也是整型。【2。2】下面程序的输出结果是_。#include main()int x=10;int x=20/printf (%d,”,x)/printf(dn”,x);a) 10,20 b) 20,10 c) 10,10 d) 20,20bc语言允许在程序块(分程序)中说明变量/【2/3】以下程序的输出结果是_。main()unsigned int n;int i=521;n=i;printf(”n=%un”,n);a) n=5

4、21 b) n=521 c) n=65015 d) n=102170103c正确的结果应该是4294966775。【2。4】以下程序的输出结果是 。 main()int x=10/y=10/ printf(%d dn”, x/ y)/a) 10 10 b) 9 9 c) 9 10 d) 10 9d对变量x的操作是后缀形式,变量x的减1操作要在执行完printf函数之后才进行/所以变量x的值在输出的时候仍然保持原值10。【2/5】以下程序的输出结果是_。main()int n=1;printf(d d %dn,n,n+/n-)/a) 1 1 1 b) 1 0 1 c) 1 1 0 d) 1 2

5、1bc语言在执行printf()时/对函数中的表列的处理和顺序是从后向前,即先处理n-,再处理n+,最后处理n,而且每一个表达式作为一个处理单元/也就是说,在不同的表达式中自增自减运算是单独考虑的。【2/6】以下程序的输出结果是_。main()int x=0x02ff/y=0x0ff00/printf(”dn”,(x&y)4|0x005f);a) 127 b) 255 c) 128 d) 1 a变量x和变量y做按位与,结果为0x0200,右移4位为0x0020,再与0x005f按位或,最后结果为0x007f/【2/7】以下程序的输出结果是_。main()int a=1;char c=a;flo

6、at f=2/0/printf(”dn,(!(a=0),f!=0c=a))/a) 0 b) 1 a逗号表达式的结果是用逗号分开的最后一个表达式的值,此题由于c=a的值是0/所以逗号表达式的值为0。【2/8】下面程序的输出结果是_。main()int a=1/i=a+1;doa+/while(!i+3)/ printf(%dn”,a);a) 1 b) 2 c) 3 d) 4 b【2/9】下面程序的输出结果是_。main()int a=111;a=a00;printf(”d/on,a,a)/a) 111/157 b) 0,0 c) 20/24 d) 7,7a【2。10】下面程序的输出结果是_。ma

7、in()char s12= ”a book/printf(”/4s/s)/a) a book! b) a book!四个空格c) a bo d) 格式描述错误/输出不确定c在输出格式描述”%m。ns”中,m是输出总长度,n是实际字符的个数,这里m没有给出,则输出总长度就是实际输出的字符的个数/【2。11】下面程序的输出结果是_。main()int a/b;scanf(”2d%3d”/&a,&b);printf(”a=d b=%dn,a/b);a) a=12 b=34 b) a=123 b=45 c) a=12 b=345 d) 语句右错误c【2。12】以下程序段的输出结果是 。 int a=1

8、0,b=50/c=30/if(ab)a=b/b=c/c=a/printf(a=d b=%d c=dn”,a,b,c)/a) a=10 b=50 c=10 b) a=10 b=30 c=10c) a=50 b=30 c=10 d) a=50 b=30 c=50b【2/13】以下程序的输出结果是 / main()int a=0,b=1/c=0,d=20;if(a) d=d-10;else if(!b)if(!c) d=15;else d=25;printf(d=dn,d);a) d=10 b) d=15 c) d=20 d) d=25c【2。14】下面程序的输出结果为 。main()int a=1

9、/b=0/switch(a)case 1/ switch (b)case 0/ printf(*0*)/ break;case 1/ printf(”*1*); break;case 2: printf(*2*)/ break;a) *0* b) 0*2* c) *0*1*2* d) 有语法错误b【2/15】以下程序的输出结果是 。 main()char s=”12134211/int v1=0/v2=0/v3=0,v4=0,k/for(k=0/sk;k+)switch(sk)case 1/ v1+;case 3: v3+;case 2: v2+/default: v4+/printf(v1=

10、%d/v2=d,v3=d, v4=dn”/v1,v2,v3/v4)/a) v1=4,v2=2,v3=1/v4=1 b) v1=4,v2=9,v3=3,v4=1c) v1=5/v2=8,v3=6,v4=1 d) v1=4/v2=7/v3=5/v4=8d【2。16】下面程序的输出是 /main()int x=1,y=0,a=0/b=0;switch(x)case 1/ switch(y)case 0/ a+/break/case 1/ b+/break;case 2/ a+;b+;break/printf(a=d,b=%dn”,a,b);a) a=2/b=1 b) a=1/b=1 c) a=1,b

11、=0 d) a=2,b=2a【2/17】下面程序的输出是_。main()int num=0;while(num=2)num+/printf(”%dn,num)/a) 1 b) 1 c) 1 d) 12 2 23 34c【2。18】下面程序的输出结果是_。main()int a=1,b=0/doswitch(a)case 1/ b=1;break;case 2/ b=2/break;default / b=0;b=a+b/while(!b)/printf(”a=d,b=d”/a/b)/a) 1,2 b) 2,1 c) 1/1 d) 2/2a【2。19】从键盘上输入446755时,下面程序的输出是

12、_。#include stdio。hmain()int c/while(c=getchar())!=n)switch(c -2)case 0/case 1: putchar(c+4)/case 2: putchar(c+4)/break;case 3/ putchar(c+3)/default/ putchar(c+2)/break/printf(n”)/a) 888988 b) 668966 c) 88898787 d) 66898787c在switch语句的表达式中/ case本身仅起到语句标号的作用,不会改变语句的流程,执行break语句才能退出当前的switch语句/【2。20】下面程

13、序的输出结果是_。main()int k=0/char c=a/doswitch(c+)case a: k+/break;case b: k-;case c/ k+=2;break;case d: k=k%2/contiue;case e/ k=k+10;break/default/ k=k/3/k+/while(cc) ;printf(k=dn”,k)/a) k=1 b) k=2 c) k=3 d) k=4dswitch语句的表达式中,变量c是后缀的增1运算,第一次执行dowhile循环时,执行case a后面的语句。【2。21】下面程序的输出结果是_。main()int x,i/for(i

14、=1;i=100;i+)x=i/if(+x%2=0)if(+x%3=0)if(+x7=0)printf(”%d ,x)/a) 39 81 b) 42 84 c) 26 68 d) 28 70d【2/22】下面程序的输出结果是_。include main()int i,k/a10,p3;k=5/for(i=0;i10/i+)ai=i;for(i=0/i3/i+)pi=ai*(i+1)/for(i=0/imain()float x/y/z/scanf(”f/f/&x,&y)/z=x/y;while(1)if(fabs(z)1/0)x=y/y=z/z=x/y;else break/printf(fn

15、,y); a) 1。500000 b) 1。600000 c) 2。000000 d) 2/400000b【2。24】下面程序的输出结果是_。main()int i/j,x=0/for(i=0/i2;i+)x+;for(j=0;j-3;j+)if(j2)continue/x+;x+;printf(”x=dn/x);a) x=4 b) x=8 c) x=6 d) x=12a【2。25】下面程序的输出结果是_。main()int i/j/k=10;for(i=0;i2/i+)k+;int k=0/for(j=0;j=3;j+)if(j%2) continue/k+;k+/printf(k=dn”,

16、k)/a) k=4 b) k=8 c) k=14 d) k=18c【2/26】下面程序的输出结果是_。main()int n33, i/ j;for(i=0;i3;i+ )for(j=0;j3;j+ )nij=i+j;for(i=0;i2;i+ )for(j=0/j#include string。hmain()char str100 =”how do you do”/strcpy(str+strlen(str)/2, ”es she)/printf(”sn/ str);a) how do you do b) es she c) how are you d) how does shed字符串拷贝

17、函数strcpy()要求的两个参数是字符串首地址/本题中第二个参数是字符串常量,接受这个字符串的第一个参量不是直接给出字符数组名,而是进行了地址运算后的结果/由于str字符串的长度是13/除2取整后是6/第一个参数给出的地址是字符数组str的首地址加6,也就是原来字符串中第二个空格的位置/把es she”从该处放入,字符串str变为how does she。【2/32】下面程序的输出结果是_。func(int a,int b)int c;c=a+b/return(c);main()int x=6/y=7/z=8,r;r=func(x-/y+,x+y)/z-);printf(%dn”/r);a)

18、 11 b) 20 c) 21 d) 31cmain函数调用func函数时,第一个实参使用的是逗号表达式的值,也就是x+y的结果,由于对变量x/y/z进行的是后缀运算,所以函数func的参数值是13和8/【2。33】下面程序的输出结果是_。void fun(int *s)static int j=0;dosj+=sj+1/while(+j2);main()int k,a10=1/2,3,4/5/for(k=1;k3;k+)fun(a)/for(k=0;k5/k+)printf(”d,ak)/a) 35756 b) 23445 c) 35745 d) 12345c【2/34】下面程序的输出结果是

19、_/int k=1;main()int i=4;fun(i)/printf (n%d,d/i,k)/ a) 4/1 b) 5/6 c) 4,6 d) a,b/c参考答案都不对c a) 1 b) 59 c) 64 d) a,b,c参考答案都不对a a) 5/66 b) 1,66 c) 5/6 d) a,b,c参考答案都不对c【2。35】下面程序的输出结果是_/fun(int n, int s)int f1, f2;if(n=1|n=2)s=

20、1;elsefun(n1/&f1)/fun(n-2/f2);s=f1+f2;main()int x/fun(6,x);printf(”%dn”,x)/a) 6 b) 7 c) 8 d) 9 c【2/36】下面程序的输出结果是_。int w=3/main()int w=10/printf(dn”,fun(5)w)/fun(int k)if(k=0) return(w)/return(fun(k-1)k)/a) 360 b) 3600 c) 1080 d) 1200b函数fun进行了递归调用,实际进行的运算是54*32*13*10。主函数内说明的局部变量w***了外部变量w,所以在主函数中外部变量w

21、是不可见的,在调用printf函数时表达式fun(5)*w”中w的值是10。【2/37】下面程序的输出结果是_。funa(int a)int b=0;static int c=3;a=c+/b+/return(a);main()int a=2/i/k;for(i=0;i2;i+)k=funa(a+)/printf(”dn/k);a) 3 b) 0 c) 5 d) 4dmain函数三次调用了函数funa,在funa函数中的静态变量c仅在第一次调用时进行了初始化,再次调用时不再对静态变量赋初值。【2。38】下面程序的输出结果是_/void num()extern int x,y/int a=15/

22、b=10/x=ab/y=a+b;int x,y;main()int a=7,b=5;x=ab/y=a+b/num()/printf(”%d,%dn,x,y)/a) 12,2 b) 5,25 c) 1/12 d) 输出不确定bmain函数和num函数中都说明了变量a和b/由于它们是内部变量,所以它们分别在说明它们的函数内有效。外部变量x和y在函数num之后被说明/而在num函数中又要引用它们,所以在num函数中用关键字“extern”说明变量x和y是一个外部变量/也就是通知计算机这两个变量在fun函数以外被说明,此处不是定义两个int型变量。【2/39】下面程序的输出结果是_。main()int

23、 a=2,i;for(i=0/i3/i+)printf(%4d”,f(a);f(int a)int b=0/static int c=3/b+;c+/return(a+b+c);a) 7 7 7 b) 7 10 13 c) 7 9 11 d) 7 8 9d函数f中的变量c是静态变量,仅在第一次调用函数f时它被初始化为3,第二次调用函数f时c的值是4/第三次调用函数f时c的值是5。【2。40】下面程序的输出结果是_。try()static int x=3/x+;return(x)/main()int i/x;for(i=0/i=2/i+)x=try()/printf(dn/x)/a) 3 b)

24、4 c) 5 d) 6d【2/41】下面程序的输出结果是_。main()int x=1/void f1(),f2();f1();f2(x)/printf(%dn/x)/void f1(void)int x=3;printf(”%d ”/x); void f2(x)int x;printf(”%d ,+x)/a) 1 1 1 b) 2 2 2 c) 3 3 3 d) 3 2 1d程序中有三个“x”分别在不同的函数中,这三个“x分别局部于三个不同的函数,在三个函数中队“x的操作互不影响。【2/42】下面程序的输出结果是_。#include stdio/h define sub(x,y) (x)*y

25、main()int a=3,b=4;printf(dn,sub(a+,b+))/a) 12 b) 15 c) 16 d) 20a【2/43】下面程序的输出结果是_。main()int a=1,2/3/4/5,6/int *p;p=a/printf(d ”/p);printf(”d ,*(+p));printf(”%d ”printf(”%d ”,*(a+6)/ /* /printf(”%d ”/(a1+=2)/ /* /printf(d”/(a00+6); a) 7 7 7 7 b) 句语法错误 c) 句语法错误 d) 句语法错误c句没有语法错误,但是a+6指向数组之外,因为a是a0的地址,a+1是a1的地址a+2是a2的地址/显然数组a没有a6分量。句错误,因为a1是地址常量,

27、它是a10的地址/对于地址常量是不可以进行赋值运算的。【2。45】下面程序的输出结果是_。define fmt ”xn#include stdio。hmain()static int a 4 = 1,2/3,4/5/6/7/8/9/10,11,12 ;printf( fmt/ a22)/ /* /printf( fmt, *(*(a+1)+1) )/ a) 9 b) 11 c) a d) bd a) 6 b) 7 c) 8 d) 前面三个参考答案均是错误的a【2/46】下面程序的输出结果是_。main ()int a=1,2,3,4,5 /int x,y/*p;p=&a0/x=*(

28、p+2);y=*(p+4);printf(”%d/d,%dn,p,x,y)/a) 1/3/5 b) 1,2/3 c) 1,2/4 d) 1/4,5a语句“p=a0”表示将数组a中元素a0的地址赋给指针变量p,则p就是指向数组首元素a0的指针变量,“a0是取数组首元素的地址,对于指向数组首址的指针,p+1(或a+i)是数组元素ai的地址,*(p+i)(或*(a+i)就是ai的值。【2。47】下面程序的输出结果是_。void ive(x/n)int x/n/int t,p/p=x+n-1;while(xp)t=x;x+=p/*p-=t/return/main()int i/a=1,2/3,4,5/

29、6,7/8,9/0;ive(a,10)/for(i=0;i10;i+)printf(d ”,ai);printf(n”)/ a) 1 2 3 4 5 6 7 8 9 0 b) 0 9 8 7 6 5 4 3 2 1c) 1 3 5 7 9 2 4 6 8 0 d) 0 8 6 4 2 9 7 5 3 1b【2/48】下面程序的输出结果是_。#include string/h”fun(char w/int n)char t/*s1,s2;s1=w;s2=w+n1/while(s1char *p = abcdefghijklmnopq ;main()int i=0/while( p+!=e );printf(”cn/ p); a) c b) d c) e d) fd【2/50】下面程序的输出结果是_。f(int x/ int y)return (y-x)/main()int a=5/b=6/c/int f(),(*g)()=f/printf(”dn, (*g)(a,b);a) 1 b) 2 c) 3 d) 前面三

郑重声明:
1. 《2.奥鹏南开复习资料阅读程序题答案及解析》内容来源于互联网,版权归原著者或相关公司所有。
2. 若《86561825文库网》收录的文本内容侵犯了您的权益或隐私,请立即通知我们删除。