R[i]=(n)DIV(m)表示将两个值的商的余数代入寄存器i。
第1题:
函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。
例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。
#include
#include
float fun (int m, int n)
{ int i;
double p=1.0;
for(i=1;i<=m;i++)( );
for(i=1;i<=n;i++)( );
for(i=1;i<=m-n;i++)p=p/i;
return p;}
main ()
{ clrscr();
printf ("p=%f\n",fun (12,8));}
第2题:
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明2.1】
以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。
【函数2.1】
void fun1 (int a[])
{ int i,j,k,r,x,m;
for(i=2;i<=n;i++)
{ (1);
k=1;r=i-1;
while(k<=r)
{ m=(k+r)/2;
if(x<a[m])r=m-1;
else (2);
}
for(j=i-1;j>=k;j--)
a[j+l]=a[j];
(3);
}
}
【说明2.2】
以下程序可以把从键盘上输入的十进制数(long型)以二~十六进制形式输出。
【程序2.2】
include<stdio.h>
main()
{ charb[16]={'0','l','2','3 ,4,'5','6','7','8','9','A','B','C','D','E','F'};
int c[64],d,i=0,base;
long n;
printf("enter a number:\n");
scanf("%1d",&n);
printf("enter new basc:\n");
scanf("%d", &base);
do
{ c[i]=(4);
i++; n=n/base;
} while(n!=0);
printf("transmite new base:\n");
for(--i;i>=0;--i)
{ d=c[i];
printf("%c",(5));
}
}
第3题:
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明2.1】
以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。
【函数2.1】
void fun1(int a[])
{int i,j,k,r,x,m;
for(i=2;i<=n;i++)
{ (1) ;
k=1;r=i-1;
while(k<=r)
{m=(k+r)/2;
if(x<a[m])r=m-1;
else (2) ;
}
for(j=i-1;j>=k;j--)
a[j+1]=a[j];
(3) ;
}
}
【说明2.2】
以下程序可以把从键盘上输入的十进制数(1ong型)以二~十六进制形式输出。
【程序2.2】
#include<stdio.h>
main()
{char b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};
int c[64],d,i=0,base;
long n;
printf(″enter a number:′n″);
scanf(″%1d″,&n);
printf(″enter new basc:kn″);
scanf(″%d″,&base);
do
{c[i]= (4) ;
i++;n=n/base;
}while(n!=0);
printf("transmite new base:\n");
for(--i;i>=0;--i)
{ d=c[i];
printf("%c", (5) );
}
}
●试题二
【答案】(1)x=a[i](2)a[k]=x(3)k=m+1(4)n%base(5)b[d]
【解析】函数3.1的思想是依次将数组中的每一个元素插入到有序段中,使有序段的长度不断地扩大。对于待插入元素,先用二分查找法找出应该插入的位置。然后将元素插入。对数组来说,就是将该位置以后的元素依次后移,然后将待插入元素放到移出来的空位中。
程序3.2用的思想是除base(base在二~十六进制之间)取余法求得相应进制数,然后再转换输出。
第4题:
已知有一维数组A(0..m*n-1],若要对应为m行、n列的矩阵,则下面的对应关系(4)可将元素A[k](0≤k<m*n)表示成矩阵的第i行、第j列的元素(0≤i<m,0≤j<n)。
A.i=k/n,j=k%m
B.i=k/m,j=K%m
C.i=k/n,j=k%n
D.i=k/m,j=k%n
第5题:
阅读以下说明,将应填入(n)处的字句写在答卷纸的对应栏内。
【说明】
下面的程序为堆排序程序,其中函数adjust(i,n)是把以R[i](1≤i≤┕i/2┙)为根的二叉树调整成堆的函数,假定R[i]的左、右子树已经是堆,程序中的,是在主函数中说明的结构数组,它含有要排序的n个记录。
【程序】
Void adjust(i,n)
Int i,n;
{
iht k,j;
element extr;
extr=r[i];
k=i;
j=2*i;
while (j<=n )
{if ((j<n) && (r[j].key<r[j+1].key))
(1);
if (extr. key<r[j].key)
{
r[k]=r[j];
k=j;
(2);
}
else
(3);
}
r[k]=extr;
}
/*让i从┗i/2┛逐步减到1, 反复调用函数adjust, 便完成建立初始堆的过程。*/
void heapsort (r,n)
list r;
int n;
{
int i,1;
element extr;
for (i=n/2;i>=1;- -i)
(4); /* 建立初始堆*/
for (k--n;k>=2;k- -)
{
extr=r[1];
r[1]=r[k];
r[k]=extr;
(5);
}
}
第6题:
阅读下列C++程序和程序说明, 将应填入(n)处的字句写在答题纸的对应栏内。
【说明】构造最优二叉查找树。
具有n个结点的有序序列a1, a2, …, an存在于数组元素a[1]、a[2], …, a[n]之中, a[0]未被使用。结点a1, a2, …, an-1, an的查找成功的概率p1, p2, …, pn-1, pn存在于数组元素 p[1]、p[2], …, p[n—1]、p[n]之中, p[0]未用。另外, 查找失败的概率q0, q1, …, qn-1, qn存在于数组元素q[0]、p[1], …, q[n-1]、q[n]之中。算法计算的序列ai+1, ai+2,…, aj-1, aj的最优二叉查找树Tij的代价Cij存在于数组元素c[i][j]之中, Tij的根结点的序号rij存在于r[i][j]之中, 它的权值存在于w[i][j]之中。为了便于内存的动态分配, 统统使用一维数组取代二维数组。
const float MAXNUM=99999. 0; //尽可能大的浮点数
template<(1)>
void OPtimal_Binary_Search_Tree(float p[], float q[], Type a[], int n) {
float *C, *W;
c=(2);
w=(3);
int *r;
r=new int[(n+1)*(n+1)];
for(i=0; i<=n; i++)
{ c[i*(n+1)+i]=0. 0; // 即:c[i][i]=0.0, 用一维数组表示
w[i*(n+1)+i]=q[i]; // 即:w[i][i]=q[i], 用一维数组表示
}
int i, j, k, m, length; // m表示根结点的下标或序号, 范围为0~n
float minimum;
for(length=1; length<=n; length++) //处理的序列长度由1到n
for(i=0; i<=n-length; i++){ //i为二叉查找树Tij的起始序号
j=i + length; //j为二叉查找树Tij的终止序号。如:处理序列a1a2a3时,
//相应的二叉查找树为T03, i=0, 而j=3
w[i*(n+1)+j]=(4);
minimum =MAXMUM;
for(k=i+1; k<=j; k++) //考察以ai+1、ai+2, …, ai为根的情况
if((5)<minimum)
{ minimum=c[i*(n+1)+k-1]+c[k*(n+1)+j];m=k; }
c[i*(n+1)+j]=w[i*(n+1)+j]+c[i*(n+1)+m-1]+c[m*(n+1)+j];
r[i*(n+1)+j]=m; // r[i][j]=m
}
} //构造好的最优二叉查找树的根结点的序号在r[0][n]中
第7题:
阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:
5
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1
共有7种划分。这种划分的程序如下所示。
【程序】
include <stdio.h>
int n[1000],m,k;
void output sum()
{
int j;
for(j=0;n[j]!=0;j++)
printf("%d\t",n[j]);
printf("\n");
}
void sum(int i)
if(m-n[i]<n[i])
{ m=m-n[i];
(1)
i++;
n[i+1]=0;
}
else
{
(2)
m-=n[i];
i++;
}
if(m!=n[i])
sum(i);
else
output_sum();
if(n[i]>1)
{
n[i]--;
(3)
}
else
{
while((n[i]==1)&&(i>O))
{
i--;
(4)
}
if(i!=0)
{
(5)
sum(i);
}
}
}
void main()
{
int i;
scanf("%d",&n[0]);
m=k=n[0];
for(i=1;i<=k;i++)
n[i]=0;
while(n[0]!=1)
{
n[0]--;
i=0;
sum(0);
m=k;
}
}
第8题:
阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,
但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。
程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:
c[i][j]:将任务i分配给工人j的费用;
task[i]:值为0表示任务i未分配,值为j表示任务i分配给工人j;
worker[k]:值为0表示工人k未分配任务,值为1表示工人k已分配任务;
mincost:最小总费用。
【C程序】
#include<stdio.h>
#define N 8 /*N表示任务数和工人数*/
int c[N][N];
unsigned int mincost=65535; /*设置min的初始值,大于可能的总费用*/
int task[N],temp[N],workerIN];
void Plan(int k,unsigned Int cost)
{ int i;
if ((1)&&cost<mincost){
mincost=cost;
for (i=0;i<N;i++) temp[i]:task[i];
}
else{
for(i=0;i<N;i++) /*分配任务k*/
if (worker[i]=0&&(2)){
worker[i]=1; task[k]=(3);
Plan((4),cost+c[k][i]);
(5); task[k]=0;
}/*if*/
}
}/*Plan*/
void main()
{int i,j;
for (i=0;i<N;i++) { /*设置每个任务由不同工人承担时的费用及全局数组的初值*/
worker[i]=0;task[i]=0; temp[i]=0;
for(j=0;j<N;j++)
scanf ("%d",&c[i][j]);
}
Plan (0,0); /*从任务0开始分配*/
printf("\n最小费用=%d\n",mincost);
for(i二0;i<N;i++)
pnntf("Task%d iB assigned toWorker%d\n",i,temp[i]);
}/*main*/
第9题:
挨个儿[i g er] | 吖[] |
挨户[i h] | 阿[] |
挨家[i ji] | 阿鼻地狱[ b d y] |
挨肩儿[i jin er] | 阿昌族[ chng z] |
挨近[i jn] | 阿斗[ du] |
挨门[i mn] | 阿尔法粒子[ r f l z] |
唉[i] | 阿尔法射线[ r f sh xin] |
唉声叹气[i shng tn q] | 阿飞[ fi] |
毐[i] | 阿公[ gng] |
欸[i] | 阿訇[ hng] |
嗳(噯)[i] | 阿拉[ l] |
哀兵必胜[i bng b shng] | 阿拉伯人[ l b rn] |
哀愁[i chu] | 阿拉伯数字[ l b sh z] |
哀辞[i c] | 阿兰若[ ln r] |
哀悼[i do] | 阿罗汉[ lu hn] |
哀的美敦书[i d mi dn sh] | 阿猫阿狗[ mo gu] |
哀告[i go] | 阿门[ mn] |
哀号[i ho] | 阿木林[ m ln] |
哀嚎[i ho] | 阿片[ pin] |
哀鸿遍野[i hng bin y] | 阿婆[ p] |
哀毁骨立[i hu g l] | 阿Q[ Qi] |
哀矜[i jn] | 阿嚏[ t] |
哀苦[i k] | 阿姨[ y] |
哀怜[i lin] | 啊(呵)[] |
哀鸣[i mng] | 啊呀[ y] |
阿尔法粒子[ r f l z] | 啊哟[ y] |
阿尔法射线[ r f sh xin] | 锕[] |
阿飞[ fi] | 腌[] |
阿公[ gng] | 啊(呵)[] |
阿訇[ hng] | 嗄[] |
阿拉[ l] | 啊(呵)[] |
阿拉伯人[ l b rn] | 啊(呵)[] |
阿拉伯数字[ l b sh z] | 啊(阿、呵)[] |
阿兰若[ ln r] | 哎(嗳)[i] |
阿罗汉[ lu hn] | 哎呀[i y] |
阿猫阿狗[ mo gu] | 哎哟[i y] |
挨(捱)[i] | 哀[i] |
[i] | 哀兵必胜[i bng b shng] |
皑(皚)[i] | 哀愁[i chu] |
皑皑[i i] | 哀辞[i c] |
癌[i] | 哀悼[i do] |
癌变[i bin] | 哀的美敦书[i d mi dn sh] |
吖[] | 哀告[i go] |
阿[] | 哀号[i ho] |
阿鼻地狱[ b d y] | 哀嚎[i ho] |
阿昌族[ chng z] | 哀鸿遍野[i hng bin y] |
阿斗[ du] | 哀毁骨立[i hu g l] |
阿门[ mn] | 哀矜[i jn] |
阿木林[ m ln] | 哀苦[i k] |
阿片[ pin] | 哀怜[i lin] |
阿婆[ p] | 哀鸣[i mng] |
阿Q[ Qi] | 哀戚[i q] |
阿嚏[ t] | 哀启[i q] |
阿姨[ y] | 哀泣[i q] |
啊(呵)[] | 哀切[i qi] |
啊呀[ y] | 哀求[i qi] |
啊哟[ y] | 哀荣[i rng] |
锕[] | 哀伤[i shng] |
腌[] | 哀思[i s] |
啊(呵)[] | 哀叹[i tn] |
嗄[] | 哀恸[i tng] |
啊(呵)[] | 哀痛[i tng] |
啊(呵)[] | 哀婉[i wn] |
啊(阿、呵)[] | 哀艳[i yn] |
哎(嗳)[i] | 哀怨[i yun] |
哎呀[i y] | 哀乐[i yu] |
哎哟[i y] | 哀子[i z] |
哀[i] | 埃1[i] |
哀戚[i q] | 埃2[i] |
哀启[i q] | 挨[i] |
哀泣[i q] | 挨边[i bin] |
哀切[i qi] | 挨次[i c] |
哀求[i qi] | 挨个儿[i g er] |
哀荣[i rng] | 挨户[i h] |
哀伤[i shng] | 挨家[i ji] |
哀思[i s] | 挨肩儿[i jin er] |
哀叹[i tn] | 挨近[i jn] |
哀恸[i tng] | 挨门[i mn] |
哀痛[i tng] | 唉[i] |
哀婉[i wn] | 唉声叹气[i shng tn q] |
哀艳[i yn] | 娭[i] |
哀怨[i yun] | 欸[i] |
哀乐[i yu] | 锿[i] |
哀子[i z] | 挨(捱)[i] |
埃1[i] | [i] |
埃2[i] | 皑(皚)[i] |
挨[i] | 皑皑[i i] |
挨边[i bin] | 癌[i] |
挨次[i c] | 癌变[i bin] |
嗳气[i q] | 毐[i] |
嗳酸[i sun] | 欸[i] |
矮[i] | 嗳(噯)[i] |
矮墩墩[i dn dn] | 嗳气[i q] |
矮小[i xio] | 嗳酸[i sun] |
矮星[i xng] | 矮[i] |
矮子[i zi] | 矮墩墩[i dn dn] |
蔼1[i] | 矮小[i xio] |
娭[i] | 矮星[i xng] |
欸[i] | 矮子[i zi] |
锿[i] | 蔼1[i] |
//以下为c++代码,在编译器中正常通过编译,并运行成功
#include<iostream>
using namespace std;
void quicksort(int a[],int left,int right)
{
int pivot,i,j;
int tmp;
if(left>=right)//此时需要给出每种情况的返回值
return ;
if(left < right)
{i = left; j = right + 1;
pivot = a[left];
//此时pivot 指向最左边的那个元素
do{
cout<<"pivot = "<<pivot<<endl;
do{i++;}while(a[i]<pivot);
//找到从左边开始第一个大于pivot的元素
do{j--;}while(a[j]>pivot);
//找到右边开始第一个小于pivot的元素
if(i<j)
{
tmp = a[i];
a[i]= a[j];
a[j] = tmp;
}
//交换两个元素
}while(i<j);
}//end if(left<right)
//将最左边的元素换到中间位置,
tmp = a[left];
a[left]= a[j];
a[j] = tmp;
quicksort(a,left,j-1);
quicksort(a,j+1,right);
}
int main(int argc, char* argv[])
{
printf("Hello World!\n");
int a[10]={221,3,2,12,32,22,13,32,21,23};
quicksort(a,0,9);
for(int i=0;i<10;i++)
cout<<a[i]<<" "<<endl;
return 0;
}
第10题:
如果债券按单利计算,并且一次还本付息,其价格决定公式为( )(面值为M)。
A.P=M(1+I·n)/(1+r·n)
B.P=(M·I·n)/(1+r·n)
C.P=M(1+I)n/(1+r)n
D.P=Min/(1+r)n