实验习题答案_第1页
实验习题答案_第2页
实验习题答案_第3页
实验习题答案_第4页
实验习题答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 下面程序的运行结

36、果是_. 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 person char name9;int

37、 age;struct person class10= John,17, Paul,19, Mary,18, Adam,16;A.printf(%cn,);B.printf(%cn,1);C.printf(%cn,1);D.printf(%cn,0;指针类型数据一、选择题1. 变量的指针,其含义是指该变量的_. a)值 b)地址 c)名 d)一个标志2. 若有说明;int *p,m=5,n;以下正确的程序段的是_.a)p=&n; b)p=&n; scanf(%d,&p); scanf(%d,*p); c)s

38、canf(%d,&n); d)p=&n; *p=n; *p=m;3. 若有以下定义,则对a数组元素的正确引用是_. int a5,*p=a; a) *&a5 b) a+2 c) *(p+5) d) *(a+2)4. 若有定义:int a23,则对a数组的第i行j列元素地址的正确引用为_. a) *(ai+j) b) (a+i) c) *(a+j) d) ai+j5. 下面程序段的运行结果是_. char *s=abcde; s+=2;printf(%d,s); a)cde b)字符c c)字符c的地址 d)无确定的输出结果6. 以下正确的程序段是_. a)char str20; b)char *p; scanf(%s,&str); scanf(%s,p); c)char str20; d)char str20,*p=str; scanf(%s,&str2); scanf(%s,p2);7. 若有说明语句 char a=It is mine; char *p=It is mine; 则以下不正确的叙述是_. a)a+1表示的是字符t的地址 b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符 8. 下面程序的运行结果是_. #include #include main() char *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论