#include <stdio.h> /********found********/ fun(char a) { if (*a) { fun(a+1); /********found********/ printf("%c". *a); } } void main() { char s[10]; scanf("%s",s); fun(s); printf("\n"); }
时间: 2023-07-18 07:41:21 浏览: 48
这段代码的功能是将输入的字符串倒序输出。但是代码中存在两处错误:
1. 函数 fun 的返回值类型应该是 void,即无返回值。
2. printf 函数中应该使用逗号 `,` 分隔两个参数,而不是点号 `.`。
下面是修改后的代码:
```c
#include <stdio.h>
void fun(char *a) {
if (*a) {
fun(a+1);
printf("%c", *a);
}
}
void main() {
char s[10];
scanf("%s", s);
fun(s);
printf("\n");
}
```
相关问题
#include <stdio.h> #include <string.h> char *fun(char tt[]) { int i; for (i=0; tt[i]; i++) /********found********/ if ((tt[i] >= 'a') || (tt[i]<='z')) /********found********/ tt[i] += 32; return (tt); } void main() { char tt[81]; gets(tt); printf("\n%s", fun(tt)); }
这段代码的功能是将输入的字符串中所有的大写字母转换成小写字母,并返回修改后的字符串。但是代码中存在两处错误:
1. 逻辑运算符应该是 `&&` 而不是 `||`,因为 `||` 表示或者的关系,应该是大于等于 'a' 且小于等于 'z' 才需要执行 `tt[i] += 32` 的操作。
2. 函数 fun 的返回值类型应该是 char*,即返回一个指向字符数组的指针。
下面是修改后的代码:
```c
#include <stdio.h>
#include <string.h>
char* fun(char tt[]) {
int i;
for (i = 0; tt[i]; i++)
if ((tt[i] >= 'A') && (tt[i] <= 'Z'))
tt[i] += 32;
return tt;
}
void main() {
char tt[81];
gets(tt);
printf("\n%s", fun(tt));
}
```
#include <string.h> #include <stdio.h> #include <ctype.h> void fun(char *p) { int i, t; char c[80]; /********found********/ For (i=0, t=0; p[i]; i++) if (!isspace(*(p+i))) c[t++] = p[i]; /********found********/ c[t] = "\0"; strcpy(p, c); } void main() { char c, s[80]; int i = 0; c = getchar(); while (c != '#') { s[i] = c; i++; c = getchar(); } s[i] = '\0'; fun(s); puts(s); }
这段代码的功能是将输入的字符串中的空格删除,并输出删除后的字符串。但是代码有两处错误:
1. 第一个错误是在第 10 行,`For` 应该改为小写字母 `for`。
2. 第二个错误是在第 13 行,字符串结束符应为 `'\0'` 而不是 `"\0"`。
正确的代码应该是:
```c
#include <string.h>
#include <stdio.h>
#include <ctype.h>
void fun(char *p) {
int i, t;
char c[80];
for (i = 0, t = 0; p[i]; i++) {
if (!isspace(*(p+i))) {
c[t++] = p[i];
}
}
c[t] = '\0';
strcpy(p, c);
}
int main() {
char c, s[80];
int i = 0;
c = getchar();
while (c != '#') {
s[i] = c;
i++;
c = getchar();
}
s[i] = '\0';
fun(s);
puts(s);
return 0;
}
```