1.1 综合测试
1.1.1 快速排序
- PASCAL-S源程序 ```pascal program quicksort(input,output); var n,i:integer; a:array[0..100000] of integer;
procedure kp(l,r:integer);
var
i,j,mid:integer;
begin
if l>=r then exit;
i:=l;j:=r;mid:=a[(l+r) div 2];
repeat
begin
while a[i]
begin read(n); for i:=1 to n do read(a[i]); kp(1,n); for i:=1 to n do write(a[i],’ ‘); end.
- 预期结果
没有词法、语法、语义错误,正确生成快速排序的C程序,可以用C编译器正确编译,并正确运行。<br /> C程序运行时,先读入一个数字n表示待排序的数字个数,再输入n个数字。最后输出从小到大排序的结果。<br />
- 输出的C程序
```cpp
//Head files
#include<stdio.h>
#include<stdbool.h>
//Overall constant definiton
//Overall variable definition
int n;
int i;
int a[100001];
//Subprogram declaration
void quicksort();
void kp(int l, int r);
//Main function
int main()
{
quicksort();
return 0;
}
//Subprogram definition
void quicksort()
{
scanf("%d", &n);
for(i = 1; i <= n; i++)
scanf("%d", &a[i]);
kp(1, n);
for(i = 1; i <= n; i++)
printf("%d%c", a[i], ' ');
}
void kp(int l, int r)
{
int i;
int j;
int mid;
if(l >= r)
return;
i = l;
j = r;
mid = a[(l + r) / 2];
do
{
while(a[i] < mid)
i = i + 1;
while(a[j] > mid)
j = j - 1;
if(i <= j)
{
a[0] = a[i];
a[i] = a[j];
a[j] = a[0];
i = i + 1;
j = j - 1;
}
}
while(!(i > j));
kp(l, j);
kp(i, r);
}
- 控制台输出及运行结果
- 结果分析
编译程序各部分均为发现错误,且成功生成C代码,通过编译生成可执行程序。快速排序运行结果正确,所有数字按照从小到大的顺序进行了输出。
1.1.2 最大公因数
PASCAL-S源程序
program example(input,output); var n,i,x,y:integer; function gcd(a,b:integer):integer; begin if b=0 then gcd:=a else gcd:=gcd(b,a mod b); end; begin read(n); for i:= 1 to n do begin read(x,y); writeln(gcd(x,y)) end; end.
预期结果
没有词法、语法、语义错误,正确生成求最大公因数的C程序,可以用C编译器正确编译,并正确运行。
C程序运行时,先读入一个数字n表示待求最大公因数的数字对数,再输入n对数字,每对数字有一个输出,表示这对数字的最大公因数。
//Overall constant definiton
//Overall variable definition int n; int i; int x; int y;
//Subprogram declaration void example(); int gcd(int a, int b);
//Main function int main() { example(); return 0; }
//Subprogram definition void example() { scanf(“%d”, &n); for(i = 1; i <= n; i++) { scanf(“%d%d”, &x, &y); printf(“%d\n”, gcd(x, y)); } }
int gcd(int a, int b)
{
if(b == 0)
return (a);
else
return (gcd(b, a % b));
}
```
- 控制台输出及运行结果
- 结果分析
编译程序各部分均为发现错误,且成功生成C代码,通过编译生成可执行程序。求最大公因数运行结果正确。