请指出错误#include <stdio.h> void main() { int d,c,t; char str; void fun(char s[],int *p1,int *p2,int *p3); printf("input a string:"); gets(str); fun(str[80],&d,&c,&t); printf("str=%s digit=%d char=%d other=%d\n",str,d,c,t); } void fun(char ch[ ], int *pd, *pc, *pt) { int k; pd=pc=pt=0; for (k=0;ch[k]!='\0';k++) { if ((ch[k]>='A'&&ch[k]<='Z')&&(ch[k]>='a'&&ch[k]<='z')) (*pc)++; else if (ch[k]>='0'&&ch[k]<='9') (*pd)++; #20. else (*pt)++; } }
时间: 2024-03-17 07:47:56 浏览: 291
这段代码中有一些错误:
1. 在主函数中,定义了一个字符变量str,但是应该定义为字符数组,因为函数gets()需要一个字符数组作为参数。
2. 在调用fun函数时,将str[80]作为参数传递,应该改为str,因为str本身就是一个字符数组。
3. 在fun函数中,指针变量pd、pc、pt没有通过指针取值符号*进行间接访问,应该改为(*pd)、(*pc)、(*pt)。
4. 在fun函数中,pd、pc、pt应该初始化为0,而不是将它们赋值为0。
5. 在fun函数中,第20行的else语句缺少左括号。
下面是修改后的代码:
```c
#include <stdio.h>
void fun(char s[], int *p1, int *p2, int *p3);
int main() {
int d = 0, c = 0, t = 0;
char str[80];
printf("input a string:");
gets(str);
fun(str, &d, &c, &t);
printf("str=%s digit=%d char=%d other=%d\n", str, d, c, t);
return 0;
}
void fun(char ch[], int *pd, int *pc, int *pt) {
int k;
*pd = *pc = *pt = 0;
for (k = 0; ch[k] != '\0'; k++) {
if ((ch[k] >= 'A' && ch[k] <= 'Z') || (ch[k] >= 'a' && ch[k] <= 'z'))
(*pc)++;
else if (ch[k] >= '0' && ch[k] <= '9')
(*pd)++;
else
(*pt)++;
}
}
```
阅读全文