实验习题答案.doc

上传人:时光煮雨 文档编号:11605090 上传时间:2021-08-26 格式:DOC 页数:20 大小:134KB
返回 下载 相关 举报
实验习题答案.doc_第1页
第1页 / 共20页
实验习题答案.doc_第2页
第2页 / 共20页
实验习题答案.doc_第3页
第3页 / 共20页
实验习题答案.doc_第4页
第4页 / 共20页
实验习题答案.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《实验习题答案.doc》由会员分享,可在线阅读,更多相关《实验习题答案.doc(20页珍藏版)》请在三一文库上搜索。

1、C语言概述1若有源程序文件t1.c,编译后生成的目标文件名是_t1.obj_,连接后生成的文件名是_t1.exe_,它们位于磁盘什么位置? 默认情况下是obj和源文件在同一目录下,exe在源文件目录下的debug目录下,可以在编译环境中设置到其他地方。2程序1_3.c中输出的10!值是多少?3628800数据与数据类型1实验一的程序1中,语句a=1+1/2+1/3+1/4;执行后变量a的值是_1_。怎样修改程序才能得到正确的结果?将a=1+1/2+1/3+1/4改为a=1+1/2.0+1/3.0+1/4.0;2实验二中你用什么样的方式定义符号常量?还可以用什么方法定义符号常量?可以通过Defi

2、ne宏定义和const常量定义两种方式定义符号常量3直接阅读实验四的程序,你认为三条输出结果是什么?程序运行得到的结果是什么?能分析一下为什么是这样的结果?4实验五的程序运行时,如果输入数据10 20 40 ,运行时会出现什么结果?为什么?息样避免这样的情况发生? 面积出现不可预估值,pow参数为负数,即两边之和不大于第三边,应在算面积之前用if语句判断。5下面程序段执行后,问:变量a、b在内存中所占字节数分别为_4_、_4_,其值分别为_20_、_40_。int a=-6.56; float b;b=(a=4*5,a*2),a+6;6下列定义变量的语句中错误的是_。A) int _int;

3、B) double int_; C) char For; D) float US$;7若变量x、y已正确定义并赋值,下面符合C语言语法的表达式是_A_。A) +x,y=x- B) x+1=y C) x=x+10=x+y D) double(x)/108数字字符0的ASCII的值为48,下面程序运行后输出结果是_。main()char a=1,b=2; printf(%c,b+); printf(%dn,b-a); A) 3,2 B) 50,2 C) 2,2 D) 2,509设有 int x=11; 则表达式 x+*1/3 的值是_。A) 3 B) 4 C) 11 D) 12顺序语句及输入与输出

4、1已有如下定义和输入语句,若要求a,b,c1,c2的值分别为5、6、A和B,当从第一列开始输入数据时,正确的数据输入方式是 _ (表示回车)。int a,b;char c1,c2;scanf(%d%c%d%c,&a,&c1,&b,&c2);A) 5 A 6 B B) 5 A6B C) 5A6B D) 5A6 B2以下说法正确的是_。A)输入项可以为一个实型常量,如scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入,如scanf(“a=%d,b=%d”);C)当输入实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D)当输入数据时,必须指

5、明地址,如scanf(“%f”,&f);E)可以采用不同的格式符,实现对一个实型数据以八进制或十六进制形式输入/输出。F)整型数据不能使用%f或%lf格式符。3若a是int型变量,则表达式(a=5*6,a*3),a+8的值是 _ 。4若有定义:int b=7; float a=2.5,c=4.7; 则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为_5.5_。 5输出长整型数据使用格式符_%ld_,输出无符号的整数用格式符_%u_ ,以指数形式输出单精实数用格式符_%e_。6下面程序运行时输入:10 11,输出_a=8,b=17_。#includevoid main()in

6、t a,b; scanf(%o%x,&a,&b); printf(a=%d,b=%dn,a,b); 7下面程序段执行时,怎样输入才能让a=10,b=20 ?_a=10,b=20_ int a,b;scanf(a=%d,b=%d,&a,&b);8若a和b均为int变量,以下语句的功能是_交换a和b的值_。a+=b;b=a-b;a-=b;9在scanf函数调用中,可以在格式字符和%之间加一星号*,它的作用是_本输入项在读入后不赋给相应的变量_。10a+、+a、a=a+1都能实现使变量a的值增1,与之等效的表达式还有_ a+=1_分支结构1若执行下面的程序时从键盘上输入5,则输出结果是_ main(

7、) int x; scanf(%d,&x); if(x+5)printf(%dn,x); else printf(%dn,x-); A)7B)6C)5D)42已知a,b,m,n,c,d变量的定义如下,则执行完下列表达式后m,n的值为_int a=3,b=4,m=0,n=0,c=3,d=4;(m=ab)|(n=cd);A)m=1 n=1B)m=1 n=0C)m=0 n=0D)m=0 n=13表达式(!70+45)的值是_A)3B)2C)1D)04假设在程序中,x,y,z均被定义成整型,且已赋大于1的值, 则下列能正确表示1/(xyz)的表达式是_A)1/x*y*z B)1/(x*y*z)C)1/

8、x/y/(float)zD)1.0/x/y/z5已知字母a的ASCII十进制代码为97,则执行以下语句后的输出为_char a=a;a-;printf(%d,%cn,a+2-0,a+3-0);A) b,cB) a-运算不合法,故有语法错 C) 98,cD) 格式描述和输出项不匹配,输出无定值6为了避免嵌套的条件语句if-else的二义性,C语言规定:else与_配对。A) 缩排位置相同的ifB) 其之前最近的ifC) 其之后最近的ifD) 同一行上的if7若给定条件表达式(M)?(a+): (a-),则其中表达式M_A) 和(M=0)等价B) 和(M=1)等价C) 和(M!=0)等价D) 和(

9、M!=1)等价8若有说明语句char s=092; 则该语句_A) 使s的值包含1个字符B) 说明不合法,s的值不确定C) 使s的值包含4个字符D) 使s的值包含3个字符9设a=1,b=2,c=3,d=4,则表达式:ab?a:cd?a:d的结果为_A) 4B) 3C) 2D) 110有如下的变量定义:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是_A) a+=a-=(b=4)*(a=3)B) x%(-3)C)a=a*3=2D) y=float(i)11有以下变量定义:int k=7,x=12;则下列值为3的

10、表达式是_A) x%=(k%=5)B) x%=(k-k%5)C) x%=k-k%5D) (x%=k)-(k%=5)12设 int a=3 ; 则表达式 a1 的运算结果和a的值分别是_A) 0和2 B) 0和3 C) 1和2 D) 1和313假定所有变量均已正确定义,下列程序段运行后x的值是_ ok1=1;ok2=2;ok3=3;x=15; if(!ok1) x-; else if(ok2) if(ok3) x=3; else x=4;A) 14B) 4C) 15D) 314下面程序的输出结果是_void main()int x=1,a=0,b=0; switch(x) case 0 :b+;

11、 case 1 :a+; case 2 :a+;b+; printf(“a=%d,b=%dn”,a,b);A) a=2,b=1B) a=1,b=1C) a=1,b=0D) a=2,b=215. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果分别是_ void main( ) int x; scanf(%d,&x); if(x+5)printf(%d,x); else printf(%dn,x-); A) 7和5 B) 6和3 C) 7和4 D) 6和416有定义:int a=1,b=3,c=5,d=4,x; 则执行完下面一段程序后x的值是 _。if(ab)if(cd) x=1;el

12、se if(ac) if( b=0|b=0)&(a0|b=0&b=0)&(a0&b0)&(a+b018当a=3,b=2,c=1时,表达式f=abc的值是 _0_ 。19当c的值不为0 时,在下列选项中能正确将c的值赋给变量a、b的是_。A) c=b=aB) (a=c)|(b=c)C) (a=c)&(b=c)D) a=c=b20下面程序程序后输出结果是_。void main()int a=3,b=2,c=1,t; if(abc) t=1; else if(abc) t=0; else t=-1; printf(%dn,t);A) 1 B) 0 C) -1 D) 不确定的数21. 以下程序运行后的

13、输出结果是_3 5 3_。void main()int a=3,b=4,c=5,t=99; if(abc,cb) t=b;b=a;a=t; printf(%d %d %dn,a,b,c); 22. 以下程序运行后的输出结果是_2 1_。void 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(%d %dn,a,b); 23有以下程序void main( ) int i=1,j=1,k=2; if(j+|k+)&i+)

14、 printf( %d,%d,%dn,i,j,k ); 执行后输出结果是_。A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,324以下程序执行后输出结果是_。void main( ) int a=3,b=4,c=5,d=2; if(ab) if(bc) printf(%d,d+1); else printf(%d,+d+1); printf(%dn,d); A) 2 B) 3 C) 43 D) 4425以下程序执行后输的结果是_-4_ 。main( ) int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3;printf(%

15、dn,x);循环控制1对下面程序段描述正确的是_。 int k=10; while(k=0) k=k-1;A) while循环执行10次 B) 循环是无限循环C) 循环体语句一次也不执行 D) 循环体语句执行一次2语句while(!E);中的表达式!E等价于_.A) E=0 B) E!=1 C) E!=0 D) E=13下面程序段的运行结果是_.int n=0;while(n+=2); printf(%d,n);A) 2 B) 3C) 4 D) 有语法错4下面程序的运行结果是_. #include main() int num=0; while(num=2) num+; printf(%dn,

16、num); A)1 B)1 C) 1 D) 1 2 2 2 3 3 45以下程序段_. x=-1; do x=x*x; while(!x); A) 是死循环 B) 循环执行二次 C) 循环执行一次 D) 有语法错误6如下程序段 _.int x=3;doprintf(%dn,x-=2);while(!(-x); A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环7下面程序的运行结果是_.#includemain()int y=10; doy-;while(-y); printf(%dn,y-); A) -1 B) 1 C) 8 D) 08若i为整型变量,则以下循环执行

17、次数是_. for(i=2;i=0;)printf(%d,i-);A) 无限次 B) 0次 C) 1次 D) 2次9执行语句for(i=1;i+4; ); 后变量i的值是_.A) 3 B) 4 C) 5 D) 不定10以下正确的描述是_.A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句体内使用break语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句11. 运行下面程序时,从键盘输入20357,则下面程序的运行结果是_66277879_。#includemain( )int c;

18、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; putchar(n); 12.下面程序段是从键盘输入的字符串中统计数字字符的个数,用换行符结束循环。请填空。 int n=0,c; c=getchar(); while(_c!=n_) if(_c=0&c=9_)n+; c=getchar(); 13下面程序的功能是用辗转相除法求两个正整数的最大公约数。请填空。

19、 #include main() int r,m,n; scanf(%d%d,&m,&n); if(mn)_ r=m;m=n;n=r;_; /* 保证m总是是大于n */ r=m%n; while(r)m=n;n=r;r=_ m%n_; printf(%dn,n); 14下面程序的运行结果是_s=254_. #include main() int a,s,n,count; a=2;s=0;n=1;count=1; while(count=7)n=n*a;s=s+n;+count; printf(s=%d,s); 15下面程序段的运行结果是_a=-5_.i=1;a=0;s=1;doa=a+s*i

20、;s=-s;i+;while(i=10);printf(a=%d,a);16下面程序段的运行结果是_8_. i=1;s=3; dos+=i+; if(s%7=0)continue; else +i; while(s15); printf(%d,i);17下面程序用于打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。完成程序。main( )int i,a,b,c; for(i=100;i1000;i+ )a = i/100; b =_i/10%10_; c = i%10; if(_i=a*a*a+b*b*b+c*c*c_) printf( %d , i);数

21、组1. 定义如下变量和数组 :int k ;int a33= 1, 2, 3, 4, 5, 6, 7, 8, 9 ;则下面语句的输出结果是( )for(k=0;k3;k+) printf(%d,ak2-k);A、357B、369 C、 159D、 1472. 执行下面的程序段后,变量k中的值为()int k=3,s2;s0=k;k=s1*10;A、不定值B、33C、30D、103. 设有数组定义:char array =China; 则数组 array所占的空间为( )A、4个字节 B、5个字节 C、6个字节D、7个字节4. 如下程序的输出结果是( )void main( ) int n5=0

22、,0,0,i,k=2;for(i=0;ik;i+)ni=ni+1;printf(%dn,nk);A、不确定的值B、2C、1D、05. 有如下程序void main( ) int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+)s+=aij;printf(%dn,s);该程序的输出结果是()A、18B、19C、20D、216. 以下程序的输出结果是()void main( ) inti,x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)printf(%d,xi2-i);A、1,5,9,B、1,4,7,C、3,5,7,

23、D、3,6,9,7. 当执行下面的程序时,如果输入ABC,则输出结果是()#include stdio.h#include string.hvoid main( ) char ss10=1,2,3,4,5;gets(ss);strcat(ss,6789);printf(%sn,ss);A、ABC6789B、ABC67C、12345ABC6D、ABC4567898以下程序段的输出结果是( )char s = 141141abct;printf(%dn,strlen(s);A、9B、12C、13D、149. 下面是对s的初始化,其中不正确的是( )A、char s5=“abc” ;B、char s

24、5=a,b,c;C、char s5=“”; D、char s5=”abcde”10. 以下程序的输出结果是_ abc_void main( )char s =abcdef; s3= 0;printf(%sn,s);11. 下列程序段的输出结果是_ Hello_void main( ) char b=Hello,you;b5=0;printf(%s n, b );12. 在C语言中,二维数组元素在内存中的存放顺序是_行优先_13. 设有定义语句 “ int a34=1,2,3 ” ,则a11值为_0_,a21的值为_0_ 14. 若在程序中用到 “ putchar() ” 函数时,应在程序开头写

25、上包含命令#include _ ,若在程序中用到 “ strlen() ” 函数时,应在程序开头写上包含命令_#include string.h_15. 下面程序的功能是输出数组s中最大元素的下标,请填空。 void main() int k,p; int s=1,-9,7,2,-10,3; for(p=0,k=p;psk) _k=p_ ; printf(%dn,k); 16. 以下程序执行时输入Language Programming的结果是_Language_ #include void main() char str30; scanf(%s,str); printf(str=%sn,st

26、r); 17. 以下程序可把输入的十进制长整型数以十六进制数的形式输出,请填空。 void main() char b17=0123456789ABCDEF; int c64,d,i=0,base=16; long n; printf(Enter a number:n); scanf(%1d,&n); doci= _ n % 16_;i+;n=n/base;while(n!=0); printf(Transmite new base:n); for (-i;i=0;-i)d=ci;printf(%c,b _ d_ ; 18. 以下数组定义中,错误的是( C )A、 int a=1,2,3;B、

27、 int a5=1,2,3;C、 int a3=1,2,3,4;D、 int a5,b;19以下数组定义中,正确的是( B )A、 int n=4,an=1,2,3,4; B、 int a2=1,2,3,4;C、 int a2=1,2,3,4;D、 int a=1,2,3,4;20.设有如下定义:int a810;在C中一个整数占用4字节,设a的起始地址为1000,则a11的地址是( )A、 1000B、 1004C、 1036 D、 104421. 有数组定义:int a 3=1,2,3,4,5,6,7,8,9,则a12的值是( )A、 2B、 5C、 6D、 822.设已定义 char s

28、tr6=a,b,0,c,d,0; 执行语句 printf(%s,str) 后,输出结果为( )A、 aB、 abC、 abcdD、 ab0cd023引用数组元素时,数组元素下标不可以是( )A、 字符常量B、 整型变量 C、 字符串D、 算术表达式24下面程序段的运行结果是( )void main()char a=abcd,b=123;strcpy(a,b);printf(%sn,a);A、 123 B、 123dC、 abcd D、 abcd12325下面程序段的运行结果是( )void main()char a=123,b=abcd;if(ab) printf(%sn,a);else pr

29、intf(%sn,b);A、 123 B、 编译时出错C、 abcdD、 运行时出错函数 1. 有如下程序#includelong fib( int n)if(n2) return(fib(n-1)+fib(n-2);else return(2);void main( ) printf(%dn,fib(3);该程序的输出结果是()A、2B、 4C、 6D、8 2. 在C语言中,函数的隐含存储类别是()A、 autoB、 staticC、 externD、 无存储类别3. 以下所列的各函数首部中,正确的是()A、 void play(var:Integer,var b:Integer)B、 vo

30、id play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)4. 以下程序的输出结果是()A、 0B、 29C、 31D、 无定值fun(int x,int y,int z) z=x*x+y*y;main( ) int a=31;fun(5,2,a);printf(%d,a);5. 以下程序的输出结果是()f(int b ,int m,int n) int I,s=0; for(i=m;in;i=i+2) s=s+bi; return s; main( ) int x,a =1,2,3,4,5,6

31、,7,8,9; x=f(a,3,7); printf(%dn,x); A、10B、18C、8D、156. 以下程序的输出结果是()A、1B、2C、3D、4long fun( int n) long s;if(n=1 | n=2)s=2;else s=n-fun(n-1);return s;main( ) printf(%ldn,fun(3); 7. 以下程序的输出结果是()int f( ) static int i=0; int s=1; s+=i;i+; return s; main( ) int i,a=0; for(i=0;i5;i+) a+=f(); printf(%dn,a); A、

32、20B、24C、25D、158. 以下程序的功能是调用函数fun计算:m=1-2+3-4+9-10,并输出结果。请填空。intfun(intn)intm=0,f=1,i;for(i=1;i=n;i+)m+=i*f;f=_-f_;returnm;main()printf(m=%dn,_fun(10)_);9. 以下程序输出的最后一个值是_120_int ff(int n) static int f=l;f=f*n;return f;main( ) int i;for(i=1;i=5;i+ ) printf(%dn,ff(i);10. 以下函数的功能是:求x的y次方,请填空。double fun(

33、 double x,int y) int i;double z;for(i=1, z=x; iy;i+) z=z*_x_;return z;11. 以下正确的说法是()A、用户若需要调用标准库函数,调用前必须重新定义 B 、用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C 、系统不允许用户重新定义标准库函数 D 、用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。 12. C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是()A、地址传递 B 、值传递 C 、有实参传给形参,再由形参传给实参 D 、由用户指定传递方式 1

34、3. 下面程序的输出是()int i=2 ; printf(“%d%d%d”,i*=2,+i,i+) ; A、 8 , 4 , 2 B 、 8 , 4 , 3 C、 4 , 4 , 5 D 、 4 , 5 , 6 14. 以下不正确的说法是()A 、 register 变量可以提高变量使用的执行效率 B 、 register 变量由于使用的是 CPU 的寄存器,其数目是有限制的 C 、 extern 变量定义的存储空间按变量类型分配 D 、全局变量使得函数之间的 “ 耦合性 ” 更加紧密,不利于模块化的要求 15. C 语言函数返回类型的默认定义类型是_int_ 16. 函数的实参传递到形参有

35、两种方式:_传值_ 和_传址_ 。 17. C 语言变量按其作用域分为_全局变量_和_局部变量_ 。按其生存期分为_静态_和_动态_ 。 18. 已知函数定义 : , 其函数声明的两种写法为_ void dothat(int n,double x);_ , _ void dothat(int ,double );_ 。 19. C 语言变量的存储类别有_auto_ ,_static_ ,_register_ 和_extern_ 。 20. 在一个 C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 _extern_。结构体习题1. 下面程序的运行结果是_. void main() struct cmplxint x; int y; cnum2=1,3,2,7; printf(%dn,cnum0.y/cnum0.x*cnum1.x); a)0 b)1 c)3 d)62. 以下程序的运行结果是_10,x_. struct n int x; char c; ;void main() struct n a=10,x; func(a); printf(%d,%c,a.x,a.c); func(struct n b) b.x=20; b.c=y; 3. 根据下面的定义,能打出字母M的语句是 。struct perso

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1