![](https://lstatic.shangxueba.com/sxbzda/h5/images/m_q_title.png)
以下程序执行后,“数组2”的结果为()
A.
B.
C.
D.
![](https://lstatic.shangxueba.com/sxbzda/h5/images/tips_org.png)
第2题
方阵转置。将如下矩阵a转置为矩阵b。程序运行结果如下图所示:
保存工程和窗体,窗体文件名为:昵称-4-4.frm;工程名为:昵称-4-4.vbp。将工程文件和窗体文件压缩成:昵称-4-4.rar,以附件形式提交。 提示: (1)定义两个二维数组a(1 to 2,1 to 3)和 b(1 to 3,1 to 2); (2)a数组元素值可通过输入对话框InputBox函数输入,也可通过行(i)和列(j)的关系求得; (3)矩阵转置就是b(j,i)=a(i,j)。
第3题
请分析下图程序框图,以下结果正确的是
A、程序无法执行
B、整个程序循环执行3次,数组输出{1,2,3},数组2输出{4,5,6}
C、整个程序循环执行5次,数组输出{1,2,3,0,0},数组2输出{4,5,6,0,0}
D、整个程序循环执行4次,数组输出{1,2,3,0},数组2输出{4,5,6,0}
第4题
[说明]
假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:
m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2]
其中a[1]保存该长整数的位数,a[0]保存该长整数的符号:0表示正数、1表示负数。注:数组下标从0开始。
流程图(图4-1)用于计算长整数的加(减)法。运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注,此处不考虑溢出情况,即数组足够大。这样在程序中引进两个指针pA和pB,分别指向绝对值较大者和较小者。而对绝对值相加,情况,让pA指向LA,pB指向LB,不区分绝对值大小。pA±pB可用通式pA+flag*pB来计算,flag为+1时即对应pA+pB,flag为-1时即对应pA-pB。需特别注意的是,对于相减,不够减时要进行借位,而当
最高位借位后正好为0时,结果的总位数应减1;对于加法,有最高进位时,结果的总位数应加1。
流程图中涉及的函数说明如下:
(1)cmp(int *LA,int *LB)函数,用于比较长整数LA与LB的绝对值大小,若LA绝对值大于LB绝对值则返回正值,LA绝对值小于LB绝对值返回负值,相等则返回0。
(2)max(int A,int B)函数,用于返回整数A与B中较大数。
另外,对流程图中的写法进行约定:(1)“:=”表示赋值,如“flag:=LA[0]+LB[0]”表示将“LA[0]+LB[0]”的结果赋给flag,相当于C中的赋值语句:“flag=LA[0]+LB[0];”;(2)“:”表示比较运算,如“flag:1”表示flag与1比较。
(1)
第5题
请分析下图程序框图,以下结果正确的是( )
A、整个程序循环执行3次,数组输出{1,2,3},数组2输出{4,5,6}
B、整个程序循环执行4次,数组输出{1,2,3,0},数组2输出{4,5,6,0}
C、整个程序循环执行5次,数组输出{1,2,3,0,0},数组2输出{4,5,6,0,0}
D、程序无法执行
第6题
请分析下图程序框图,以下结果正确的是( )
A、整个程序循环执行5次,数组输出{1,2,3,0,0},数组2输出{4,5,6,0,0}
B、整个程序循环执行4次,数组输出{1,2,3,0},数组2输出{4,5,6,0}
C、程序无法执行
D、整个程序循环执行3次,数组输出{1,2,3},数组2输出{4,5,6}
第7题
请分析下图程序框图,以下结果正确的是( )。
A、整个程序循环执行4次,数组显示{1,2,3,0},数组2显示{4,5,6,7}
B、整个程序循环执行5次,数组显示{1,2,3,0,0},数组2显示{4,5,6,7,0}
C、程序无法执行
D、整个程序循环执行3次,数组显示{1,2,3},数组2显示{4,5,6}
第8题
A. Option1.Index
B. Index
C. Option1(Index1)
D. Option1(Index).Value
第9题
A.Option1.Index
B.Index
C.Option1(Index1)
D.Option1(Index).Value
第10题
[说明]
以下[C程序]所完成的功能是在3X3方格中填入数字1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。系统输出满足该要求的所有填法。系统的部分输出结果如图3-18所示。
图3-18 系统的部分输出结果
3×3方格从第1行左上角方格开始的序号分别为0、1、2,第2行左边方格开始的序号分别为3、4、 5,第3行左下角方格开始的序号分别为6、7、8。以下[C程序]采用试探法,即从序号为0的方格(左上角)开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的整数。直至序号为8的方格(右下角)也填入合理的整数时,就找到了一个解,将该解输出,并调整序号为8的方格所填的整数,继续去找下一个解。
为了检查当前方格的填入整数的合理性,C程序引入二维数组checkMatrix,用于存放需要进行合理性检查的相邻方格的序号。
[C程序]
include <stdio.h>
define N 12
int a [9]; /* 用于存储方格所填入的整数 */
int b[N+1];
int pos;
checkMatrix[][3] = {{-1},{0,-1},{1,-1},{0,-1},{1,3,-1},{2,4,-1},{3,-1} {4,6,-1}, 5,7,-1}};
void write(int a[])
{ int i, j;
for ( i = 0; i < 3; i++)
for ( j = 0; j < 3; j++)
printf("%3d",a[3*i+j]);
printf("\n");
}
}
int isPrime(int m)
{ int i;
if (m == 2)
return 1;
if (m == 1 || m % 2 == 0)
return 0;
for (i = 3; i * i <= m; )
{ if (m % i == O)
return 0;
i+ =2;
}
return 1;
}
int selectNum(int start)
{ int j;
for (j = start; j <= N; j++)
if (b[j])
return j;
return 0;
}
int check ( ) /* 检查填入pos位置的整数是否合理 */
{ int i, j;
for (i = 0; (j =(1)) >= 0; i++)
if (!isPrime(a[pos] + a[j]))
(2);
(3);
}
extend () /* 为下一方格找一个尚未使用过的整数 * /
{ a[(4)] = selectNum(1);
b[a[pos]] = 0;
}
void change() /* 为当前方格找下一个尚未使用过的整数(找不到回溯) */
{ int j;
while (pos >= 0 && (j = selectNum((5) ) == 0
(6);
if (pos < 0)
return;
b[a[pos]] = 1;
a[pos] = j;
b[j] = 0;
}
find ( )
{ int k = 1;
pos = 0; a[pos] = 1; b[a[pos]] = 0;
de {
if (ok)
if ( (7) ) {
write (a);
change( );
}
else
extend( );
else
change( );
ok = check(pos);
} while (pos >=0);
}
main( )
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!