在以下程序中,通过添加必要的计时语句,以计算打印主体程序段的执行时间。分别以M=1000,N=1000;M=1000,N=10;M=10,N=1000代入执行程序A和程序B。 程序段A: Void Assign-array-rows() { Int i,j,a[M][N]; For(i=0;i<M;i++) For(j=0;j<N;j++) a[i][j]=i+j; } 程序段B: Void Assign-array-cols() { Int i,j,a[M][N]; For(j=0;j<N;j++) For(i=0;i<M;i++) a[i][j]=i+j; }
时间: 2024-03-06 08:51:44 浏览: 19
好的,我会记录您的要求并回答您的问题。
对于程序段A,可以在程序开始处记录开始时间,程序结束处记录结束时间,两者相减即可得到程序执行时间。程序段B同理。
以M=1000,N=1000为例,程序段A的计时代码可以如下实现:
```
#include <time.h>
void Assign-array-rows() {
int i,j,a[M][N];
clock_t start, end;
start = clock();
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j;
end = clock();
double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Program A took %f seconds to execute.\n", cpu_time_used);
}
```
同理,程序段B的计时代码可以如下实现:
```
#include <time.h>
void Assign-array-cols() {
int i,j,a[M][N];
clock_t start, end;
start = clock();
for(j=0;j<N;j++)
for(i=0;i<M;i++)
a[i][j]=i+j;
end = clock();
double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Program B took %f seconds to execute.\n", cpu_time_used);
}
```
这样,您就可以通过调用这两个函数来计算不同规模下程序的执行时间了。