分析如下代码 for(i=1;i<n;i++) for(j=1;j<i;j++) for(k=1;k<j;k++) printf("\n"); 问printf语句共执行了几次?这段代码执行完以后i+j+k值为多少?
时间: 2023-06-22 20:41:04 浏览: 176
i = i++ 代码分析
对于这段代码,我们可以逐层分析循环的执行次数:
第一层循环:i从1到n-1,共执行n-1次。
第二层循环:j从1到i-1,对于每个i,j的取值范围为1到i-1,共执行(i-1)次。
第三层循环:k从1到j-1,对于每个i,j,k的取值范围为1到j-1,共执行(j-1)次。
所以,printf语句的执行次数为:(n-1)+(n-2)+(n-3)+...+2+1,即等差数列求和公式S=(n-1)*n/2,所以执行次数为O(n^2)。
接下来,我们来计算i+j+k的值。由于最后一次执行完循环后,i=n-1,j=i-1,k=j-1=1,所以i+j+k的值为n-1+(n-2)+1=2n-2。
因此,printf语句共执行次数为(n-1)*n/2次,i+j+k的值为2n-2。
阅读全文