把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法(用K表示)?请设计一个算法计算K值(只需要计算K值,不用把具体的分法输出)。注意:5,1,1和1,5,1是同一种分法。
第1题:
计算π的近似值的一个公式是π/4=1-1/3+1/5_1/7+…+(-1)n-11/(2n-1)。某人编写下面的程序用此公式计算并输出π的近似值:
Private Sub Command1_Click()
PI=1
Sign=1
13=20000
For k=3 To n
sign=-sign
PI=PI+sign/k
Next k
Print PI*4
End sub
运行后发现结果为3.22751,显然,程序需要修改。下面修改方案中正确的是
A.把For k=3To n改为For k=1 To n
B.把U=20000改为n=20000000
C.把For k:3 To n改为For k=3 To n Step 2
D.把PI=1改为PI=0
第2题:
下列给定的程序中,函数fun()的功能是: 计算并输出k以内最大的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include<stdio.h>
include<conio.h>
int fun(int k)
{
int m=0,mc=0,j;
/*************found*************/
while(k>=2)&&(mc<6)
{
/*************found*************/
if((k%7=0)||(k%ll=0))
{
/*************found**************/
m=k;
mc++;
}
k--;
}
return m;
}
main()
{
clrscr();
printf("%d\n",fun(500));
}
第3题:
以下程序中,函数 sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
define M 2
define N 4
void SumColumMin(int a[M][N],int *sum)
{ int i,j,k,s=0;
for(i=0;i〈N;i++)
{ k=0;
for(j=1;j<M;j++)
if(a[k][i]>a[j][i])k=j;
s+=【 】;
}
【 】 =s;
}
main( )
{ int x[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(【 】);
printf("%d\n",s);
}
第4题:
( 26 )计算二的近似值的一个公式是
某人编写下面的程序用此公式计算并输出 π 的近似值:
Private Sub Comand1_Click ()
PI = 1
Sign = 1
n=20000
For k=3 To n
Sign=-Sign/k
PI=PI+Sign/k
Next k
Print PI*4
End Sub
运行后发现结果为 3.22751 ,显然,程序需要修改。下面修改方案中正确的是
A )把 For k=3 To n 改为 For k=1 To n
B )把 n=20000 改为 n=20000000
C )把 For k=3 To n 改为 For k=3 To n Step 2
D )把 PI=1 改为 PI=0
第5题:
请编写一个函数fun(),它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
7 11 14 21 X 28 33 35 42 44 49
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<conio.h>
include<stdio.h>
define M 100
void fun(int m, int *a, int *n)
{
}
main()
{
int aa[M],n,k;
clrscr();
fun(50,aa,&n);
for(k=0;k<n; k++)
if((k+1)%20==0) /*每行输出20个数*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
}
第6题:
阅读以下说明和C程序,将应填入(n)处。
[说明]
某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。对一组环境温度值(ITEMS个),人们已经测量得到了相应的Ratio值(见表1)。该表粗略地描述了曲线Ratio(temp)。

校正系数K是Ratio的倒数,因此也依赖于环境温度temp。在数据处理中,人们需要用更多的列表值细致地描述曲线K(temp),如表2所示。在表2中,各温度值所对应的K值是对表1进行线性插值再求倒数得到的,具体的计算方法如下:
1.根据temp值,在表1中用二分法查找;
2.若找到相应的温度值,则按相应的Ratio值求倒数得到K值:
3.若没找到相应的温度值,则可确定temp所在的温度区间[Tp1, Tp2],同时获得了相应的Ratio1和Ratio2,再按如下公式计算K值:
Step=(Ratlo1-Ratio2)/(Tp1-Tp2)
K=1.0/(Ratio1+Step*(temp-Tp1))
在程序中,当temp高于50℃或低于-40℃时,设定K=0。
[程序]
include <stdio.h>
typedef struct {
int Temp; /*环境温度*/
double Ratio; /*传感器的输出值*/
}CURVE;
define ITEMS 7
double GetK(int, CURVE*, int);
void main()
{
int Degree;
double k;
CURVE Curve[ITEMS]={ {-40,0.2},{-20,0.60},{-10,0.8},{0,1,0},
{10,1.17},{30,1.50}, {50,1.8} };
printf("环境温度 校正系数\n");
for( Degree= 40; Degree<=50; Degree++){
k=GetK(Degree, Curve, ITEMS);
printf(" %3d %4.2f\n",Degree,k);
}
}
double GetK(int Temp, CURVE *p, int n)
{/*用二分法在n个元素的有序表p中查找与Temp对应的传感器输出值*/
int low,high,m; double Step;
low=0; high=n-1;
if((Temp<p->Temp) ||( Temp>(p+high)->Temp))
return 0.0; /*超出温度范围时返回0.0*/
while (low<=high){
m=(1) ;
if(Temp==(p+m)->Temp)
return (2);
if (Temp<(p+m)->Temp)high=m-1;
else low=(3);
}
p+= high;
Step=((4))/((p+1)->Temp-p->Temp);
return 1.0/(p->Ratio +Step *((5)));
}



第7题:
10只无差别的橘子放到3个不同的盘子里。允许有的盘子空着。请问一共有多少种不同的放法?
A.36
B.66
C.54
D.72
第8题:
若一个栈初始为空,其输入序列是1,2,3…,n-l,n.其输出序列的第一个元素为 k (l≤k≤[n/2]),则输出序列的最后一个元素是(58) 。
A.值为n的元素
B.值为1的元素
C.值为n-k的元素
D.不确定的
第9题:
试计算A3.75M0.5N电极系的K值。
第10题:
线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相等的元素,在查找不成功的情况下,最多需要检索()次。设有100个结点,用二分法查找时,最大比较次数是()。
第11题:
第12题:
4种
5种
6种
7种
第13题:
10个大小相同的橘子放到3个不同的盘子里,允许有的盘子空着。请问一共有多少种不同的放法? A.286 B.220 C.120 D.66
第14题:
为计算a“的值,某人编写了函数power如下:
Private Function power(a As Integer,n As Integer)As Long
Dim P As Long
P=a
For k=l T0 n
P=P * a
Next k
poWer=P
End Function
在调试时发现是错误的,例如Print power(5,4)的输出应该是625,但实际输出是3125。程序需要修改。下面的修改方案中有3个是正确的,错误的一个是
A.把For k=1 To n改为For k=2 To n
B.把P=P*a改为P=p^n
C.把Fork=1 To n改为For k=1 To n-1
D.把P=a改为P=1
第15题:
计算的近似值的一个公式是π/4=1-(1/3)+(1/5)-(1/7)+…+(-1)n-1(1/2n -1)。 某人编写下面的程序用此公式计算并输出的近似值: Private Sub Cornmand1 Click( ) P1=1 Sign=1 n=20000 For k=3 To r Sign=-Sign PI=PI+SiRn/k Next k Print PI*4 End Sub 运行后发现结果勾3.22751,显然,程序需要修改。下面修改方案中正确的是( )。
A.把For k=3 To n改为For k=1 To n
B.把n=20000改为n=20000000
C.把For k=3 To n改为For k=3 To n Step 2
D.把PI=1改为P1=0
第16题:
请编写一个函数comm(int n,int k),该函数将用递归算法计算从n个人中选择k个人组成一个委员会的不同组合数,由n个人里选k个人的组合数=由(n-1)个人里选k个人的组合数+由(n-1)个人里选(k-1)个人的组合数。
注意:部分源程序已存在文件test41_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数comm的花括号中填写若干语句。
源程序文件test41-2.cpp清单如下:
include<iostream.h>
int comm(int n, int k)
{
}
void main ( )
{
int n=7, k=3;
cout<<"n=7,k=3"<<endl;
cout<<comm(n,k)<<endl;
}
第17题:
阅读以下技术说明和C代码,将C程序中(1)~(5)空缺处的内容填写完整。
[说明]
某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。对一组环境温度值(ITEMS个),已经测量得到了相应的Ratio值(如表4-10表格所示)。表4-10粗略地描述了曲线Ratio(temp)。

校正系数K是Ratio的倒数,因此也依赖于环境温度temp。在数据处理中,需要用更多的列表值细致地描述曲线K(temp),如表4-11所示。

在表4-11中,各温度值所对应的K值是对表4-10进行线性插值再求倒数得到的,具体的计算方法如下。
1) 根据temp值,在表4-10中用二分法查找;
2) 若找到相应的温度值,则按相应的Ratio值求倒数得到K值;
3) 若没找到相应的温度值,则可确定temp所在的温度区间[Tp1,Tp2],同时获得了相应的Ratio1和 Ratio2,再按如下公式计算K值:

在程序中,当temp高于50℃或低于-40℃C时,设定K=0。
[C程序]
include
typedef struct {
int Temp; /* 环境温度 */
double Ratio; /* 传感器的输出值 */
}CURVE;
define ITEMS 7
double GetK(int Temp,CURVE *p,int n)
{ /* 用二分法在n个元素的有序表p中查找与Temp对应的传感器输出值 */
int low, high, m;
double Step;
low = 0;
high = n-1;
if ((Temp<p->Temp) || (Temp>(p+high)->Temp))
return 0.0; /* 超出温度范围时返回 0.0 */
while (low<=high)
{ m=(1);
if (Temp==(p+m)->Temp)
return (2);
if (Temp<(p+m) >Temp)
high=m-1;
else
low=(3);
}
p+=high;
Step=( (4) )/((p+1)->Temp-p->Temp);
return 1.0/ (p->Ratio + Step*( (5) ) ;
}
void main()
{ int Degree;
double k;
CURVE Curve [ITEMS]={{-40,0.2},{-20,0.60.},{-10,0.8},{0,1.0},{10,1.17},{30,1.50},{50,1.8}};
printf ("环境温度 校正系数\n");
for (Degree=-40;Degree<=50;Degree++)
{ k=GetK ( Degree, Curve, ITEMS);
printf("%3d %4.2f\n",Degree,k);
}
}
图4-17 二分查找算法示意图1
3) 以查找温度值20℃C为例由于20℃>0℃因此设置下一个查找区间为([m+1high))即[46]如图4—18所示。
图4-18 二分查找算法示意图2
4) 由于20℃30℃因此取high等于m-1即下一个查找区间为([lowm-1])即[45]。再进一步分析由于20℃>10℃因此取low等于m+1即再下一个查找区间为[55]。而查找区间[55]上的数据30≠20至此可确定此次查找失败即如图4-19所示。
图4-19 二分查找算法示意图3
5) 由以上分析可知(1)空缺处应填入“(low+high)/2”。
6) 程序中“if(Temp==(p+m)->Temp)”语句用于判断是否找到相应的温度值若找到则执行“return (2)”语句以返回相应温度的校正系数K。由试题关键信息“若找到相应的温度值则按相应的Ratio值求倒数得到K值”可推理出(2)空缺处应填入“1.0/(p+m)->Ratio”。
7) 当“if(Temp==(p+m)->Temp)”语句的判断条件不满足时将执行“if(Temp(p+m)->Temp)”判断语句。若待查元素小将执行“high=m-1;”语句即在前半区间([lowm-11)进行二分查找。若待查元素大则在后半区间([m+1high]继续进行二分查找因此else语句中则需将“low”指针向上移动即执行“low=m+1”语句。
8) 根据题干中给出的计算式子“Step=
”以及题目中要求线性插值再求倒数得到K值可推理出(4)空缺处应填入“(p+1)->Ratio-p->Ratio”。
9) 同理根据题干中给出的计算式子“
”可推理出(5)空缺处应入“Temp-p->Temp”。
图4-17 二分查找算法示意图1
3) 以查找温度值20℃C为例,由于20℃>0℃,因此设置下一个查找区间为([m+1,high)),即[4,6],如图4—18所示。
图4-18 二分查找算法示意图2
4) 由于20℃30℃,因此取high等于m-1,即下一个查找区间为([low,m-1]),即[4,5]。再进一步分析,由于20℃>10℃,因此取low等于m+1,即再下一个查找区间为[5,5]。而查找区间[5,5]上的数据30≠20,至此可确定此次查找失败,即如图4-19所示。
图4-19 二分查找算法示意图3
5) 由以上分析可知,(1)空缺处应填入“(low+high)/2”。
6) 程序中“if(Temp==(p+m)->Temp)”语句用于判断是否找到相应的温度值,若找到,则执行“return (2)”语句以返回相应温度的校正系数K。由试题关键信息“若找到相应的温度值,则按相应的Ratio值求倒数得到K值”可推理出,(2)空缺处应填入“1.0/(p+m)->Ratio”。
7) 当“if(Temp==(p+m)->Temp)”语句的判断条件不满足时,将执行“if(Temp(p+m)->Temp)”判断语句。若待查元素小,将执行“high=m-1;”语句,即在前半区间([low,m-11)进行二分查找。若待查元素大,则在后半区间([m+1,high],继续进行二分查找,因此else语句中则需将“low”指针向上移动,即执行“low=m+1”语句。
8) 根据题干中给出的计算式子“Step=
”,以及题目中要求线性插值再求倒数得到K值可推理出(4)空缺处应填入“(p+1)->Ratio-p->Ratio”。
9) 同理,根据题干中给出的计算式子“
”可推理出,(5)空缺处应入“Temp-p->Temp”。
第18题:
计算的近似值的一个公式是π/4=1-(1/3)+(1/5)-(1/7)+…+(-1)n-1(1/2n -1)。
某人编写下面的程序用此公式计算并输出的近似值:
Private Sub Cornmand1 Click( )
P1=1
Sign=1
n=20000
For k=3 To r
Sign=-Sign
PI=PI+SiRn/k
Next k
Print PI*4
End Sub
运行后发现结果勾3.22751,显然,程序需要修改。下面修改方案中正确的是( )。
A.把For k=3 To n改为For k=1 To n
B.把n=20000改为n=20000000
C.把For k=3 To n改为For k=3 To n Step 2
D.把PI=1改为P1=0
第19题:
把7个不能区分的苹果放到3个不同的盘子里(允许有空盘),有多少种不同的放法?
A.21
B.18
C.36
D.38
第20题:
若一个栈初始为空,其输入序列是1,2,3,…,n-1,n,其输出序列的第一个元素为k(1≤k≤「n/2」),则输出序列的最后一个元素是()。
第21题:
将7个乒乓球放入3个同样的盒子里,允许有的盒子空着不放,共有()种不同的放法。
第22题:
给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。
第23题: