第六次作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void abc ( )
{
.......
}
则函数定义中void的含义是。
A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回
C.执行函数abc后,可以返回任意类型D.以上三个答案全是错误的
9-5.在以下对C语言的描述中,正确的是。
A.在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参
9-20.编写一个程序,调用函数已知一个圆筒的半径、外径和高,计算该圆筒的体积。
9-21.编写一个求水仙花数的函数,求100到999之间的全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。例如:153就是一个水仙花数:
153 = 1*1*1 + 5*5*5 + 3*3*3
9-22.请编写一个函数,输出整数m的全部素数因子。例如:m=120时,因子为:
do{
x[i]=getchar();
k=1;
if(x[i]<'0'||x[i]>'9') k=0;
for(j=0;j<i;j++)
if(x[j]==x[i]) k=0;
if(k) i++;
}while(i<4);
x[4]='\0';
}
/* 4位数字顺序调整
flag=0,从小到大。flag=1,从大到小。*/
void SeqAdjust(char x[],int flag)
{
int i,j;
char t;
for(i=0;i<3;i++)
for(j=3;j>i;j--)
if(flag==1)
if(x[j]>x[j-1])
t=x[j],x[j]=x[j-1],x[j-1]=t;
else;
else
if(x[j]<x[j-1])
D.在C语言中无法得出上述三个结论之一
9-15.在C语言的函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则。
A.称为函数的直接递归B.称为函数的间接递归
C.称为函数的递归定义D.C语言中不允许这样的递归形式
二、填空题
9-16.变量的存储类型有__种,它们是_______________。
2,2,2,3,5
9-23.已知某数列前两项为2和3,其后继项根据当前的前两项的乘积按下列规则生成:①若乘积为一位数,则该乘积就是数列的后继项;②若乘积为二位数,则乘积的十位和个位数字依次作为数列的后继项。当N=10,求出该数列的前十项为:
2361886424。
9-24.编程计算n个整数中有多少个m个整数的组合(n>m)。
while(1){
printf("You'r data=%s\n",a);
b=diffrence(a);
printf("the diffrence=%d\n",b);
if(b==6174) break; /*极差为6174时为止*/
for(i=3;i>=0;i--) {
a[i]=48+b%10;
b=b/10;
_____________;
}
}
9-18.下面的函数是一个求阶乘的递归调用函数。
____facto (int n)
{
if ( n == 1 )________;
else return (__________);
}
三、编程题
9-19.编写一个判断一个整数是否是素数的函数,使用该函数编写验证1000以内的哥德巴赫猜想是否成立。
t=x[j],x[j]=x[j-1],x[j-1]=t;
}
/*计算最大序列和最小序列的差*/
int diffrence(char a[])
{
int a1,a2;
SeqAdjust(a,0);
a1=atoi(a);
/*printf("the Min vakue=%d\n",a1);*/
SeqAdjust(a,1);
习题九
一、选择题
9-1.C语言程序由函数组成。它的。
A.主函数必须在其它函数之前,函数内可以嵌套定义函数
B.主函数可以在其它函数之后,函数内不可以嵌套定义函数
C.主函数必须在其它函数之前,函数内不可以嵌套定义函数
D.主函数必须在其它函数之后,函数内可以嵌套定义函数
9-2.一个C语言程序的基本组成单位是。
C.由实参传给形参,并由形参传回来给实参D.由用户指定传递方式
9-11.下列的结论中只有_是正确的。
A.所有的递归程序均可以采用非递归算法实现
B.只有部分递归程序可以用非递归算法实现
C.所有的递归程序均不可以采用非递归算法实现
D.以上三种说法都不对
9-12.在下列结论中,只有一个是错误的,它是。
A.C语言允许函数的递归调用
C.可以嵌套调用,但不能递归调用D.嵌套调用和递归调用均可
9-9.C语言中函数返回值的类型是由_决定的。
A.return语句中的表达式类型B.调用该函数的主调函数类型
C.调用函数临时D.定义函数时所指定的函数类型
9-10.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是。
A.地址传递B.值传递
A.主程序B.子程序C.函数D.过程
9-3.以下说法中正确的是。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main( )函数中定义
C.C语言程序总是从main( )函数开始执行
D.C语言程序中的main( )函数必须放在程序的开始部分
9-4.已知函数abc的定义为:
重复以上过程,最后得到的结果总是6174。
(鉴于本题有一点难度,给出示例程序)
/*验证卡布列克运算*/
#include <stdio.h>
#include <stdlib.h>
/*接收4位有效数字*/
void InputData(char x[])
{
int i=0,j=0,k=1;
printf("Input your data and then return.\n");
9-29.验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
①将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
②将组成这个四位数的4个数字由小到大排列,形成由这4个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);
③求两个数的差,得到一个新的四位数。
9-17.下面的函数sum (int n)完成计算1~n的累加和。
______sum (int n)
{
inti;
long s=0L;
if (n<=0){
printf ("data error\n");
return-1L;
}
if (n==1)return1L;
else{
for(i=1;____;__) _________;
9-14.下列结论中,只有一个是正确的,它是。
A.在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候一定会产生相互影响
B.在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候可能会产生相互影响
C.在递归函数中使用自动变量不必担心,因为在递归过程中,不同层次的同名变量在赋值的时候肯定不会产生相互影响
9-25.已知ackermann函数,对于m>=0和n>=0有如下定义:
ack(0,n)=n+1
ack(m,0)=ack(m-1,1)
ack(m,n)=ack(m-1,ack(m,n-1))
请编程输入m和n,求出ack(m,n)之值。
9-26.用递归的方法打印杨辉三角形。
1
1 1
1 2 1
1 3 3 1
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
9-7.说明语句"static int i=10;"中"i=10"的含义是。
A.只说明了一个静态变量B.与"auto i=10;"在功能上等价
C.将变量i初始化为10D.将变量i赋值为10
9-8.C语言中的函数。
A.可以嵌套定义B.不可以嵌套调用
1 4 6 4 1
1 5 10 10 5 1
…… …… …… …… …… …… ……
9-27.编写一递归程序实现任意正整数向八进制数的转换。
9-28.请编写一个模拟轮盘赌的程序(a roulette program)。该轮盘赌机器随机的在0到35之间选择一个数字,游戏者可以打奇/偶赌或打具体数的赌。赢得奇/偶数赌时游戏者以2比1获奖,但如果轮盘赌机器选中0则所有奇/偶赌都输掉。如果游戏者打一个具体数的赌,而轮盘赌机器正好选中此数,则他以35比1获奖。
B.C语言函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中
9-6.以下叙述中错误的是。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类别是自动存储类别
a2=atoi(a); /*数字串到整数*/
/*printf("the来自百度文库Max vakue=%d\n",a2);*/
return a2-a1;
}
/*主函数*/
void main()
{
char a[5];
int b=0,i;
int k=0;
InputData(a); /*接收数据*/
/*卡布列克运算*/
B.C语言中的continue语句,可以通过改变程序的结构而省略
C.有些递归程序是不能用非递归算法实现的
D.C语言中不允许在函数中再定义函数
9-13.在下列结论中,只有一个是正确的,它是。
A.递归函数中的形式参数是自动变量
B.递归函数中的形式参数是外部变量
C.递归函数中的形式参数是静态变量
D.递归函数中的形式参数可以根据需要自己定义存储类型
}
k++;
};
/*输出重复次数*/
printf("times=%d\n",k);
}
{
.......
}
则函数定义中void的含义是。
A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回
C.执行函数abc后,可以返回任意类型D.以上三个答案全是错误的
9-5.在以下对C语言的描述中,正确的是。
A.在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参
9-20.编写一个程序,调用函数已知一个圆筒的半径、外径和高,计算该圆筒的体积。
9-21.编写一个求水仙花数的函数,求100到999之间的全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。例如:153就是一个水仙花数:
153 = 1*1*1 + 5*5*5 + 3*3*3
9-22.请编写一个函数,输出整数m的全部素数因子。例如:m=120时,因子为:
do{
x[i]=getchar();
k=1;
if(x[i]<'0'||x[i]>'9') k=0;
for(j=0;j<i;j++)
if(x[j]==x[i]) k=0;
if(k) i++;
}while(i<4);
x[4]='\0';
}
/* 4位数字顺序调整
flag=0,从小到大。flag=1,从大到小。*/
void SeqAdjust(char x[],int flag)
{
int i,j;
char t;
for(i=0;i<3;i++)
for(j=3;j>i;j--)
if(flag==1)
if(x[j]>x[j-1])
t=x[j],x[j]=x[j-1],x[j-1]=t;
else;
else
if(x[j]<x[j-1])
D.在C语言中无法得出上述三个结论之一
9-15.在C语言的函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则。
A.称为函数的直接递归B.称为函数的间接递归
C.称为函数的递归定义D.C语言中不允许这样的递归形式
二、填空题
9-16.变量的存储类型有__种,它们是_______________。
2,2,2,3,5
9-23.已知某数列前两项为2和3,其后继项根据当前的前两项的乘积按下列规则生成:①若乘积为一位数,则该乘积就是数列的后继项;②若乘积为二位数,则乘积的十位和个位数字依次作为数列的后继项。当N=10,求出该数列的前十项为:
2361886424。
9-24.编程计算n个整数中有多少个m个整数的组合(n>m)。
while(1){
printf("You'r data=%s\n",a);
b=diffrence(a);
printf("the diffrence=%d\n",b);
if(b==6174) break; /*极差为6174时为止*/
for(i=3;i>=0;i--) {
a[i]=48+b%10;
b=b/10;
_____________;
}
}
9-18.下面的函数是一个求阶乘的递归调用函数。
____facto (int n)
{
if ( n == 1 )________;
else return (__________);
}
三、编程题
9-19.编写一个判断一个整数是否是素数的函数,使用该函数编写验证1000以内的哥德巴赫猜想是否成立。
t=x[j],x[j]=x[j-1],x[j-1]=t;
}
/*计算最大序列和最小序列的差*/
int diffrence(char a[])
{
int a1,a2;
SeqAdjust(a,0);
a1=atoi(a);
/*printf("the Min vakue=%d\n",a1);*/
SeqAdjust(a,1);
习题九
一、选择题
9-1.C语言程序由函数组成。它的。
A.主函数必须在其它函数之前,函数内可以嵌套定义函数
B.主函数可以在其它函数之后,函数内不可以嵌套定义函数
C.主函数必须在其它函数之前,函数内不可以嵌套定义函数
D.主函数必须在其它函数之后,函数内可以嵌套定义函数
9-2.一个C语言程序的基本组成单位是。
C.由实参传给形参,并由形参传回来给实参D.由用户指定传递方式
9-11.下列的结论中只有_是正确的。
A.所有的递归程序均可以采用非递归算法实现
B.只有部分递归程序可以用非递归算法实现
C.所有的递归程序均不可以采用非递归算法实现
D.以上三种说法都不对
9-12.在下列结论中,只有一个是错误的,它是。
A.C语言允许函数的递归调用
C.可以嵌套调用,但不能递归调用D.嵌套调用和递归调用均可
9-9.C语言中函数返回值的类型是由_决定的。
A.return语句中的表达式类型B.调用该函数的主调函数类型
C.调用函数临时D.定义函数时所指定的函数类型
9-10.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是。
A.地址传递B.值传递
A.主程序B.子程序C.函数D.过程
9-3.以下说法中正确的是。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main( )函数中定义
C.C语言程序总是从main( )函数开始执行
D.C语言程序中的main( )函数必须放在程序的开始部分
9-4.已知函数abc的定义为:
重复以上过程,最后得到的结果总是6174。
(鉴于本题有一点难度,给出示例程序)
/*验证卡布列克运算*/
#include <stdio.h>
#include <stdlib.h>
/*接收4位有效数字*/
void InputData(char x[])
{
int i=0,j=0,k=1;
printf("Input your data and then return.\n");
9-29.验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
①将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
②将组成这个四位数的4个数字由小到大排列,形成由这4个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);
③求两个数的差,得到一个新的四位数。
9-17.下面的函数sum (int n)完成计算1~n的累加和。
______sum (int n)
{
inti;
long s=0L;
if (n<=0){
printf ("data error\n");
return-1L;
}
if (n==1)return1L;
else{
for(i=1;____;__) _________;
9-14.下列结论中,只有一个是正确的,它是。
A.在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候一定会产生相互影响
B.在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候可能会产生相互影响
C.在递归函数中使用自动变量不必担心,因为在递归过程中,不同层次的同名变量在赋值的时候肯定不会产生相互影响
9-25.已知ackermann函数,对于m>=0和n>=0有如下定义:
ack(0,n)=n+1
ack(m,0)=ack(m-1,1)
ack(m,n)=ack(m-1,ack(m,n-1))
请编程输入m和n,求出ack(m,n)之值。
9-26.用递归的方法打印杨辉三角形。
1
1 1
1 2 1
1 3 3 1
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
9-7.说明语句"static int i=10;"中"i=10"的含义是。
A.只说明了一个静态变量B.与"auto i=10;"在功能上等价
C.将变量i初始化为10D.将变量i赋值为10
9-8.C语言中的函数。
A.可以嵌套定义B.不可以嵌套调用
1 4 6 4 1
1 5 10 10 5 1
…… …… …… …… …… …… ……
9-27.编写一递归程序实现任意正整数向八进制数的转换。
9-28.请编写一个模拟轮盘赌的程序(a roulette program)。该轮盘赌机器随机的在0到35之间选择一个数字,游戏者可以打奇/偶赌或打具体数的赌。赢得奇/偶数赌时游戏者以2比1获奖,但如果轮盘赌机器选中0则所有奇/偶赌都输掉。如果游戏者打一个具体数的赌,而轮盘赌机器正好选中此数,则他以35比1获奖。
B.C语言函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中
9-6.以下叙述中错误的是。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类别是自动存储类别
a2=atoi(a); /*数字串到整数*/
/*printf("the来自百度文库Max vakue=%d\n",a2);*/
return a2-a1;
}
/*主函数*/
void main()
{
char a[5];
int b=0,i;
int k=0;
InputData(a); /*接收数据*/
/*卡布列克运算*/
B.C语言中的continue语句,可以通过改变程序的结构而省略
C.有些递归程序是不能用非递归算法实现的
D.C语言中不允许在函数中再定义函数
9-13.在下列结论中,只有一个是正确的,它是。
A.递归函数中的形式参数是自动变量
B.递归函数中的形式参数是外部变量
C.递归函数中的形式参数是静态变量
D.递归函数中的形式参数可以根据需要自己定义存储类型
}
k++;
};
/*输出重复次数*/
printf("times=%d\n",k);
}