c语言习题册及答案
更新时间:2024-01-10 14:26:01 阅读量: 教育文库 文档下载
- c语言基础题库及详解答案推荐度:
- 相关推荐
第3章 课后练习及作业习题指导(参考答案) 作业01 C语言基础知识
一、选择题
1.C语言程序的基本单位是( )。
A)函数 B)过程 C)子程序 D)子例程 2.下列个选项中,合法的C语言关键字是( )。
A)integer B)sin C)string D)void 3.下列选项中,不是C语言提供的合法关键字的是( )。 A)switch B)cher C)default D)case 4.以下选项中合法的用户标识符是( )。
A)int B)a# C)5mem D)_243 5.C语言程序一行写不下时,应该( )。
A)用回车换行 B)在任意空格处换行 C)用分号换行 D)用逗号换行
6.在C程序中,可以作为用户标识符的一组标识符是( )。 A)void define WORD B)as_b3 _224 Else C)switch —wer case D)4b DO SIG 7.在C语言中,下列合法的字符常量是( )。
A)’\\039 B)’\\x76’ C)’ab’ D)’\\o’ 8.以下说法正确的是( )。
A)C语言程序是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序是从main()函数开始执行的
D)C语言程序中的main()函数必须放在程序的开始部分 9.( )是构成C语言程序的基本单位
A)函数 B)变量 C)子程序 D)语句 10.一个C语言程序总是从( )开始执行的
A)主过程 B)主函数 C)子程序 D)主程序 11.以下叙述不正确的是( )
A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main()函数 C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
12.C语言规定:在一个源程序中,main()函数的位置( ) A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后
13.以下叙述正确的是( )
A)在C程序中,main()函数必须位于程序的最前面 B)C程序中的每行中只能写一条语句 C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
14.C语言中标识符只能由字母、数字和下划线3种字符组成,且第一个字符( ) A)必须为字母 B)必须为下划线
C)必须为字母或下划线 D)可以是字母、数字和下划线中任意一种字符 二、填空题
1.一个C语言编写的程序是从 main函数 开始执行的。
2.结构化程序所规定的3种基本控制结构是 顺序结构 、 选择结构 和 循环结构 。 3.C语言的标识符可分为 保留字 、 用户定义标识符 和预定义标识符3类。 4.在C语言中,整数可用 十 进制、 八 进制和 十六 进制三种。 5.一个C语言程序的开发过程包括:编辑、 编译 、连接和运行4步。 6.一个C源程序中至少应包括一个 main函数 。
7.在一个C源程序中,注释部分两侧分界符分别为 /* 和 */ 。
8.C语言中的标识符只能由3种字符组成,它们是 字母 、 数字 和 下划线 。 9.C程序执行过程生成的3种文件及扩展名为 .c 、 .obj 和 .exe 。
作业02 数据类型及运算
一、选择题
1. C语言中简单数据类型有( )。
A)整型、实型、逻辑型 B)整型、字符型、逻辑型
C)整型、实型、字符型 D)整型、实型、字符型、逻辑型 2. 以下选项中正确的整型常量是( )。
A)-37 B)32,758 C)3 2 6 D)6. 3. 以下选项中合法的C语言字符常量是( )。
A)‘\\t’ B) ”A” C) 67 D)A 4.以下选项中不正确的实型常量是( )。
A)123 B)1e4 C)3.640E-1 D)0.35 5.不合法的十六进制数是( )。
A)0xff B) 0X11 C) 0x1g D)0Xabc 6.以下选项中合法的C语言赋值语句是( )。
A)a=b=34 B)a=34,b=34 C) --i D)m=(int)(x+y); 7.在C语言中,char 型数据在内存中是以( )形式储存的。 A)原码 B) 补码 C) ASCII码 D)反码 8. 以下( )是不正确的转义字符
A)‘\\\\’ B) ‘\\” C) ‘020’ D)’\\0’
9. 若有代数式3ae/bc,则不正确的C语言表达式是( )。 A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3 10. 在C语言中,要求参加运算的数必须是整数的运算符是( )。 A)% B)/ C)! D)**
11. 若已定义x和y为double类型,则表达式“x=1,y=x+3/2“的值是( )。 A)1 B)2 C)2.0 D)2.5
12.若变量已正确定义并赋值,符合C语言语法的表达式是( )。 A)a=a+1 B)a=7+b+c,a++ C)int(12.3/4) D)a=a+7=c+b 13.若a为整型变量,则下列语句( )。 a=-2L;
printf(“%d\\n”,a);
A)赋值不合法 B)输出值为-2 C)输出值不为确定值 D)输出值为2 14.对于条件表达式(M)?(a++):(a--),其中表达式M等价于( )。 A)M= =0 B)M= =-1 C)M!=0 D)M!=1
15.若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为( )。 (x+y)%2+(int)a/(int)b
A)1.0 B)1 C)2.0 D)2
16.若x和n均是int型变量,且x初值为12,n初值为5,则执行下面表达式后x值为( )。 x%=(n%=2)
A)0 B)1 C)2 D)3
17.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为( )。 A)7 B)8 C)9 D)10
18.设int x=1,y=1;表达式(!x||y--)的值是( )。 A)0 B)1 C)2 D)-1
19.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( )。 A)1 B)2 C)2.0 D)2.5
20.若变量a,i已正确定义,且i已正确赋值,则合法的语句是( )。 A)i=int(a) B)++i; C)a=a++=5 D)a=int(i) 21.若执行以下程序段后,c3的值是( )。 int c1=1,c2=2,c3; c3=1.0/c2*c1;
A)0 B)0.5 C)1 D)2
22.能正确表示逻辑关系”a≥10或a≤0”的C语言表达式是( )。
A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10&&a<=0 D)a>=10||a<=0
23.若变量x、y、z均为double类型且已经正确赋值,不能正确表示x/(y×z)的C语言表达式是( )。
A)x/y*z B)x*(1/(y*z)) C)x/y*1/z D)x/y/z
24.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( )。 A)不定值 B)4 C)3 D)1
25.设a、b、c、d、m、n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( )。 A)0 B)1 C)2 D)3
26.假定w、x、y、z、m均为int型变量,有如下程序段: w=1;x=2;y=3;z=4;
m=(w A)4 B)3 C)2 D)1 27.已知int i;float f;正确的语句是( )。 A)(int f)%i; B)int(f)%i; C)int(f%i); D)(int)f%i; 28.已知int j,i=1;,执行语句j=-i++;后,j的值是( )。 A)1 B)2 C)-1 D)-2 29.已知int a=4,b=5;,则执行表达式a=a>b后,变量a的值为( )。 A)0 B)1 C)4 D)5 30.判断char类型数据c1是否为大写字母的最简单且正确的表达式为( )。 A)’A’<=c1<=’Z’ B)(c1>=’A’)&(c1<=’Z’) C)(‘A’<=c1)AND(‘Z’>=c1) D)(c1>=’A’)&&(c1<=’Z’) 二、填空题 1.若a是int型变量,则执行表达式a=25/3%3后a的值是 2 。 2.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为 10 ,n的值为 6 。 3.若x和y都是double型变量,且x初值为3.0,y初值为2.0,则表达式pow(y,fabs(x))的值为 8.0 。 4.表达式pow(2.8,sqrt(double(x))值的数据类型为 double 。 5.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为 26 。 6.若有定义int m=5,y=2;则执行表达式y+=y-=m*=y后y的值为 -16 。 7.已知int a=15,b=240;则表达式(a&b)&b||b的结果为 1 。 8.表达式8.0*(1/2)的值为 0.0 。 9.字符串“ab\\034\\\\\\x79”的长度为 5 。 10.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为 1 。 11.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。 12.若有定义:char c=’\\010’;则变量c中包含的字符个数为 1 。 13.若i 为int整形变量且赋值为6,则运算i++后表达式的值为 6 变量i的值是 7 。 14.若二进制a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变, 则二进制b是 11110000 。 15.表达式3&4的值为 0 ,表达式3|4的值为 7 ,表达式3&&4的值为 1 。 三、读程序写结果 1.如下程序的运行结果是( 33 )。 #include { int y=3,x=3,z=1; printf(“%d%d\\n”,(++x,y++),z+2); } 2.以下程序的输出结果是( 6 )。 #include { int a=5,b=4,c=6,d; printf(“%d\\n”,d=a>b?(a>c? a:c):(b)); } 3.在C语言中,如果下面的变量都是int类型,则输出的结果是( 7 sum=pad=5; pad=sum++,pad++,++pad; printf(“%d\\n”,pad); 4.以下程序的输出结果是( 9,10 )。 #include { int i=010,j=10; printf(“%d,%d\\n”,++i,j--); } 作业03 基本语句 一、选择题 1.若有说明:double a;则正确输入语句是( )。 A)scanf(“%if”,a) B)scanf(“%lf”,&a) C)scanf(“%if”,&a) D)scanf(“%lo”,&a) 2.合法的C语言赋值语句是( )。 A)a=b=58 B)k=int(a+b) C)a=58,b=58 D)--i; 3.若变量已确定定义,以下程序段输出结果是( )。 x=5.16894; printf(“%f\\n”,(int)(x*1000+0.5)/(float)(1000)”); A) 输出格式说明与输出项不匹配,输出无定值 B) 5.170000 C) 5.168000 D) 5.169000 4.若有以下程序其输出结果是( )。 int a=0 ,b=0,c=0; c=(a-=a-5),(a=b,b+3); )。 printf(“%d,%d,%d\\n”,a,b,c); A) 3,0,-10 B) 0,0,5 C) -10,3-10 D) 3,0,3 5.以下程序其输出结果是( )。 #include { int a=2 , b=5; printf(“a=%%d,b=%%d\\n”,a,b); } A) a=%2,d=%5 B) a=2,b=5 C) a=%%d,b=%%5 D) a=%d,b=%d 6.以下程序段输出结果是( )。 float a=3.1415; printf (“|%6.0f|\\n”,a,b); A) |3.1415| B) | 3.0| C) | 3| D) |3. | 7.以下程序段输出结果是( )。 float a=57.666; printf(“*0.2f*\\n”,a); A)*0000057.66 B) *57.66* C) *00000.57.67* D) *57.57* 8.若变量c定义为float型,当从终端输入283.1900后按回车,能给变量c赋以283.19的输入语句是( )。 A)scanf(“%f”,c); B)scanf(“%8.4f”,&c); C)scanf(“%d”,&c) D)scanf(“?”,&c); 9.若有以下定义语句,则输出结果是( )。 int u=010,v=0x10,w=10; printf(“%d,%d,%d\\n”,u,v,w); A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,10 10.下面程序的输出是( )。 #include printf(“%d,%o,%x\\n”,k,k,k); } A)12,11,11 B)11,13,13 C)11,013,0xb D)11,13,b 11.下面程序的输出结果是( )。 #include { int x=5,y=3; printf(“%d\\n”,y=x/y); } A)0 B)1 C)3 D)不确定的值 12.若变量已正确定义,下面程序段的输出结果是( )。//与3类似 x=5.238794; printf(“%f\\n”,(int)(x*1000+0.5)/(float)1000); A)5.239000 B)输出格式说明与输出项不匹配,输出无定值 C)5.238000 D)5.24 13.下面语句的输出结果是( )。 print(\ A)|61.45000| B)|3461.450| C)|3461.45000| D)|3461.4500| 14.执行下面程序中的输出语句后,a的值是( )。 #include printf(\A)65 B)20 C)15 D)10 15.以下程序不用第三个变量,实现将两个数进行对调的操作,请填空( #include { int a,b; scanf(\ printf(\ a=a+b;b=a-b;a=_____; printf(\A)a=b B)a-b C)b*a D)a/b 16.以下程序的输出结果是( )。 #include { int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(\ A)27.000000 B)27.500000 C)28.000000 D)28.500000 17.若变量都已正确说明,则以下程序段输出结果是( )。 a=2; b=3; printf(“a>b?***a=%d;###b=%d”,a,b); ????? A)没有正确的输出格式控制 B)输出为:****a=2 C)输出为:###b=2 D)输出为:***a=2###b=2 18.若已定义int a=256;,执行语句printf(\的结果是( )。A)100 B)256 C)ffe D)ff 19.执行下列程序时输入1234567,程序的运行结果为( )。 )。 #include scanf(\ printf(\+y); } A)17 B)46 C)15 D)9 20.已知int a,;int b;float c;double d;,则表达式a*b==c-d结果为( )型。???? A)Double B)int C)float D)char 21.已知int a,b;,用语句scanf(\输入a,b的值时,不能作为输入数据分隔符的是( )。 A), B)空格 C)回车 D)[Tab]键 22.语句printf(\的输出结果是( )。 A)无输出 B)结果不确定 C)-1 D)1 23.下述程序的输出结果是( )。 #include { printf(\ A)2.50000 B)2.750000 C)3.375000 D)3.000000 二、填空题 1.变量i、j、k已定义为int类型并有初值0,用以下语句进行输入: scanf(“%d”,&j);scanf(“%d”,&k); 当执行以上输入语句,从键盘输入( 则变量i、j、k的值分别是 0,12,0 。 2.复合语句在语法上被认为是 一条语句 ,空语句的形式是 ; 。 3.C语句句尾用 ; 结束。 4.运行如下程序: #include scanf(“%d,%d,%d”,&a,&b,&c); printf(“%d,%d,%d”,a,b,c); } 运行时,输入3、4、5,输出的值为 3,4,5 。 5.字符常量使用一对 ' 界定单个字符,而字符串常量使用一对 \ 来界定若干个字符的序列。 6.设x=2.5,a=7,y=4.7, 则x+a%3*(int)(x+y)%2/4为 2.5 。 7.自增运算符(++)或自减运算符(--)只能用于 变量 ,不能用于 常量或表达式 。 8.表达式5%(-3)的值是 2 ,表达式-5%(-3)的值是 -2 。 三、读程序写结果 1.下列程序的输出结果是( )。 -200,25i=-200,j=25 #include i=-200 void main() j=25 { int i=-200,j=25; printf(\ printf(\ printf(\ 2.使用强制转换方法将正整数转换成字符。本程序的执行结果是( )。 #include { char c;int i; printf(\输入一个正整数(小于255):\ scanf(\ c=(char)i; printf(\的ASCII码为%d\\n\ 3.下列程序的输出结果是(560分钟<=>9小时20分钟 )。 #include { int i=560,h,m; h=i/60; m=i-60*h; printf(\分钟<=>%d小时%d分钟\\n\4. 下列程序的输出结果是( *3.140000,3.142* )。 #include { printf(\ 5.已有定义int d=-2;执行以下语句后的输出结果是( )。 printf(\ *d(1)=-2*d(2)= -2*d(3)=-2 * printf(\*d(4)=fffffffe*d(5)=fffffffe*d(6)=fffffffe* 6.在scanf()函数调用语言,可以在格式字符和%号之间加上一个星号,他的作用是(跳过对应的输入数据);当输入以下数据时:10 20 30 40〈回车〉(此处 代表空格),下面语句的执行结果是( 103040 )。 int a1,a2,a3; scanf(\printf(\ 7.执行以下程序时,若从第一列开始输入数据,为使变量 a=3,b=7,x=8.5,y=71.82,c1= 'A ',c2='a ', 正确的数据输入形式是( )。 #include { int a,b;float x,y;char c1,c2; scanf(\a=3b=7 scanf(\x=8.5y=71.82 scanf(\c1=A,c2=a printf(\四、程序填空 1、给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之 2 一的圆面积(注:圆面积公式为:S??r,在程序中定义的变量名要与公式的变量相同)。 例如:输入圆的半径值:19.527,输出为:s=598.949991。 注意:部分源程序给出如下。 试题程序: #include printf(\ scanf(\【1】); &x printf(\【2】/2.0)); } x*x 五、编程题 1.请编写程序其功能是:将两个两位的正整数a、b合并成一个整数放在c中。合并方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。 例如:当a=45,b=12,调用该函数后,c=5241。 2.假设m是一个三位数,则输出将m的个位,十位,百位反序而成的三位数(例如:123反序为321。 作业04 选择结构 一、选择题 1.下面的程序( )。 #include { int x =3,y =0,z =0; if(x =y +z) printf(\); else printf(\); } A)有语法错误不能通过编译 B)输出 * * * * C)可以通过编译,但是不能通过连接,因而不能运行 D)输出# # # # 2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( )。 #include scanf(\); if(x++>5) printf(\); else printf(\); } A)7和5 B)6和3 C)7和4 D)6和4 3.以下程序的输出结果是( )。 #include { int a =-1,b =4,k; k =(++a<0)&&! (b- -<= 0); printf(\); } A)104 B)103 C)003 D)004 4.能正确表示a≥10或a≤ 0的关系表达式是( )。 A)a >=10or a < =0 B)a >=10| a < =0 C)a >=10& &a < =0 D)a >=10||a < =0 5.假定所有变量以正确说明,下列程序段运行后x的值是( ) a=b=c=0;x =35; if(!a)x--; else if(b); if(c) x=3; else x=4; A)34 B)4 C)35 D6.表示关系X≤Y≤Z的c语言表达式为 ( )。 A)(X < =Y)&&(Y< =Z) B)(X < =Y)AND(Y< =Z) C)(X < =Y< =Z) D)(X < =Y)&(Y <=Z) 7.如下程序的输出结果是( )。 #include { int a,b,c =246; a=c/100%9; b=(-1)&&(-1); printf(\,%d\\n\ A)2,1 B)3,2 C)4,3 D)2, -1 。 )3 8.当a=1、b=2、c=5、d=5时,执行下面的程序后,x的值是( )。 if(a if(c if(b A)1 B)2 C)3 D)6 9.能正确表示a和b同时为正或同时为负的逻辑表达式是( )。 A)(a>=0||b>=0)&& (a<0||b<=0) B)(a>=0&&b>=0)&& (a<0&&b<=0) C)(a+b>0)&& (a+b<=0) D)a * b >0 10.若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是( )。 A)switch(a +b); B)switch(a +b) { case 1:y =a +b;break; { case 3: case 0:y =a -b;break; case 1:y =a +b;break; } case 3:y =b –a,break; } C)switch a D)switch(a –b) { case c1:y =a -b;break; { default:y =a *b;break; case c2:x =a *b;break; case 3:case 4:x=a +b;break; default: x =a +b; } case 10:case 11:y =a -b;break; } 11.下列关于switch语句和break语句的结论中,正确的是( )。 A)break语句是switch语句中的一部分 B)在switch语句中可以根据需要使用或不使用break语句 C)在switch语句中必须使用break语句 D)break语句只能用于switch语句中 12.设有说明语句“int a =1,b=0;”则执行以下语句后,输出为( )。 switch(a) { case 1: switch(b) { case 0:printf(\);break; case 1:printf(\);break; } case 2:printf(\);break; } A)* * 0 * * B)* * 0 * * * * 2 * * C)* * 0 * * * * 1 * * * * 2 * * D)有语法错误 13.为了避免在嵌套的条件语句if···else中产生二义性,C语言规定:else子句总是与( )配对。 A)缩排位置相同的if B)其之前最近的if C)其之后最近的if D)同一行上的if 14.有定义语句:int a =1 ,b =2,c =3,x;,则以下选项中各程序段执行后,x的值不等于3的是( )。 A)if(c else if(b { int a =5,b =4,c= 3,d= 2; if (a> b> c) printf(\); else if ((c-1>= d) == 1); printf(\); else printf(\);} 执行后输出结果是( )。 A)2 B)3 C)4 D)编译时有错,无结果1 x >0 16.有一函数:y = 0 x =0 ,以下程序段中不能根据x值正确计算出y值的是( )-1 x <0 A)if(x >0) y =1; B)y =0; else if(x = =0) y =0; if(x >0) y =1; else y = -1; else if (x <0) y = -1; C)y=0; D)if(x > =0) if(x > =0) if(x >0) y =1; if(x >0) y =1; else y =0; else y =-1; else y = -1; 17.与y=(x >0?1:x <0? -1:0);的功能相同的if语句是( )。 A)if(x >0) y =1; B)if(x) else if(x<0) y = -1; if(x >0) y=1; else y =0; else if(x <0) y = -1; else y =0; C)y = -1; D)y =0; if(x) if(x > =0) 。 if (x >0)y =1; if(x >0) y =1; else if(x = =0) y =0; else y = -1; else y = -1; 18.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为( )。 if (a if (c if(b < d) x = 2; else x = 3; else x = 6; else x = 7; A)1 B)2 C)3 D)6 19.为了使输出结果为:t=4,则给a和b输入的值应满足的条件是( )。 A)a>b B)a b void main() { int s,t,a,b; scanf (\); s =1;t =1; if(a>0) s=s+1; if (a>b) t=s+1; else if(a==b) t=5; else t=2*s; printf(\);} 20.对下述程序,( )是正确的判断 #include scanf(“%d,%d”,&x,&y); if(x>y) x=y;y=x; else x++;y++; printf(“%d,%d”,x,y);} A)语法错误,不能通过编译 B)输入数据3和4,则输入4和5 C)输入数据4和3,则输入3和4 D)输入数据4和3,则输出4和4 二、填空题 1.表示“整数x的绝对值大于5”时值为“真”的c语言表达式是 x>5 || x<-5 。 2.以下程序的输出结果是 0 。 #include { int a =5,b =4,c=3,d; d= (a>b>c); printf(\);} 3.20 { case 9:i+=1; case 10:i+=1; case 11:i+=1; default:i+=1; } 5.以下程序的输出结果是 2 。 #include { int x=2,y= -1,z =2; if(x if(y <0)z =0; else z + =1; printf(\); } 6.若运行时输入12,则以下程序的结果 0 。 #include scanf(\); y =x >12? x +10:x -12; printf(\);} 7.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z” 的表达式 x 8.已知A =7.5,B =2,C =3.6,表达式A > B&&C >A||A B的值是 0 。 三、读程序写结果 1.以下程序运行结果是( yes )。 void main( ) { int a =1,b =3,c =5; if(c =a +b) printf(\); else printf(\);} 2.以下程序运行结果是( 503 )。 void main( ) { int a =4,b =3,c =5,t =0; if (a printf(\,b,c); } 3.以下程序运行结果是( 20,0 )。 void main( ) { int x=10,y=20,t=0; if(x==y) t=x;x=y;y=t; printf(\); } 4.以下程序运行结果是( 1 3 2 )。 void main( ) { int i,m =0,n =0,k =0; for(i =9;i < =11;i + +) switch(i) { case 0:m + +;n + +;break; case 10:n + +;break; default: k + +;n + +; } printf(\); } 四、阅读下列程序,在【】处填入适当内容,使程序完整。 1.输入x、y两个整数,按先大后小的顺序输出x、y。 #include { int x,y, 【1】 ; t scanf(“%d %d”,&x,&y); if(x { 【2】t=x ; 【3】x=y ; 【4】y=t ; } printf(“x=%d,y=%d\\n”,x,y); } 2.输入一个三位数,按逆序输出各个位数 #include { int x,a,b,c,y; scanf(“%d”,&x); a= 【5】 ; x b= 【6】 ; x/10 c= 【7】 ; x/100 y=a*100+b*10+c; printf(“y=%d\\n”,y);} 3.输入百分制成绩,要求输出成绩的等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。 #include “stdio.h” void main( ) { float score; 【11】 ; char grade printf(“请输入学生成绩:”); scanf(“%f”,&score); switch( 【12】 ) (int)(score/10) { case 10: case 9 : grade=’A’;break; case 8 : grade=’B’;break; case 7 : grade=’C’;break; case 6 : grade=’D’;break; case 5 : case 4 : case 3 : case 2 : case 1 : case 0 : grade=’E’;} printf(“成绩是%5.1f,相应的等级是%c。\\n”,score,grade); } 五、编程题 1.从键盘输入一个字符,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其它字符,则原样输出。 .(x?1)?x..........2 .有一函数 ?y??2x?1....(1?x?10) ?3x?11...(x?10)? 写一程序,输入x,输出y值。 3.征税的办法如下:收入在800元以下(含800元)的不征税;收入在800元以上,1200元以下者,超过800元的部分按5%的税率征税;收入在1200元以上,2000元以下者,超过1200元的部分按8%的税率征税;收入在2000元以上,2000元以上部分按20%的税率征税,试编写按收入计算税费的程序。 作业05 循环结构 一、选择题 1.下列程序执行后的输出结果是( )。 void main() { int k=5; while(--k) printf(“%d”,k-=3); printf(“\\n”); } A)1 B)2 C)4 D)死循环 2.有下列程序段: int n,t=1,s=0; scanf(“%d”,&n) ; do{s=s+t ;t=t-2 ;}while(t !=n) ; 为使此程序段不陷入死循环,从键盘输入的数据应该是( )。 A)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数 3.若变量已经正确定义,有下列程序段输出结果是( )。 i=0; do printf(“%d,”,i); while(i++); printf(“%d\\n”,i); A)0,0 B)0,1 C)1,1 D)程序进入无限循环 4.若如下不构成无限循环的语句或语句组是( )。 A)n=0; B)n=0; do{++n;}while(n<=0); while(1) {n++;} C)n=10; D)for(n=0,i=1; ;i++) while(n);{n--;} n+=i; 5.设变量已经正确定义,则以下能正确计算f=n!的程序段是( )。 A)f=0; B)f=1; for(i=1;i<=n;i++)f*=i ; for(i=1;i for(i=n;i>1;i++)f*=i; for(i=n;i>=2;i--)f*=i; 6.下列程序的运行结果是( )。 #include { int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf(“%d\\n”,m); } A)0 B)1 C)2 D)3 7.下列程序的运行结果是( )。 #include for(;x>0;x--) { if(x%3) {printf(“%d,”,x--);continue;} printf(“%d,”,--x); } } A)7,4,2 B)8,7,5,2 C)9,7,6,4 D)8,5,4,2, 8.下列程序执行后的输出结果是( )。 void main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) {if(j%2) continue; x++;} x++;} printf(“x=%d\\n”,x); } A)x=4 B)x=8 C)x=6 D)x=12 9.下列程序的输出结果是( )。 void main() { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2= =1) {a+=5;continue;} a=3; } printf(“%d\\n”,b); } A)3 B)4 C)5 D)6 10.若有如下语句,则程序段( )。 int x=6; do{printf(“%d\\n”,x-=2);} while(--x); A)输出的是1 B)输出的是4和1 C)输出的是3和0 D)是死循环 11.下面程序段的输出结果是( )。 a=1;b=2;c=2; while(a printf(“%d,%d,%d”,a,b,c); A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1 12.下面程序的输出结果是( )。 #include { int x=10,y=10,i; for(i=0;x>8;y=++i) printf(“%d %d”,x--,y); } A)10 1 9 2 B)9 8 7 6 C)10 9 9 0 D)10 10 9 1 13.在while(x)语句中的x与下面条件表达式等价的是( )。 A)x= =0 B)x= =1 C)x!=1 D)x!=0 14.下面的for语句的循环次数为( )。 for(x=1,y=0;(y!=123)&&(x<4);x++); A)是无限循环 B)循环次数不定 C)循环执行4次 D)循环执行3次 15.执行下面程序片段的结果是( )。 int x=23; do{ printf(“%d”,x--); }while(!x); A)打印出321 B)打印出23 C)不打印任何内容 D)陷入死循环 16.以下程序执行结果是( )。 #include s+=a++;printf(“%d\\n”,s);} A)8 B)10 C)7 D)11 17.以下循环体的执行次数是( )。 #include for(i=0,j=1;i<=j+1;i+=2,j--) printf(“%d\\n”,i); } A)3 B)2 C)1 D)0 18.如下程序段的输出结果是( )。 #include while(n>6) {n--;printf(“%d”,n);} } A)987 B)876 C)8765 D)9876 19.有以下程序段: int k=0; while(k=1)k++; while循环执行的次数是( )。 A)无限次 B)有语法错误,不能执行 C)一次也不执行 D)执行一次 20.以下程序中,while循环的循环次数是( )。 #include { if(i<1) continue; if(i= =5) break; i++; } ??} A)1 B)10 C)6 D)死循环,不能确定次数 二、读程序写运行结果 1.以下程序的输出结果是( 52 )。 #include { int i=10,j=0; do { j=j+i; i--;}while(i>2); printf(“%d\\n”,j); } 2.以下程序的输出结果是( 17 )。 #include while(x>10&&x<50) { x++; if(x/3) {x++;break;} else continue;} printf(“%d\\n”,x); } 3.有以下程序: #include void main() { char c; while((c=getchar())!=’?’) putchar(--c); } 程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果是( X )。 4.下面程序的运行结果是( s=254 )。 #include { 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); } 5.下面程序段中循环体的执行次数是( 3 )。 a=10; b=0; do{b+=2;a-=2+b;}while(a>=0); 6.下面程序段的运行结果是( ** )。 x=2; do{printf(“*”);x--;}while(x); 7.下面程序的运行结果是( 1,-2 )。 #include while(y-- !=-1) { do{a*=y ;a++ ;}while(y--); } printf (“%d,%d”,a,y); } 8.下面程序段的运行结果是( 8 )。 i=1 ;s=3 ; do{ s+=i++ ; if(s%7= =0) continue ; else ++i; }while(s<15) ; printf(“%d”,i); 9.下列程序的输出结果是( 2500 )。 #define A 100 void main() { int i=0,sum=0; do{ if(i==(i/2)*2) continue; sum+=i; }while(++i 10.以下程序的输出结果是( 29 )。 #include while(x>20&&x<30) {x++; if(x/3) {x++;break;} else continue;} printf(“%d\\n”,x); } 11.下面程序的输出结果是( 32 )。 void main() { int i=0,a=0; while(i<20) {for(; ;) { if((i)= =0) break; else i--; i+=11; a+=i; } printf(“%d\\n”,a); } 三、阅读下列程序,在【】处填入适当内容,使程序完整。 1.下面程序的功能是:计算1-100之间的奇数之和与偶数之和,请填空。 #include { int a,b,c,i; a=c=0; for(i=0;i<=100;i+=2) { a+=i; 【1】 b=i+1 c+=b; } printf(“偶数之和=%d\\n”,a); printf(“奇数之和=%d\\n”,c-11); } 2.下面程序的功能是:输出100以内能被3整除且个位为6的所有整数,请填空。 #include for(i=0; 【2】 ;i++) i<10 { j=i*10+6; if( 【3】 ) continue; j%3 !=0 printf(“%d”,j); } } 3.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。 #include { float x,amax,amin; scanf(“%f”,&x); amax=x;amin=x; while( 【4】 ) x>=0 { if(x>amax) amax=x; if( 【5】 ) amin=x; x printf(“\\namax=%f\\n amin=%f\\n”,amax,amin);} 4.下列程序的功能是计算:s=1+12+123+1234+12345。请填空。 void main() { int t=0,s=0,i; for(i=1;i<=5;i++) { t=i+ 【6】 ; t*10 s=s+t; } printf(“s=%d\\n”,s); } 5.下列程序的功能是:将输入的正整数按逆序输出。例如,若输入135则输出531。请填空。 #include printf(“enter a,number:”); scanf(“%d”,&n); printf(“output:”); do { s=n;printf(“%d”,s); 【7】 ;}while(n!=0); n=n/10 printf(“\\n”); } 四、编程题 1.求和:s=1*2+2*3+3*4?+99*100。 2.求出10至100之内的所有素数数。 3.输入一串字符,直到输入一个星号为止,统计(输出)其中字母(含大小写)个数和数字字符个数。 4.从键盘任意输入两个正整数,求出它们的最大公约数。 5.打印出所有的“水仙花数”,所谓的“水仙花数”是指一个3位数,其各位数字立方和 333 等于该数本身。例如153是一个“水仙花数”,因为153=1+5+3。 6.编程打印下列图形。 1) * 2) ***** *** ***** ***** ***** ******* ***** ********* ***** 7.根据下面的公式计算出?的值。从键盘输入要求满足的精度值eps。 ?1121231234?1???????????..... 23353573579 作业06 函数 一、选择题 1.已知函数abc的定义为:void abc(){ ??}则函数定义中void的含义是( )。 A)执行函数abc后,函数没有返回值 B)执行函数abc后,函数不再返回 C)执行函数abc后,可以返回任意类型 D)以上三个答案都是错误的 2.已知int p();p是( )。 A)int型变量 B)函数p的调用 C)一个函数声明,该函数的返回值是int型的值 D)强制类型转换表达式中的变量 3.C语言中的函数( )。 A)可以嵌套定义 B)不可以嵌套调用 C)可以嵌套调用,但不能调用自己 D)嵌套调用和调用自己均可 4.C语言中函数返回值的类型是由( )决定的。 A)return 语句中的表达式类型 B)调用该函数的主调函数类型 C)调用函数时临时 D)定义函数时所指定的函数类型 5.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是( )。 A)地址传递 B)值传递 C)由实参传给形参,并由形参传回来给实参 D)由用户指定传递方式 6.以下正确的函数形式是( )。 A)double fun(int x,int y) {z=x+y;return z;} B)fun(int x,y) {int z;return z;} C)fun(x,y) {int x,y;double z;z=x+y;return z;} D)double fun(int x,int y) {double z;z=x+y;return z;} 7.以下正确的说法是( )。 A)定义函数时,形参的类型说明可以放在函数体内 B)return后边的值不能为表达式 C)如果函数值的类型与返回值表达式类型不一致,以函数值类型为准 D)如果形参与实参的类型不一致,以实参类型为准 8.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。 A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传给实参 D)由用户指定传递方式 9.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )。 A)float型 B)int型 C)long型 D)double型 10.关于return语句,下列正确的说法是( )。 A)可以在同一函数中出现多次 B)在主函数中不能出现 C)必须在每个函数中出现 D)只能在除主函数之外的函数中出现一次 11.在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是( )。 A)extern B)register C)auto D)static 12.将一个函数说明为static后,该函数将( )。 A)既能被同一源文件中的函数调用,也能被其他源文件中的函数调用 B)只能被同一源文件中的函数调用,不能被其他源文件中的函数调用 C)只能被其他源文件中的函数调用,不能被其他源文件中的函数调用 D)既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用 13.在函数中的复合语句中定义了一个变量,则对于该变量以下正确的说法是( )。 A)只在该复合语句中有效 B)在该函数中有效 C)在本程序范围内均有效 D)为非法变量 14.以下不正确的说法是( )。 A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有效 D)在函数内的复合语句中定义的变量在本函数范围内有效 15.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。 A)自动(auto) B)静态(static) C)外部(extern) D)寄存器(register) 16.以下叙述中不正确的是( )。 A)函数中的自动变量可以赋初值,每调用一次,赋一次初值 B)在调用函数时,实参和对应形参的类型要一致 C)全局变量的隐含类别是自动存储类别 D)函数形参可以说明为register变量 17.以下说法中正确的是( )。 A)宏替换是在程序编译时进行的 B)函数调用是在程序编译时进行的 C)宏替换时,如果实参是表达式,应先求表达式的值,再替换 D)函数调用时,如果实参是表达式,应将表达式的值传递给形参 18.以下说法中正确的是( )。 A)define和printf都是C语句 B)define是C语句,printf不是C语句 C)define不是C语句,printf是C语句 D)define和printf都不是C语句 19.以下叙述中正确的是( ) A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 20.以下函数 fff(float x) { printf(\的类型是( ) A)与参数x的类型相同 B)Void类型 C)int类型 D)无法确定 21.有以下函数调用语句: fun((exp1,exp2),(exp3,exp4,exp5)); 其中含有的实参个数和是( ) A)1 B)2 C)4 D)5 22.以下程序的输出结果是( ) #include fun(int a,int b,int c) { c=a*b; } void main() { int c; fun(2,3,c); printf(\ A)0 B)1 C)6 D)无定值 23.如下程序的运行结果为( )。 #include<.stdio.h> f(int a) { auto int b=0; static c=3; b=b+1; c=c+1; return(a+b+c); } void main() { int a=2,i; for(i=0;i<3;i++) printf(\ A)6 7 8 B)7 8 9 C)5 6 7 D)无输出结果 24.分析以下程序的运行结果( )。 #include printf(\ A)10,20 B)10,10 C)20,10 D)20,20 25.分析一下程序的运行结果( )。 #include return 1; else return(n*func(n-1)); } void mian() { int x; x=func(3); printf(“%d\\n”,x); } A)5 B)6 C)7 D)8 二、填空题 1.设有如下宏定义:#define SWAP(z,x,y) {z=x,x=y,y=z;}以下程序段通过宏调用实现变量a和b内容的交换。请填空将语句补充完整。int a=5,b=16,c;SWAP( c ,a,b); 2.函数的实参传递到形参有两种方式:(单向值传递 )和( 地址传递 )。 3.在一个被调用的函数内部调用另一个函数的调用方式称为( 嵌套调用 )。在一个函数 内部直接或间接调用该函数成为函数( 递归调用 )的调用方式。 4.C语言变量按其作用域分为( 局部 )和( 全局 )。按其生存期分为(动态 )和(静态 )。 5.下列程序的输出结果是( 48 )。 #define N 3 #define Y(n) ((N+1)*n) void main(){ printf(“%d\\n”,2*(N+Y(5+1))); } 6.C语言变量的存储类别有( 自动 ),( 静态 ),( 外部 )和( 寄存器 )。 7.下列程序的输出结果是( 20 )。 #define MIN(x,y) (x)<(y)?(x):(y) void main() { int i,j,k; i=10;j=20; k=10*MIN(i,j); printf(“%d\\n”,k); } 8.以下程序的输结果是( 9.0 ) #include double sub(double x,double y,double z) { y-=1.0; z=z+x; return z; } void main() { double a=2.5,b=9.0; printf(“%f\\n”,sub(b-a,a,a)); } 9.以下程序的输出结果是( 2 4 6 ) #include { static int a=0; a+=2; pringf(“]”,a) ; } void main() { int cc; for(cc=1;cc<4;cc++) fun(); printf(“\\n”); } 10.下列程序的输出结果是( 56 ) #include int t(int x,int y,int cp,int dp) { cp=x*x+y*y; dp=x*x-y*y; } void main() { int a=4,b=3,c=5,d=6; t(a,b,c,d)}; printf(“%d%d\\n”,c,d); } 11.下面程序的运行结果是( 10 ) #include printf(“%d\\n”,x); } func(int x) { x=20; } 12.在C语言中,一个函数一般由两个部分组成他们是(函数首部)和( 函数体13.下面程序的运行结果是( A+B=9 ) #include { int a=4,b=5,c; c=plus(a,b); printf(“A+B=%d\\n”,c); } plus(int x,int y) { int z; z=x+y; return(z); } 三、读程序写结果 1.下述程序的输出结果是( 9 )。 #include if(n==1||n==2) s=2; else s=n+fun(n-1); return s; } void main() { printf(\ 2.以下程序的输出结果是( -1 )。 #include ) void main() { int i=2,p; p=f(i,i+1); printf(\int f(int a,int b) { int c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 3.有如下程序: #include if(x>y) z=x; else z=y; return(z); } void main() { extern int a,b; int a=3,b=5; printf(\运行结果为( 5 )。 4.分析以下程序的运行结果( 16#include return c; } void main() { int x=6,r; r=func(x,x+=2); printf(\ 5.下面程序的输出是( 6 )。#include 。 ) fun(int x) { static int a=3; a+=x; return(a); } void main() { int k=2,m=1,n; n=fun(k); n=fun(m); printf(“%d”,n); } 6.以下程序输出的结果是( 15 )。#include int func(int a,int b) { return(a+b); } void main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%d\\n”,r); } 7.以下程序的输出结果是 ( 1 ) 。#include if(n==1||n==2) s=2; else s=n-fun(n-1); return s; } void main() { printf(“%d\\n” ,fun(3)); } 8.以下程序的输出结果是( 5,7 ) #include { a=100;b=200; } void main() { int a=5,b=7; fun(); printf(“%d,%d\\n”,a,b); } 9.以下程序的输出结果是( 26 )。#include 。 void main() { int i; for(i=1;i { static int x=1; x*=x+1; printf(“%d”,x); } 10.以下程序的输出结果是( 3 )。 #include { if(n==1) return 1; else return f(n-1)+1; } void main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); printf(“%d\\n”,j); } 11.下列程序执行后输出的结果是( #include printf(“%d”,d); } void main( ) { int a=3; fun(a); d+=a++; printf(\%d\\n\ 12.以下程序输出的结果是( 8 )#include int abc(int u,int v); void main() { int a=24,b=16,c; c=abc(a,b); printf(\%d\\n\,c);} int abc(int u,int v) { int w; 84 )。。 while(v) {w=u%v;u=v;v=w;} return u; } 13.以下程序的输出结果是( 61515 )。 #include { static int d =5; d+=p; printf(“%d”,d); return (d); } void main() { int a=3; printf(“%d\\n”,fun(a+fun(d))); } 14.请选择下列程序的运行结果( 6 )。 #include { static int x=3; x++; return (x); } void main() { int i,x; for(i=0;i<=2;i++) x=try(); printf(“%d\\n”,x); } 四、程序填空 1.以下函数用以求x的y次方,请填空。 double fun(double x,int y) { int i; double z=1.0; for(i=1;i 【1】 ;i++) <=y z= 【2】 ; z*x return z; } 2.阅读以下程序并填空,该程序是求阶乘的累加和。 S=0!+1!+2!+.........+n! #include { int i; long s; s= 【1】 ; 1 for(i=1;i<=n;i++) s= 【2】 ; s*i return s;} void main() { long s; int k,n; scanf(“%d”,&n); s= 【3】 ; 0 for(k-0;k<=n;k++) s=s+ 【4】 ; f(k) printf(“\\n”,s); } 3.请补充main函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。 例如:当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。 注意:部分源程序给出如下,请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include 【1】 ; sum=0 system(\ printf(\scanf(\while(n<=m) { 【2】 ; n++; } sum+=n printf(\【3】 \\n\ld 五、改错题 1.下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+?+f(0)+f(1)+f(2)+?f(n)的值。 例如:当n为5时,函数值应为10.407143。f(x)函数定义如下: f(x)= 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /*************found**************/ double f(double x) { if(x==0.0||x==2.0) return 0.0; else if(x<0.0) return(x-1)/(x-2); else return(x+1)/(x-2); } double fun(int n) { int i; double s=0.0,y; for(i=-n; i<=n;i++) { y=f(1.0*i); s+=y;} /*************found**************/ return s } // return s ; } void main() { system(\ printf(\ 2.下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值: t=1+1/2+1/3+1/4+?+1/m 例如:若输入5,则应输出2.283333。请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include ?(x?1)?(x?2)??0?(x?1)?(x?2)?x?0x?0或x?2x?0 int I; for(I=2;I<=m;I++) /*************found**************/ t+=1.0/k; // t+=1.0/I /*************found**************/ return I; } //return t;} void main() { int m; system(\ printf(\ scanf(\ printf(\ 3.下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252, 则输出应该是20。若输入202,则输出应该是0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include { /*************found**************/ long k; // long k=1; do { k *=num; /*************found**************/ num \\=10; }while(num); // num /=10; }while(num); return(k); } void main() { int n; printf(\ scanf(\ printf(\六、编程题 1.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+?+1/(1+2+3+?+n) 例如:若n的值为11时,函数的值为1.833333。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干 语句。 试题程序: #include for(i=1;i<=n;i++) {t=t+i,s=s+1.0/t;} return s; } void main() { FILE *wf; int n; float s; system(\ printf(\ scanf(\ s=fun(n); printf(\/******************************/ wf=fopen(\ fprintf (wf,\ fclose(wf); /*****************************/ } 2.请编写函数fun,它的功能是计算: 0.5 s=(ln(1)+ln(2)+ln(3)+?+ln(m)) 在C语言中可调用log(n)函数求ln(n)。 例如:若m的值为20,则fun函数值为6.506583。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void main() { FILE *wf; system(\ printf(\ /******************************/ wf=fopen(\ fprintf(wf,\ fclose(wf); /*****************************/ } 3.编写函数fun,它的功能是:求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。 例如:n为1000时,函数值应为s=96.979379。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include } void main() { FILE *wf; system(\ printf(\/******************************/ wf=fopen(\ fprintf(wf,\ fclose(wf); /*****************************/ } 4.编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。m与n为两个正数且要求m>n。P=m!/(n!(m-n)!),例如,m=12,n=8时,运行结果为495.000000。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include float fun (int m, int n) { } void main () { FILE *wf; system(\ printf (\/******************************/ wf=fopen(\ fprintf (wf,\ fclose(wf); /*****************************/ } for(x=0;x printf(“m”,a[x]); } 三、读程序写结果 1.以下程序运行后的输出结果是( 19 )。 #include { int aa[5][5]={{1,2,3,4},{5,6,1,8},{5,9,10,2},{1,2,5,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i][2]; printf(“%d”,s); } 2.以下程序的输出结果是( 4 )。注意s初值为1 #include { int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) s+=a[i][j]; printf(“%d\\n”,s); } 3.下列程序的输出结果是( )。12344 #define N 20 fun(int a[ ],int n,int m) { int i,j; for(i=m;i>n;i--)a[i+1]=a[i]; } void main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) printf(“%d”,a[i]); } 4.有下列程序: 6 7 8 9 10 #include void change(int k[ ]) { k[0]=k[5]; } void main() { int x[10]={1,2,3,4,5,6,7,8,9,10},n=0; while(n<=4) { change(&x[n]); n++; } for(n=0;n<5;n++) printf(“%d ”,x[n]); printf(“\\n”); } 5.以下程序运行后的输出结果是( )。1,2,3,4,5,6,7,8,9,10, void f(int b[ ]) { int i; for(i=2;i<6;i++) b[i]*=2; } void main() { int a[10]={1,2,3,4,5,6,7,8,9,10},i; f(a); for(i=0;i<10;i++) printf(“%d,”,a[i]); } 四. 阅读下列程序,在【】处填入适当内容,使程序完整 1.下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行4个元素输出数组b, 请填空。 #include { int a[10],b[10],i; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=1;i<10;i++) 【1】 ; b[i-1]=a[i]-a[i-1] for(i=1;i<10;i++) { printf(“%d”, 【2】 ); b[i-1] if(i%4= =0) printf(“\\n”); } 2.下面程序将二维数组a的行和列元素互换后存放到另一个二维数组b中,请填空。 #include { int a[2][3]={{1,2,3},{4,5}},b[3][2],i,j; for(i=0;i<2;i++) { for(j=0;j<3;j++) 【3】 ; } b[i][j]=a[i][j] } 3.下列程序功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。 #include { int x[10],a[9],i; for (i=0;i<10;i++) scanf(“%d”,&x[i]); for( 【4】 ;i<10;i++) i=1 a[i-1]=x[i]+ 【5】 ; x[i-1] for(i=0;i<9;i++) printf(““%d”,a[i]); printf(“\\n”); } 4.用冒泡法进行排序。 #include { int a[10],i,j,t; for(i=0;i<10;i++) scanf(\ for(i=1; 【6】 ;i++) i<10 for(j=0; 【7】 ;j++) j<10-i if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<=9;i++) printf(\ printf(\5.用选择法进行排序。 #include { int a[10],i,j,t,mini,min; for(i=0;i<10;i++) scanf(\ for(i=0; 【8】 ;i++) i<9 { mini=i; for( 【9】 ;j<=9;j++) j=i+1 if(a[j] {t=a[i];a[i]=a[mini];a[mini]=t;} } for(i=0;i<=9;i++) printf(\ printf(\ 6.在数组内实现逆序输出。 #include { char a[100]; char b; int i=0; int n; gets(a); n=strlen(a); while( 【10】 ) i 【11】 ; a[i]=a[n-1-i] a[n-1-i]=b; i++; } a[n]='\\0'; printf(\7.判断字符串是否为回文。 #include { char a[100]; int n;int i=0;int flag=0; gets(a); n=strlen(a); while(i { 【12】 if(a[i] == a[n-1-i]); flag=1; else { flag=0; 【13】 ; } break i++; } if(flag==1) printf(\ else printf(\8.在数组内指定位置i插入元素x #include { int a[11],i,j,x; for(i=0;i<10;i++) scanf(\ scanf(\ for(j=9; 【14】 ;j--) j>=i 【15】 ; a[j+1]=a[j] a[i]=x; for(i=0;i<11;i++) printf(\9.在数组内删除指定元素x #include { int a[10],i,j,x; for(i=0;i<10;i++) scanf(\ scanf(\ for(i=0;a[i]!=x;i++) 【16】 ; for(j=i;j<=8;j++) 【17】 ; a[j]=a[j+1] for(i=0;i<9;i++) printf(\ 10.用折半查找法在有序数组中查找指定元素x #include { int a[10],x,i,start,end,flag=0; printf(\输入10个有序数:\\n\ for(i=0;i<10;i++) scanf(\ printf(\ scanf(\ for(start=0,end=9; 【18】 ;) start<=end { 【19】 ; i=(start+end)/2 if (x==a[i]) { flag=1; break; } else if (x>a[i]) 【20】 ; start=i+1 else end = i-1; } if(flag==1) printf(\ else printf(\
正在阅读:
c语言习题册及答案01-10
Nonlinear Hydrodynamics of a Hard Sphere Fluid Near the Glass Transition05-26
在全县中小学校后勤工作会议上的讲话09-13
谷歌黑客入侵语法整理10-31
音乐欣赏曲目(mp3目录)104-07
福建工程学院 - 大学物理(下)期末试题及答案 209-25
2022年安全月知识竞赛试题及答案07-31
教师轮岗交流工作个总结05-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 习题册
- 答案
- 语言
- TD-LTE中级题库(重要)
- 工业涂料产品常见涂装问题与改善对策
- 停车场泊车位的优化设计与效度评价
- 1身份证上的姓名与人事档案中的姓名不一致的
- 人力资源管理案例分析
- 2011年呼和浩特市食品企业同仁公司名录汇总
- 西江特大桥挂索施工方案 - 图文
- 思明第二实验小学四上第一单元数学校本作业
- 阿坝州特色农业发展对策研究(定稿)
- 再热器
- 实验一 TDN-MD系统及程序结构认识
- 十三五时期区域发展的若干思考考试题库
- 2018-2019三年级上学期班主任工作计划
- 加强和改进新形势下新闻宣传工作的几点思考
- 红楼梦论文 - 自然精深的创造艺术
- 八年级历史下册第三单元第12课《欣欣向荣的科教文体事业》教学设计北师大版
- 在资助优秀贫困大学生仪式上的讲话(定)
- 2013新版苏教版小学四年级英语Unit 2
- 浅析崇高的审美特征
- 16秋《职业生涯规划与管理(中旅院)》在线作业