C语言编程,输入一个字符串,输出字符串中的字母和数字个数,下面是我的做法,请教哪里错了啊

2024-11-22 21:09:51
推荐回答(4个)
回答1:

你一直在检查这个*p,i自增后循环里的*p一直没动,
而且*p这个指针也不能代表单个字符,
何况输入的字符串长度又不一定是50个字符,
你的循环直接把50个字符全遍历也不对。

回答2:

#include
void main()
{
char s[50];
char *p=s;
int i;
int sum1=0,sum2=0;

printf("请输入一个字符串:");
scanf("%s\n",s); /*改了这*/

for(i=0;i<50;i++)
{
if((65<=*(p+i)&&*(p+i)<=90)||(97<=*(p+i)&&*(p+i)<=122)) /*改了这*/
sum1=sum1+1;
else if(48<=*(p+i)&&*(p+i)<=57) /*改了这*/
sum2=sum2+1;
}

printf("字母个数为:%d\n ",sum1);
printf("数字个数为:%d\n ",sum2);

}

回答3:

#include
int main()
{
char s[50];
char *p=s;
int i;
int sum1=0,sum2=0;
printf("请输入一个字符串:");
scanf("%s",s);
for(i=0;*(p+i)!='\0';i++)
{
if((65<=*(p+i)&&*(p+i)<=90)||(97<=*(p+i)&&*(p+i)<=122))
sum1=sum1+1;
else if(48<=*(p+i)&&*(p+i)<=57)
sum2=sum2+1;
}
printf("字母个数为:%d\n ",sum1);
printf("数字个数为:%d\n ",sum2);
return 0;
}

回答4:

字符串不用加取地址符