#1.#include <stdio.h> #2.void main() #3.{ #4. int d,c,t; #5. char str; #6. void fun(char s[],int *p1,int *p2,int *p3); #7. printf("input a string:"); #8. gets(str); #9. fun(str[80],&d,&c,&t); #10. printf("str=%s digit=%d char=%d other=%d\n",str,d,c,t); #11.} #12.void fun(char ch[ ], int *pd, *pc, *pt) #13.{ #14. int k; #15. pd=pc=pt=0; #16. for (k=0;ch[k]!='\0';k++) #17. { #18. if ((ch[k]>='A'&&ch[k]<='Z')&&(ch[k]>='a'&&ch[k]<='z')) (*pc)++; #19. else if (ch[k]>='0'&&ch[k]<='9') (*pd)++; #20. else (*pt)++; #21. } #22.}这个C程序是对一个给定的字符串,统计其中数字、大小写字母及其他符号的个数的功能,在主程序中输入字符串并调用函数fun,接收并输出返回的结果。哪里错了?怎么改?
时间: 2024-03-21 13:43:35 浏览: 76
这个程序有几处错误。首先,在第5行,将字符数组声明为了字符类型,应该修改为字符数组类型,即:char str[80]。其次,在调用函数fun时,应该传入字符数组str的地址,即:fun(str, &d, &c, &t)。另外,在函数fun中,指针变量pd、pc、pt应该初始化为0,即:*pd=*pc=*pt=0。最后,在函数fun中,应该使用if else if结构,而不是if if结构。修改后的程序如下所示:
```
#include <stdio.h>
void fun(char s[], int *p1, int *p2, int *p3);
void main()
{
int d, c, t;
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);
}
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)++;
}
}
```
阅读全文