展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void f(char *s, int *na, int *nd, int* nc, int *no);
int main(){
char s[1000]={'\0'};
int l=0, m=0, n=0,z=0; //保存返回值
printf("Input a String:");
gets(s);
f(s,&l, &m, &n, &z);
printf("字母个数:%d\n", l);
printf("数字个数:%d\n", l);
printf("空格个数:%d\n", l);
printf("其他个数:%d\n", l);
return 0;
}
void f(char *s, int *na, int *nd, int* nc, int *no)
{
int l=0, m=0, n=0,z=0; char c;
while(s&& (c=*s) && s++)
{
if(isalpha(c)) l++;
else if(isdigit(c)) m++;
else if(c==' ') n++;
else z++;
}
*na = l, *nd =m, *nc=n, *no=z;
return ;
}
追问
指针 头晕能不用吗
追答
输入输出要全在main中的话,必须用。否则就要用结构体来保存计数值,估计你现在还没有学过。
上例中,main中printf后面全是l,要依次改为l,m,n,z。写得急了点。
下面不用指针,但是输出在函数内:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void f(char s[]);
int main(){
char s[1000]={'\0'};
int l=0, m=0, n=0,z=0; //保存返回值
printf("Input a String:");
gets(s);
f(s);
return 0;
}
void f(char s[])
{
int l=0, m=0, n=0,z=0; char c;
int i=0;
while(s&& (c=s[i]) && ++i)
{
if(isalpha(c)) l++;
else if(isdigit(c)) m++;
else if(c==' ') n++;
else z++;
}
printf("字母个数:%d\n", l);
printf("数字个数:%d\n", m);
printf("空格个数:%d\n", n);
printf("其他个数:%d\n", z);
return ;
}
展开全部
//不用指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int alpha=0,digit=0,space=0,other=0;
void f(char s[]);
int main()
{
char s[1000]={'\0'};
printf("Input a String:");
gets(s);
f(s);
printf("字母个数:%d\n", alpha);
printf("数字个数:%d\n", digit);
printf("空格个数:%d\n", space);
printf("其他个数:%d\n", other);
return 0;
}
void f(char s[])
{
int i=0;
while(s[i]!='\0')
{
if(isalpha(s[i])) alpha++;
else if(isdigit(s[i])) digit++;
else if(s[i]==' ') space++;
else other++;
i=i+1;
}
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int alpha=0,digit=0,space=0,other=0;
void f(char s[]);
int main()
{
char s[1000]={'\0'};
printf("Input a String:");
gets(s);
f(s);
printf("字母个数:%d\n", alpha);
printf("数字个数:%d\n", digit);
printf("空格个数:%d\n", space);
printf("其他个数:%d\n", other);
return 0;
}
void f(char s[])
{
int i=0;
while(s[i]!='\0')
{
if(isalpha(s[i])) alpha++;
else if(isdigit(s[i])) digit++;
else if(s[i]==' ') space++;
else other++;
i=i+1;
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以啊,用asc2码值判断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询