int m=0,n=0,i=0,j=0,z=0;
void main()
{
void sum(char *p, int m, int n, int i, int j, int z);
char a[100],*p;
p=a;
scanf("%s",p);
sum(p,m,n,i,j,z);
printf("%d,%d,%d,%d,%d",m,n,i,j,z);
}
void sum(char *p, int m, int n, int i, int j, int z)
{
for ( ; *p!='\0'; p++)
{
if (*p==' ')
m++;
else if (('0'<=*p)&&(*p<='9'))
n++;
else if (('A'<=*p)&& (*p<='Z'))
i++;
else if (('a'<=*p)&&(*p<='z'))
j++;
else
z++;
}
}
可以通过,但是结果全都是零
11 个解决方案
#1
局部变量
#2
void sum(char *p, int &m, int &n, int &i, int &j, int &z)
#3
scanf();不要用于字符串的输入。
因为它会把空格最为输入的结束标志。
你可以使用gets()或fgets()或getchar()配上控制语句。
因为它会把空格最为输入的结束标志。
你可以使用gets()或fgets()或getchar()配上控制语句。
#4
改过来还是一样
#5
几个用来计数的全局变量,作用域不包括子函数
既然已经定义了全局变量,那就没有必要作为参数传递了;
另一种解决办法就是在C中用指针,在C++中用引用来解决问题。
既然已经定义了全局变量,那就没有必要作为参数传递了;
另一种解决办法就是在C中用指针,在C++中用引用来解决问题。
#6
全局变量一直是0啊,所以你把int m=0,n=0,i=0,j=0,z=0;
放在main{}函数中啊,并且你这个程序里面好多错误。
╮(╯▽╰)╭
放在main{}函数中啊,并且你这个程序里面好多错误。
╮(╯▽╰)╭
#7
#include <stdio.h>
int m=0,n=0,i=0,j=0,z=0;
void main()
{
void sum(char *p);//用全局变量传递,无需定义局部变量参数
char a[100];
gets(a);//整行输入
//scanf("%s",p);//scanf遇到空格就结束了,无法符合要求
sum(p,m,n,i,j,z);
printf("%d,%d,%d,%d,%d",m,n,i,j,z);
}
void sum(char *p)
{
for ( ; *p!='\0'; p++)
{
if (*p==' ')
m++;
else if (('0'<=*p)&&(*p<='9'))
n++;
else if (('A'<=*p)&& (*p<='Z'))
i++;
else if (('a'<=*p)&&(*p<='z'))
j++;
else
z++;
}
}
int m=0,n=0,i=0,j=0,z=0;
void main()
{
void sum(char *p);//用全局变量传递,无需定义局部变量参数
char a[100];
gets(a);//整行输入
//scanf("%s",p);//scanf遇到空格就结束了,无法符合要求
sum(p,m,n,i,j,z);
printf("%d,%d,%d,%d,%d",m,n,i,j,z);
}
void sum(char *p)
{
for ( ; *p!='\0'; p++)
{
if (*p==' ')
m++;
else if (('0'<=*p)&&(*p<='9'))
n++;
else if (('A'<=*p)&& (*p<='Z'))
i++;
else if (('a'<=*p)&&(*p<='z'))
j++;
else
z++;
}
}
#8
用数组方便,下标即为个数。
参照:
#include <ctype.h>
参照:
#include <ctype.h>
#9
void main()
{
int i;
int len; //存字符串长度
char arr[200]; //存放字符串
int num[4] = {0};//用于计数//亦可以定义4个变量
printf("/***统计字符串中的各字符个数***/\n");
printf("请任意输入一串字符:\n");
gets(arr);
len = strlen(arr);
for(i=0;i<len;i++)
{
if(arr[i]>='0'&&arr[i]<='9')
num[0]++;
else if(arr[i]==' ')
num[1]++;
else if(arr[i]>='A'&&arr[i]<='Z' || arr[i]>='a'&&arr[i]<='z')
num[2]++;
else num[3]++;
}
printf("统计结果如下:\n");
printf("共有数字%d个!\n",num[0]);
printf("共有空格%d个!\n",num[1]);
printf("共有字母%d个!\n",num[2]);
printf("其他字符共有%d个!\n",num[3]);
printf("共有字符%d个!\n",len);
}
#10
用了局部变量 换成全局变量就可以了
#11
不要用参数 直接用全局变量
#1
局部变量
#2
void sum(char *p, int &m, int &n, int &i, int &j, int &z)
#3
scanf();不要用于字符串的输入。
因为它会把空格最为输入的结束标志。
你可以使用gets()或fgets()或getchar()配上控制语句。
因为它会把空格最为输入的结束标志。
你可以使用gets()或fgets()或getchar()配上控制语句。
#4
改过来还是一样
#5
几个用来计数的全局变量,作用域不包括子函数
既然已经定义了全局变量,那就没有必要作为参数传递了;
另一种解决办法就是在C中用指针,在C++中用引用来解决问题。
既然已经定义了全局变量,那就没有必要作为参数传递了;
另一种解决办法就是在C中用指针,在C++中用引用来解决问题。
#6
全局变量一直是0啊,所以你把int m=0,n=0,i=0,j=0,z=0;
放在main{}函数中啊,并且你这个程序里面好多错误。
╮(╯▽╰)╭
放在main{}函数中啊,并且你这个程序里面好多错误。
╮(╯▽╰)╭
#7
#include <stdio.h>
int m=0,n=0,i=0,j=0,z=0;
void main()
{
void sum(char *p);//用全局变量传递,无需定义局部变量参数
char a[100];
gets(a);//整行输入
//scanf("%s",p);//scanf遇到空格就结束了,无法符合要求
sum(p,m,n,i,j,z);
printf("%d,%d,%d,%d,%d",m,n,i,j,z);
}
void sum(char *p)
{
for ( ; *p!='\0'; p++)
{
if (*p==' ')
m++;
else if (('0'<=*p)&&(*p<='9'))
n++;
else if (('A'<=*p)&& (*p<='Z'))
i++;
else if (('a'<=*p)&&(*p<='z'))
j++;
else
z++;
}
}
int m=0,n=0,i=0,j=0,z=0;
void main()
{
void sum(char *p);//用全局变量传递,无需定义局部变量参数
char a[100];
gets(a);//整行输入
//scanf("%s",p);//scanf遇到空格就结束了,无法符合要求
sum(p,m,n,i,j,z);
printf("%d,%d,%d,%d,%d",m,n,i,j,z);
}
void sum(char *p)
{
for ( ; *p!='\0'; p++)
{
if (*p==' ')
m++;
else if (('0'<=*p)&&(*p<='9'))
n++;
else if (('A'<=*p)&& (*p<='Z'))
i++;
else if (('a'<=*p)&&(*p<='z'))
j++;
else
z++;
}
}
#8
用数组方便,下标即为个数。
参照:
#include <ctype.h>
参照:
#include <ctype.h>
#9
void main()
{
int i;
int len; //存字符串长度
char arr[200]; //存放字符串
int num[4] = {0};//用于计数//亦可以定义4个变量
printf("/***统计字符串中的各字符个数***/\n");
printf("请任意输入一串字符:\n");
gets(arr);
len = strlen(arr);
for(i=0;i<len;i++)
{
if(arr[i]>='0'&&arr[i]<='9')
num[0]++;
else if(arr[i]==' ')
num[1]++;
else if(arr[i]>='A'&&arr[i]<='Z' || arr[i]>='a'&&arr[i]<='z')
num[2]++;
else num[3]++;
}
printf("统计结果如下:\n");
printf("共有数字%d个!\n",num[0]);
printf("共有空格%d个!\n",num[1]);
printf("共有字母%d个!\n",num[2]);
printf("其他字符共有%d个!\n",num[3]);
printf("共有字符%d个!\n",len);
}
#10
用了局部变量 换成全局变量就可以了
#11
不要用参数 直接用全局变量