过程main() (int w=5; fun(w); printf(*\n*); ) fun(int k) (if(k> 0) fun(k-1); printf(*%d k);}
时间: 2024-03-10 09:50:00 浏览: 49
这段代码的输出结果是:
```
%d 4%d 3%d 2%d 1%d 0
```
与之前的代码唯一的区别是,每个数字后面没有空格。这是因为在 printf 函数中,格式化字符串中的空格会被原样输出,所以如果要输出空格,需要在格式化字符串中显式地写上空格字符。而在本段代码中,格式化字符串中只写了一个 %d,没有写空格字符,所以输出结果中没有空格。
相关问题
过程main() (int w=5; fun(w); printf(*\n*); ) fun(int k) (if(k> 0) fun(k-1); printf(*%d k);
这段代码的输出结果是:
```
% d 4% d 3% d 2% d 1% d 0
```
解释如下:
首先,程序进入 main 函数,定义了一个整型变量 w 并赋值为 5。然后调用函数 fun(w)。fun 函数中,首先判断 k 是否大于 0,因为 k 初始值为 5,大于 0,所以继续递归调用 fun(k-1)。这里需要注意,fun 函数没有返回值,所以调用 fun 函数并不能改变 w 的值。当 k 为 0 时,fun 函数不再递归调用,开始执行下一条语句:printf("%d ", k)。此时 k 的值为 0,所以输出结果为 %d 0。然后 fun 函数返回到上一层递归调用 fun(k-1) 的位置,继续执行下一条语句:printf("%d ", k),此时 k 的值为 1,输出结果为 %d 1。依次类推,最终输出结果为 %d 4% d 3% d 2% d 1% d 0。注意,每个数字后面都有一个空格。
#include <stdio.h> /**********FOUND**********/ void fun( int n) { int i,k=1; if(m<=1) k=0; /**********FOUND**********/ for(i=1;i<m;i++) /**********FOUND**********/ if(m%i=0) k=0; /**********FOUND**********/ return m; } int main() { int m,k=0; for(m=1;m<100;m++) if(fun(m)==1) { printf("%4d",m);k++; if(k%5==0) printf("\n"); } }
这段代码有以下四个错误:
1. 在函数 fun 中,应该将参数 n 改为 m。
2. 在函数 fun 中,if(m<=1) 应该改为 if(n<=1)。
3. 在函数 fun 中,if(m%i=0) 应该改为 if(n%i==0)。
4. 在函数 fun 中,return m 应该改为 return k。
修改后的代码如下:
```c
#include <stdio.h>
void fun(int m) {
int i, k = 1;
if (m <= 1) k = 0;
for (i = 2; i < m; i++) {
if (m % i == 0) {
k = 0;
break;
}
}
return k;
}
int main() {
int m, k = 0;
for (m = 1; m < 100; m++) {
if (fun(m) == 1) {
printf("%4d", m);
k++;
if (k % 5 == 0) printf("\n");
}
}
return 0;
}
```
阅读全文