有如下示意的Pascal源程序并已知在运行时刻以过程为单位对程序中的变量进行动态存储分配。当运
有如下示意的Pascal源程序
并已知在运行时刻以过程为单位对程序中的变量进行动态存储分配。当运行主程字而调用过程语句X时,试分别给出以下时刻的运行栈的内容和DISPLAY的内容。
(1)已开始而尚未执行完毕的标号为10的语句。
(2)已开始而尚未执行完毕的标号为11的语句。
有如下示意的Pascal源程序
并已知在运行时刻以过程为单位对程序中的变量进行动态存储分配。当运行主程字而调用过程语句X时,试分别给出以下时刻的运行栈的内容和DISPLAY的内容。
(1)已开始而尚未执行完毕的标号为10的语句。
(2)已开始而尚未执行完毕的标号为11的语句。
针对一下C语言程序,请按要求回答问题。
已知weekday. c源程序如下:
include<stidio. h>
include<conio. h>
/ *主函数* /
Int main()
{
Char letter;
Printf("please input the first letter,"Y'to exit!\n");
While((letter=getch())!="Y")//当输入字母为Y时结束
{
Switch(letter)
{
Case'S':
Printf("%c\n",letter);
Printf("please input second letter\n");//输入第二个字母
If((letter=getch())=='a')
Printf("Saturday\n");
Else if(letter=='u')
Printf("Sunday\n");
Else printf('data error\n);
Break;
Case'F':
Printf("fridaykn");
Break;
Case 'M':
Printf("mondayha");
Break;
Case 'T':
Printf("%c\n",letter);
Printf("please input second letter\a");//输入第二个字母
If((letter=getch())=='u')
Printf("Tuesday\n"):
Else if(letter=='h')
Printf("Thursday\n");
Break;
Case 'W':
Printf("Wednesday\n");
}
}
Return 0;
}
(1) 画出主函数main的控制流程图;
(2) 设计一组测试用例,使main函数的语句覆盖率尽量达到100%;
(3) Main函数的语句覆盖率能否达到100%?如果认为无法达到,需说明原因。
下列关于动态链接文件的说法正确的是(39)。
A.可以自由地插入到其他的源程序中使用
B.本身不能独立运行,但可以供其他程序在运行时调用
C.本身可以独立运行,也可以供其他程序在运行时调用
D.本身是一个数据文件,可以与其他程序动态地链接使用
已知C源程序如下:
/ * longIntAdd * /
include <stdio. h>
include <string. h>
define LENGTH 81
void addLInt(char sl[],char s2[]); void reverse(char s[]) ; int main()
{
char intstrl[LENGTH],intstr2[LENGTH];
printf("请输入超长整数的被加数和加数:\n")
scanf("%s%s" ,intstrl ,intstr2) ; addLInt(intstrl ,intstr2) j printf("超长整数和为: %s" .intstrl); return 0;
}
void addLInt(char sl[] ,char s2[]) {
int i=0,tmp,c=0;
char s[LENGTH];
if(strlen(s1)<strlen(s2)){ strcpy(s,sl); strcpy(sl,s2); strcpy(s2,s);
}
reverse(sl);reverse(s2);
while(s2[i]! ='\0'){
tmp=sl[i]-'0'+s2[i]-'0'+ c;
sl[i] = tmp%10+,0';
c=tmp/10;
i++; } while(sl[i]! ='\0,&&c){
tmp=sl[i] —'0' + c;
sl[i] = tmp%10+'0';
c=tmp/10;
i++; } If(c){
sl[i++] = c+'0';
sl[i] = '\0'; } reverse(sl);
}
void reverse(cliar s[])
{
inti,j,c;
for(i=0,j = strlen(s) -l;i<j;i++,j--){
c=s[i]; s[i] = s[j]; s[j] = c; } }
(1)画出程序中函数addLInt的控制流程图(10分);
(2)设计一组测试用例,使该程序addLInt函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该函数的语句覆盖率或分支覆盖率无法达到100%,需说明为什么(10分)。
若程序中有宏定义行:#define N 100则以下叙述中正确的是()。
A.宏定义行中定义了标识符N的值为整数100
B.在编译程序对C源程序进行预处理时用100替换标识符N
C.对C源程序进行编译时用100替换标识符N
D.在运行时用100替换标识符N
编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。
例如:n为1000时,函数值应为s=96.979379。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <conio.h>
include <math.h>
include
double fun(int n)
{
}
main()
{
clrscr();
printf("s=%f\n",fun(1000));
}
请编写一个函数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));
}
请编写函数fun(),该函数的功能是:计算并输出
S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)
例如,若主函数从键盘给n输入20后,则输出为
s=534.188884。
注意;部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
试题程序:
include <math. h>
include <stdio. h>
double fun(int n)
{
}
main()
{
int n;
double s;
printf("\n\nInput n: ");
scanf ("%d", &n);
s=fun (n)
printf ("\n\ns=%f\n\n", s);
}
请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。
例如,输入:12,45,43,最大值为45。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
main()
{
int a, b, c, max;
clrscr();
printf("\nlnput three numbers:\n");
scanf("%d,%d,%d",&a,&b,&c);
printf("The three numbers are:%d,
%d,%d\n",a,b,c);
if(a>b)
【 】;
else
【 】;
if(max<c)
【 】;
printf("max=%d\n",max);
}
请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。
例如:主函数从键盘给输入n的值为56,则输出为 sum=1113。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <stdio.h>
long fun(int n)
{
}
main()
{
int n;
long sum;
printf("Input n:");
scanf("%d",&n);
sum=fun(n);
printf("sum=%ld\n",sum);
}
请编写函数fun(),其功能是:计算并输出给定10个数的方差。
其中
例如,给定的10个数为95.0,89.0,76.0,65.0,88.0, 72.0,85.0,81.0,90.0,56.0,则输出为S=11.730729。
注意;部分源程序给出如下.
请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<math.h>
include<stdio.h>
double fun(double x[10])
{
}
main()
{
double s,x[i0]={95.0,89.0,76.0,65.0,
88.0,72.0,85.0,81.0,90.0,56.0};
int i;
printf("\nThe original data is:\n");
for(i=0;i<10;i++)
printf("%6.1f ",x[i]);
printf("\n\n ");
s=fun(x);
printf("s=%f\n\n ",s);
}
● 已知某高级语言源程序A 经编译后得到机器C 上的目标程序B,则 (21) 。
(21)
A. 对B 进行反编译,不能还原出源程序A
B. 对B 进行反汇编,不能得到与源程序A 等价的汇编程序代码
C. 对B 进行反编译,得到的是源程序A 的变量声明和算法流程
D. 对A 和B 进行交叉编译,可以产生在机器C 上运行的动态链接库