要求:通过调用函数统计输入的字符串中字母字符,数字字符,空格字符数量。
代码主函数由题目给出,调用的函数是自己编的
代码如下:
#include <stdio.h>
#define MAXSTRLEN 80
void CountCharactersByType(const char *str, int *p_num_letters, int *p_num_digits, int *p_num_spaces);
int main(){
char ch, s[MAXSTRLEN+1];
int i, num_letters, num_digits, num_spaces;
i=0;
while ((ch=getchar())!='\n') {
if (i<MAXSTRLEN) s[i++]=ch; }
s[i]='\0';
CountCharactersByType(s, &num_letters, &num_digits, &num_spaces);
printf("%d %d %d\n", num_letters, num_digits, num_spaces);
return 0;
}
void CountCharactersByType(const char*str,int*p_num_letters,int*p_num_digits,int*p_num_spaces){
int i,num_letters,num_digits,num_spaces;
i=0;
num_letters=num_digits=num_spaces=0;
while(str[i]!='\0'){
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) num_letters++;
if(str[i]>='0'&&str[i]<='9')
num_digits++;
if(str[i]==' ')
num_spaces++;
i++;
}
}
p_num_letters
p_num_digits
p_num_spaces
这几个数在CountCharactersByType函数中没有被赋值,在最后添加如下代码:
*p_num_letters = num_letters;
*p_num_digits = num_digits;
*p_num_spaces = num_spaces;
代码修改如下:
#include <stdio.h>
#define MAXSTRLEN 80
void CountCharactersByType(const char *str, int *p_num_letters, int *p_num_digits, int *p_num_spaces);
int main()
{
char ch, s[MAXSTRLEN+1];
int i, num_letters, num_digits, num_spaces;
i=0;
while ((ch=getchar())!='\n')
{
if (i<MAXSTRLEN)
s[i++]=ch;
}
s[i]='\0';
CountCharactersByType(s, &num_letters, &num_digits, &num_spaces);
printf("%d %d %d\n", num_letters, num_digits, num_spaces);
return 0;
}
void CountCharactersByType(const char*str,int *p_num_letters,int*p_num_digits,int*p_num_spaces)
{
int i,num_letters,num_digits,num_spaces;
i=0;
num_letters=0;
num_digits=0;
num_spaces=0;
while(str[i]!='\0')
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) num_letters++;
if(str[i]>='0'&&str[i]<='9')
num_digits++;
if(str[i]==' ')
num_spaces++;
i++;
}
*p_num_letters = num_letters;
*p_num_digits = num_digits;
*p_num_spaces = num_spaces;
}
你要修改的是函数参数指针的值,不是又定义三个临时变量啊
void CountCharactersByType(const char*str,int*p_num_letters,int*p_num_digits,int*p_num_spaces)
{
int i=0;
*p_num_letters=*p_num_digits=*p_num_spaces=0;
while(str[i]!='\0'){
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) (*p_num_letters)++;
if(str[i]>='0'&&str[i]<='9')
(*p_num_digits)++;
if(str[i]==' ')
(*p_num_spaces)++;
i++;
}
}