从键盘输入一个字符串,统计并输出字符串中字符、数字、和其他符号的个数,为什么数不出结果?求解决谢谢!!

lcq131419 2014-06-07 04:53:43
#include<stdio.h>
#define N 100
void fun(char *p)
{
int i,k=0,j=0,g=0;
for(i=0;*p!='\0';i++)
{
if(*p >= 'a' && *p <= 'z' || *p >= 'A' && *p <= 'Z')
j++;
else if(*p >= '0' && *p <= '9')
k++;
else
g++;

}
printf("%d\n%d\n%d",j,k,g);
}
void main()
{
int j=0,k=0,g=0;
char a[N];
printf("输入一个字符串:");
scanf("%s",a);
fun(a);

}
...全文
13470 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33827780 2016-01-23
  • 打赏
  • 举报
回复
char[N],这样不对
百曉生 2014-06-07
  • 打赏
  • 举报
回复
输入字符数组构成的字符串,不用加取地址符也可以的
caewow 2014-06-07
  • 打赏
  • 举报
回复
你的代码有2个问题: 1. main 函数里面,不是 scanf("%s",a) ,应该是 scanf("%s",&a) 2. fun 函数里面,不是 for(i=0;*p!='\0';i++) ,应该是 for(;*p!='\0';p++) 实际上,完全没必要搞这个 i 出来。
#include <stdio.h>
#include <stdlib.h>
#define N 100
void fun(char *p)
{
	int k=0,j=0,g=0;
	for(;*p!='\0';p++)
	{
		if((*p >= 'a' && *p <= 'z' )|| (*p >= 'A' && *p <= 'Z'))
			j++;
		else if(*p >= '0' && *p <= '9')
			k++;
		else 
			g++;
	}
	printf("%d\n%d\n%d\n",j,k,g);
}
void main()
{    
	char a[N];
	printf("输入一个字符串:\n");
	scanf("%s",&a);
	fun(a);
	system("pause");
} 

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧