int m;
scanf(\ prn(c,m); }
C语言2作业2
一、判断题 (18分)
1. 函数即可以嵌套定义,又可以嵌套调用。
2分
2. 空函数没有返回值,除此之外,有些函数可以带回一个或一个以上的返回值。
2分
3. return后面括号里的表达式的值即是此函数的值。
2分
4. 定义在main函数后的任何函数都需在main中进行函数声明。
2分
5. 如果被定义函数的返回值是整型,可以不必进行声明。
2分
6. 求n!既可以用递归的方式,也可以用递推的方式。
2分
7. 递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。
2分
8. 在C语言中,所有函数之间都可以相互调用。
2分
9. 函数的递归调用不过是一个函数直接或间接地调用它自身。
2分
二、选择题 (22分)
1.在下面的函数声明中,存在着语法错误的是( ).
[C]
A. BC(int a, int); B. BC(int, int); C. BC(int, int=5); D. BC(int x, int y);
2分
2.以下程序的输出结果是____。 #include
if(n==1||n==2)s=2; else s=n-fun(n-1);
return s; }
void main() {
printf(\ }
[A]
A. 1 B. 2 C. 3 D. 4
2分
3.C语言中,若未说明函数的类型,则系统默认该函数的类型是( )。
[C]
2分
A. float型 B. double型 C. int型 D. void型
4.以下程序中有语法错误,有关错误原因的正确说法是( )。 main()
{int G=5,k;
void par_char(int x,int y); ??
k=par_char(G); ?? }
[C]
2分
A. 语句void par_char();有错,不能用void说明函数的类型 B. 变量名G不能使用大写字母 C. 函数说明和函数调用语句之间有矛盾 D. 函数名中不能使用下划线
5.在C语言中,以下正确的说法是( )。
[D]
2分
A. 形参不占用存储单元
B. 只有当实参和与其对应的形参同名时才共占用存储单元 C. 实参和与其对应的形参共占一个存储单元 D. 实参和与其对应的形参各占用独自的存储单元
6.下列叙述中,正确的叙述项是( )。
[B]
2分
A. 定义函数时,必须要有形参
B. 函数中可以没有return语句,也可以有多条return语句
C. 函数f可以用f(f(x))形式调用,这种调用形式是递归调用 D. 函数必须有返回值
7.根据下面函数print的定义,选出调用函数print(5378)的值是( )。 void print(long n) { if (n==0) return ; else{ print(n/10); printf(\ return ; } }
[A]
A. 5 3 7 8 B. 8 7 3 5 C. 3 5 7 8 D. 8 7 5 3
2分
8.下述程序输出的结果是( )。 #include
void fun(int a,int b,int c) { a=456;b=567;c=678; }
void main()
{ int x=10,y=20,z=30; fun(x,y,z);
printf(\}
[A]
A. 30,20,10 B. 10,20,30 C. 456,567,678 D. 678,567,456
2分
9.下述程序输出的结果是( )。 #include
[C]
A. 20 B. 21 C. 22 D. 23
2分
10.在下列程序中,调用f(8)的值是( ) int f(int n)
{ if(n==1) return(1);
else if(n==2) return(2); else return(f(n-1)+f(n-2));
}
[D]
A. 13 B. 21 C. 55 D. 34
2分
11.有函数定义int fun() {return (3,4);},则调用fun后的函数返回值是____。
[B]
2分
A. 3 B. 4 C. 3和4 D. 程序出错 三、程序设计题 (20分) 1. 水仙花数2
10分
题目描述
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。现在要求输出所有在m和n范围内的水仙花数。 (100<=m<=n<=999)。 编程要求,要求编写一个判断水仙花数的函数,在主函数调用该函数判断某个数是否为水仙花数。
输入描述
输入数据包括两个整数m和n
输出描述
要求输出所有在给定范围内的水仙花数如果有多个,则要求在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no;(注意:输出字母小写)
样例输入
样例输入1: 100 999
样例输入2:
200 300
样例输出
样例输出1: 153 370 371 407
样例输出2:
no 【参考答案】
#include
int isflower(int x) // 判断整数x是否水仙花数 { int a,b,c; a=x; b=x/10; c=x/100;
if (a*a*a+b*b*b+c*c*c==x) return 1; // 若是水仙花数返回1,否则返回0 else return 0; }
void main()
{ int n,m,i,c=0; // 变量c统计水仙花数个数 scanf(\ for(i=m;i<=n;i++) { if (isflower(i)==1) { printf(\ c++; // 或c=1; 则用变量c标识有否水仙花数 } } if (c==0) printf(\// 若在此范围内无水仙花数,则输出no }
2. 计算x的n次幂2
10分
题目描述
输入一个实数x和一个整数n(n≥0),计算x的n次幂。要求将计算x的n次幂定义成函数,不允许使用库函数pow。
输入描述
一个实数和一个整数,中间用空格间隔
输出描述
输出结果保留三位小数
样例输入
2.4 3
样例输出
13.824 【参考答案1】 #include
double mypow(double x,int n) { int i;
double y;
for(i=y=1;i<=n;i++) y=y*x; return y; }
void main() { int n;
double x,y=1;
scanf(\ y=mypow(x,n);
printf(\}
【参考答案2】 #include