函数fun完成的是对一个给定的字符串,统计其中数字、大小写字母及其他符号的个数的功能,在主程序中输入字符串并调用函数fun,接收并输出返回的结果。
时间: 2024-03-22 14:39:50 浏览: 195
好的,这是一个字符串处理的问题,下面是示例代码实现:
```python
def fun(s):
nums = 0
uppercase = 0
lowercase = 0
other = 0
for c in s:
if c.isdigit():
nums += 1
elif c.isalpha():
if c.isupper():
uppercase += 1
else:
lowercase += 1
else:
other += 1
return nums, uppercase, lowercase, other
# 主程序
s = input("请输入一个字符串:")
result = fun(s)
print("数字个数:", result[0])
print("大写字母个数:", result[1])
print("小写字母个数:", result[2])
print("其他符号个数:", result[3])
```
这段代码中,函数 `fun(s)` 接收一个字符串参数 `s`,并统计其中数字、大小写字母及其他符号的个数。在主程序中,我们输入一个字符串,调用函数 `fun`,并输出返回的结果。
相关问题
用C语言函数fun完成的是对一个给定的字符串,统计其中数字、大小写字母及其他符号的个数的功能,在主程序中输入字符串并调用函数fun,接收并输出返回的结果。
好的,我可以帮你解答这个问题。
可以使用以下代码实现:
```c
#include <stdio.h>
#include <ctype.h>
void fun(char *str, int *num, int *upper, int *lower, int *other)
{
while (*str != '\0')
{
if (isdigit(*str))
{
(*num)++;
}
else if (isupper(*str))
{
(*upper)++;
}
else if (islower(*str))
{
(*lower)++;
}
else
{
(*other)++;
}
str++;
}
}
int main()
{
char str[100];
int num = 0, upper = 0, lower = 0, other = 0;
printf("请输入一个字符串:");
fgets(str, 100, stdin);
fun(str, &num, &upper, &lower, &other);
printf("数字的个数:%d\n", num);
printf("大写字母的个数:%d\n", upper);
printf("小写字母的个数:%d\n", lower);
printf("其他字符的个数:%d\n", other);
return 0;
}
```
其中,函数 `fun` 的参数为一个字符串指针和四个整型指针,分别表示数字、大写字母、小写字母和其他字符的个数。在函数中,使用 `isdigit`、`isupper` 和 `islower` 函数判断字符的类型,然后分别累加到对应的指针变量中。
在主程序中,先使用 `fgets` 函数获取用户输入的字符串,然后调用 `fun` 函数进行统计。最后输出各个类型字符的个数即可。
希望能够帮到你!
#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,接收并输出返回的结果。请问哪几行错了?
这个程序有多处错误:
1. 第5行应该将字符声明为字符数组:`char str[80];`
2. 第8行使用了不安全的函数`gets`,应该使用安全的函数`fgets`。
3. 第9行调用`fun`函数时,应该传入字符数组`str`的地址,而不是下标。应该修改为:`fun(str, &d, &c, &t);`
4. 第15行将指针变量`pd`、`pc`、`pt`赋值为0,应该修改为:`*pd = *pc = *pt = 0;`
5. 第12行中,指针变量`pd`、`pc`、`pt`的类型声明错误,应该修改为:`int *pd, *pc, *pt;`
修改后的程序如下所示:
```
#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:");
fgets(str, 80, stdin);
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)++;
}
}
```
阅读全文