请编写一个函数fun(),它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fan的花括号中填入所编写的若干语句。
试题程序:
define M 4
include <stdio.h>
fun(int a[] [M])
{
}
main()
{
int arr[2][M]={5, 8, 3, 45, 76, -4, 12, 82};
printf("max=%d\n",fun(arr));
}
阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
[说明]
本程序提供了三阶矩阵加、减及乘运算的功能。用户单击“生成操作数”按钮将随机生成两个矩阵(即操作数1和操作数2),再单击某一矩阵运算按钮后,程序将输出相应运算的结果。程序运行界面如下:
开发过程中,界面上从左至右三个文本框分别取名为Text1至Text3,“生成操作数”按钮名为 CmdNew,“+”、“-”和“*”构成按钮控件组,分别名为CmdOperate(0)、CmdOperate(1)和CmdOperate(2)。
已知n阶矩阵加、减法运算法则是对应位置的元素相加、减;n阶矩阵的乘法C=AB有公式:Cij=AilBij+AilBij+…+An1Bnj其中记号Xij表示矩阵X第i行第j列上的元素。程序使用的主要变量是三维数组matrix(3,3,3),其元素matrix(i,j,k)代表第i个矩阵j行k列上的元素,这里i,j,k均从0开始计数,第0、1、2个矩阵分别表示操作数1、操作数2和结果矩阵。
代码中用到的子过程及其功能说明如下:
(1) Sub newMatrices():随机产生矩阵运算的两个操作数;
(2) Sub printOut(txt As TextBox, i As Integcr):定义矩阵i向文本框txt的输出格式;
(3) Sub operate(operation As String):计算并输出矩阵运算结果。
[Visual Basic代码]
Dim matrix(3, 3, 3) As Integer
Sub newMatrices()
……… End Sub
Sub printOut(txt As TextBox, i As Integer)
……… End Sub
Sub operate(operation As String)
Dim i, j, k As Integer
For i = 0 To 2
For j = 0 To 2
(1)
Case"+": matrix(2, i, j) = matrix(0, i, j) + matrix(1, i, j)
Case"-": matrix(2, i, j) = matrix(0, i, j) - matrix(1, i, j)
Case"*"
matrix(2, i, j) = 0
For k = 0 To 2
matrix(2, i, j) = matrix(2, i, j) +(2)
Next
End Select
Next
Next
printOut (3)
End Sub
Private Sub CmdNew_Cliek() ’“生成操作数”按钮的单击事件响应代码
(4)
printout Text1,0
printout Text2,1
End Sub
Private Sub CmdOperale_Click(Index As Integer) ’矩阵运算按钮组的单击事件响应代码
operate CmdOperate(Index).(5)
End Sub
下列程序定义了NXN的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的S。例如:若a数组中的值为
a=0 1 2 7 9
1 11 21 5 5
2 21 6 11 1
9 7 9 10 2
5 4 1 4 1
则返回主程序后s的值应为310。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<stdio.h>
include<conio.h>
include<stdlib.h>
define N 5
int fun (int w[][N])
{
}
main()
{
int a[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2, 21,6,11,1,9,7,9,10,2,5,4,1,4,1};
int i,j;
int S;
clrscr();
printf("*****The array***+*\n");
for (i=0; i<N; i++)
{for(j=0;j<N;i++)
{printf(“%4d”,a[i][j]);}
printf("\n");
}
s=fun(a);
printf(“*****THE RESULT*****\n”);
printf("The sum is:%d\n",s);
}
请将下列数据建成一个数据表(存放在A1:D5的区域内),并求出各宠物的增长额以及原来月开销和增长额的“总计”(增长额保留小数点后面两位),其计算公式是:增长额=月开销×增长率,将工作表命名为“宠物开销增长表”,以文件名EX02A.XLS保存文件。
宠物名 月开销 增长率 增长额
花花 250 5.00%
旺旺 180 15.00%
小白 215 12.00%
总计
(2)打开工作簿文件EX02B.XLS,对工作表“部分显卡报价表”内的数据清单的内容进行自动筛选,条件为“品牌为七彩虹”,筛选后的工作表还保存在EX02B.XLS工作簿文件中,工作表名不变。
下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,然后求两条对角线上的各元素之和,返回此和数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
include <conio.h>
include <stdio.h>
define M 5
/**********************************/
iht fun(int n, int xx[ ][ ])
{ int i, j, sum=0;
printf("\nThe %d x %d matrix:\n",M,M);
for(i=0;i<M;i++)
{ for (j=0; j<M; j++)
/**********************************/
printf("%4f",xx[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
sum+=xx[i][i]+xx[i][n-i-1];
return(sum);
}
main ()
{ int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr();
printf("\nThe sum of all elements on 2
diagnals is %d",fun(M, aa));
}
阅读以下说明和C++ 程序,将应填入(n)处的字句写在对应栏内。
[说明]
试从含有n个int 型数的数组中删去若干个成分,使剩下的全部成分构成一个不减的子序列。设计算法和编写程序求出数组的不减子序列的长。
[C++ 程序]
include<stdio.h>
define N 100
int b[]={9,8,5,4,3,2,7,6,8,7,5,3,4,5,9,1};
int a [N];
define n sizeofb/sizeofb[0]
void main ()
{
kit k,i,j;
(1)
(2)
for (i=1;i<n; i++ )
{
for (j=k;(3); j--);
(4); /*长为 j+1 的子序列的终元素存储在 a[j+1]*/
if ((5)k++; /*最长不减子序列长 k 增1*/
}
printf ("K = %d\n ",k );
}
请编制程序,其功能是:求I×J矩阵的转置矩阵(矩阵中元素为字节型),并计算转置矩阵的每一行元素之和,然后存放在每一行最后一个字单元中。
例如:
内存中有04H,05H,06H,(第一行)01H,02H,03H(第二行)
结果为 04H,01H,05H,00H,05H,02H,07H,00H,06H,03H,09H,00H
部分程序已给出,其中原始数据由过程LOAD从文件1NPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
(27)
A. 功能和性能
B. 数据和操作
C. 实体和对象
D. 操作和对象
(28)
A. 事件流
B. 消息流
C. 对象流
D. 控制流
下列程序定义了N×N的二维数组,并在主函数中赋值。请编写一个函数fun(),函数的功能是:求数组周边元素的平方和并作为函数值返回给主函数。例如,若数组a中的值为
0 1 2 7 9
1 11 21 5 5
2 21 6 11 1
9 7 9 10 2
5 4 1 4 1
则返回主程序后s的值应为310。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
[试题源程序]
include <stdio.h>
include <conio.h>
include <stdlib.h>
define N 5
int fun(int w[][N])
{
}
main()
{
int a[N][N]={0, 1, 2, 7, 9, 1, 11, 21, 5, 5, 2, 21, 6, 11, 1, 9, 7, 9, 10, 2, 5, 4, 1, 4, 1};
int i, j;
int s;
clrscr()
printf("*****The array*****\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%4d", a[i][j]);
}
printf("\n');
}
s=fun(a);
printf("*****THE RESULT*****\n");
printf("The sum is: %d\n", s);
}
A.按照实时性划分软件功能模块→确定硬件驱动的软件接口→生成各模块代码→功能模块的集成测试→调试→代码固化
B.按照实时性划分软件功能模块→确定硬件驱动的软件接口→生成各模块代码→固化调试→功能模块的集成测试→代码固化
C.确定硬件驱动的软件接口→按厢实时性划分软件功能模块→生成各模块代码→功能模块的集成测试→代码固化→调试
D.确定硬件驱动的软件接口→按照实时性划分软件功能模块→生成各模块代码→固化调试→功能模块的集成测试→代码固化
试题二(共15分)
阅读以下说明和C函数,回答问题 l至问题 3,将解答写在答题纸的对应栏内。
【说明1】
函数substring(const char str[],int index,int length)的功能是求出字符串str中指定序号index开始且长度为length的子串,并返回所取出的子串。以字符串“China today”为例,其第一个字符“C”的序号为1(而其在字符数组str中的下标为0),从序号 5开始且长度为 3的子串为“at”。
【问题1】(6分)
函数substring 中有两处错误,请指出这些错误所在代码的行号,并在不增加和删除 代码行的情况下进行修改,写出修改正确后的完整代码行(有注释时,注释可省略)。
【说明2】
在C函数 2中,reverse(unsigned intn的功能是求出并返回n的反序数。例如,1234 的反序数是4321,其求解过程如下:
(1)由1234除以 10得到商123和余数4,O乘以10再加上 4得到 4;
(2)由123除以10得到商12和余数 3,4乘以10再加上 3得到43;
(3)由12除以10得到商 l和余数2,43乘以10 再加上2得到432;
(4)由 1除以 10得到商 0和余数 1,432乘以10再加上 1得到4321。
【C函数2】
unsigned int reverse(unsigned int n)
{
unsigned int result=0;
while((1) ){
result= result *10+ n%10;
n= (2)__;
}
retum result,
}
【问题2] (6分)
请根据说明2,填充C函数 2中的空缺(1)和(2)。
【问题3](3分)
用567,1234,56781234,62354879643分别作为实参调用函数reverse,对应的返回值分别
为765,4321,43218765,1357400630。请说明以62354879643作为实参调用函数 reverse
时返回结果出错的原因。