C语言 第七章 函数
- 格式:doc
- 大小:40.50 KB
- 文档页数:3
第五次实验题目-第七章函数教学目标31.一元二次方程的系数:a、b、c由主函数输入,编写函数求方程的根。
#include <stdio.h>#include <math.h>void root(double a, double b, double c){ double delta,x1,x2,m,n;if (fabs(a) <= 1e-6){if (fabs(b) <= 1e-6)puts("Not an equation");elseprintf("x=%.2lf",-c/b);return;}else{delta=b*b - 4*a*c;m = -b / (2*a);n = sqrt(fabs(delta)) / (2*a);x1 = m + n;x2 = m - n;if (fabs(delta) <= 1e-6)printf("x1=%.2lf, x2=%.2lf", x1, x1);else if (delta < 0)printf("x1=%.2lf+%.2lfi, x2=%.2lf-%.2lfi",m,n,m,n);elseprintf("x1=%.2lf, x2=%.2lf", x1, x2);}}int main( ){ double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);root(a,b,c);return 0;}教学目标32.输入一串字符,统计其中英文字母的个数,编写统计英文字母个数的函数。
#include<stdio.h>int numberOfLetter(char str[]) {int i=0;int num = 0;//统计字母个数while (str[i]!=’\0’) {if ((str[i]>='A'&& str[i]<='Z')||( str[i]>='a'&& str[i]<='z')) num++;i++;}return num;}int main( ) {char str[100];int letterNum;printf("Enter a string: ");gets(str);letterNum = numberOfLetter(str);printf("Number of letters is %d.\n", letterNum);return 0;}教学目标33. 求100以内所有素数的和。
第七章函数一、选择题1.以下函数声明正确的是: C 。
(02~03第一学期试题)A) double fun(int x, int y) B) double fun(int x; int y)C) double fun(int x, int y) ; D) double fun(int x , y)2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。
(0级)A)地址传递;B)单向值传递;C)双向值传递;D)由用户指定传递方式3.以下关于C语言程序中函数的说法正确的是: B 。
(0级)A)函数的定义可以嵌套,但函数的调用不可以嵌套;B)函数的定义不可以嵌套,但函数的调用可以嵌套;C)函数的定义和调用均不可以嵌套;D)函数的定义和点用都可以嵌套。
4.以下正确的函数形式是: D 。
(1级)A)double fun(int x,int y) B)fun (int x,y){z=x+y;return z;} {int z;return z;}C)fun(x,y) D)double fun(int x,int y){int x,y ; double z; {double z;z=x+y; return z;} z=x+y; return z;}5.以下说法不正确的是: B 。
(1级)C 语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以是任意类型D)形参应与其对应的实参类型一致6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B 。
(0级)A) float型B) int 型C)long 型D)double 型7.以下错误的描述是 D 。
(0级)函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为一个函数的实参D)做为一个函数的形参8.若用数组名作为函数调用的实参,传递给形参的是 A 。
(0级)A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数9.以下正确的说法是 A 。
(完整版)答案第七章函数..第七章函数一、选择题1.以下函数声明正确的是: C 。
(02~03第一学期试题)A) double fun(int x, int y) B) double fun(int x; int y)C) double fun(int x, int y) ; D) double fun(int x , y)2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。
(0级)A)地址传递;B)单向值传递;C)双向值传递;D)由用户指定传递方式3.以下关于C语言程序中函数的说法正确的是: B 。
(0级)A)函数的定义可以嵌套,但函数的调用不可以嵌套;B)函数的定义不可以嵌套,但函数的调用可以嵌套;C)函数的定义和调用均不可以嵌套;D)函数的定义和点用都可以嵌套。
4.以下正确的函数形式是: D 。
(1级)A)double fun(int x,int y) B)fun (int x,y){z=x+y;return z;} {int z;return z;}C)fun(x,y) D)double fun(int x,int y){int x,y ; double z; {double z;z=x+y; return z;} z=x+y; return z;}5.以下说法不正确的是: B 。
(1级)C 语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以是任意类型D)形参应与其对应的实参类型一致6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B 。
(0级)A) float型B) int 型C)long 型D)double 型7.以下错误的描述是 D 。
(0级)函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为一个函数的实参D)做为一个函数的形参8.若用数组名作为函数调用的实参,传递给形参的是 A 。
(0级)A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数9.以下正确的说法是 A 。
第七章函数
一、选择题
1.【B】
分析:函数返回值的隐含类型是整型。
2.【B】
分析:main函数可以在任何地方出现。
它是程序的入口。
3.【D】
分析:函数的调用有一个返回值或者实现一定的功能,因此可以作为独立的语句存在,也可以出现在表达式中,可以作为一个函数的实参(返回值是一个实际的值)。
4.【B】
分析:实参与形参之间的数据传递,只能是实参传给形参,单向传递。
5.【B】
分析:任何函数(除了main函数)的使用通过调用实现。
普能的函数都能被单独编译(一定要能过调用才能运行),不能在一个函数中嵌套定义另一个函数。
6.【CD】
分析:C选项程序就是由若干个函数组成,无论是否有其他函数,主函数一定得存在。
每个程序都必须有且仅有一个主函数,但不是每个程序文件都必须有main()函数。
因为一个程序可能包含多个程序文件。
函数不能嵌套定义。
7.【D】
分析:函数调用时实参必须与形参在个数,类型,顺序上相同。
A选项中的"abc"是字符串,所以错误。
C选项中'65'本身就是错误的。
函数的返回值为空,不能用于赋值运算,所以B选项错误。
D选项的第二个32在传给形参时可以转换为实型,正确。
8.【A】
分析:实参都是用逗号隔开,第二个实参是个加法表达式,第三个实参是个逗号表达式。
9.【C】
分析:fl函数功能返回较大的值,f2函数的功能返回较小的值。
f1(a,b)返回为4,f2(a,b)返回为3。
10.【C】
分析:void *fun();的含义是fun函数的返回值是无值型的指针类型。
11.【C】
分析:函数在调用时不会出现类型说明符,所以A,D错误。
函数的返回值为空,不能用于赋值运算,所以B选项错误。
12.【D】
分析:fun函数的功能选择两个数中较大的一个作为返回值。
x为3,y为8,z为6以实参传到形参中,所以fun(fun(x,y), 2*z)等价于fun(fun(3,8), 2*6)等价于fun(8, 12),最后r被赋12。
答案选D。
13.【B】
分析:fun函数功能返回两个数之和。
此题就是函数调用作为函数实参。
a为2,b为5,c 为8传到fun((int)fun(a+c,b),a-c))中那么它等价于fun(15,-6)。
所以答案选B。
14.【C】
分析:此题关键的一点就是实参与形参数据是单向传递的,a为31以实参传到函数中或者说传到形参z中,而函数体z=x*x+y*y会使z发生改变,形参改变了,但是实参是不
会改变的。
所以请大家记好实参是永远不会改变的。
所以a还是31。
15.【D】
分析:同12,13题。
16.【C】
分析:此题是复杂的函数调用,fun2中调用了fun1。
fun1的功能是求一个数的平方。
将实参1.1和2.0传到fun2的形参,然后进行计算。
注意返回值被强制转换为整型了,所以答案选C。
17.【D】
分析:A选项f的初值不能为0。
B,C选项for循环有误,死循环。
18.【A】
分析:函数声明时形参的类型说明符一定不能省。
形参名可以省,也可以和定义的不同。
19.【C】
分析:声明既可以在主函数内也可以在主函数外,同时声明不会出错。
20.【D】
分析:a,b,c是实参传给形参的,是不会改变的。
21.【A】
分析:函数的返回值如果缺省默认为整型。
22.【A】
分析:函数一定要先定义后调用,如B选项,或者先声明再调用最后定义,如C,D选项。
23.【C】
分析:同20题。
24.【C】
分析:函数定义时,形参类型一定不能省。
25.【C】
分析:此题涉及到后面的知识,请学有余力的同学自己完成。
26.【B】
分析:同25题。
二、填空题
1.4334
分析:同选择题14,20题。
2.i<10 j%3 !=0
分析:j=i*10+6;从这条语句可以看出i从1变化到9可以选出100以内个位数为6的所有整数。
所以第一空填入i<10。
第二空填入j%3 !=0,用来判断是否能被3整除。
3.return 0 return 1
分析:从函数的首部看,返回值类型int,函数名isprime,形参为int类型,形参名字为a。
接下来定义一个int类型的变量i,后面语句部分是判定素数。
我们知道,判断一个整数是不是素数,就看除了1和它本身外,还有没有能被它整除的整数。
当i从2开始一直到a/2,一旦有一个i能被a整除,那么a就不是素数,返回0。
所以if条件后面应该填写return 0。
如果整个for循环结束了if的条件都为假,即表示没有哪一个i能被a 整除,a必为素数,需要返回1。
因此后面的空应该填写return 1 。
注意,执行了return 语句后就会退出函数,不会再执行后面的语句。
4.t*10
分析:从1+12+123+1234+12345可以看出个位数,刚好是i的各个值。
后一个数都是都是前一个数乘10然后加个数。
5.a=1.0,b=1.0,s=1.0;
分析:此题给a,b,s赋初值,思路同上题。
注意a,b,s是实型的。
6.m=fun(a,4)+fun(b,4)-fun(a+b,3);
分析:对fun(x,n)函数的分析可以看出其功能是求x n,所以fun(a,4)就是a4,fun(b,4)就是b4,fun(a+b,3)就是(a+b)3。
7.x x*x+1
分析:题目要求求f(x)的累加和,s+=F( );这条语句就是完成累加功能,所以是调用函数。
填入x。
然后f(x)=x2+1,所以返回值填x*x+1。
8.-f fun(10)
分析:从1-2+3-4+ … +9-10可以看出是正负号交替出现的。
f就是1和-1交替。
所以第一空填-f。
然后是从1运算到10,所以函数调用时,实参传入10,填入fun(10)。
9.9
分析:函数返回为(y-x)*x,所以f(3,4)为3,f(3,5)为6,f(f(3,4),f(3,5))等价于f(3,6)为9。