编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数。
在主函数中输入字符串及输出上述结果。提示有错误,麻烦大仙改之。intalph,digit,space,others;main(){chartext[80];printf(...
在主函数中输入字符串及输出上述结果。
提示有错误,麻烦大仙改之。
int alph,digit,space,others;
main()
{
char text[80];
printf("\n输入字符串:\n");
gets(text);
printf("字符串是:");
puts(text);
strcat(text,"\n");
alph=0;
digit=0;
space=0;
others=0;
count(text);
printf("\n%d字母,%d数字,%d空格,%d其它字符\n",alph,digit,space,others);
}
count(str);
char str[];
{
int i;
for(i=0;str[i]!='\n';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
alph++;
else if(str[i]>='0'&&str[i]<='9')
digit++;
else if(str[i]==' ')
space++;
else
others++;
}
} 展开
提示有错误,麻烦大仙改之。
int alph,digit,space,others;
main()
{
char text[80];
printf("\n输入字符串:\n");
gets(text);
printf("字符串是:");
puts(text);
strcat(text,"\n");
alph=0;
digit=0;
space=0;
others=0;
count(text);
printf("\n%d字母,%d数字,%d空格,%d其它字符\n",alph,digit,space,others);
}
count(str);
char str[];
{
int i;
for(i=0;str[i]!='\n';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
alph++;
else if(str[i]>='0'&&str[i]<='9')
digit++;
else if(str[i]==' ')
space++;
else
others++;
}
} 展开
15个回答
展开全部
全局变量
#include<stdio.h>
int l=0,n=0,s=0,o=0;
void count(char str[ ]);
int main()
{
char a[100];
printf("输入字符串\n");
gets (a);
count(a);
printf("字母有:%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",l,n,s,o);
}
void count(char str[])
{
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
s++;
else if((str[i]<='z'&&str[i]>='a')||(str[i]<='Z'&&str[i]>='A'))
l++;
else if(str[i]<='9'&&str[i]>='0') n++;
else o++;
}
}
#include<stdio.h>
int l=0,n=0,s=0,o=0;
void count(char str[ ]);
int main()
{
char a[100];
printf("输入字符串\n");
gets (a);
count(a);
printf("字母有:%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",l,n,s,o);
}
void count(char str[])
{
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
s++;
else if((str[i]<='z'&&str[i]>='a')||(str[i]<='Z'&&str[i]>='A'))
l++;
else if(str[i]<='9'&&str[i]>='0') n++;
else o++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数声明在main的外面,强烈建议直接把函数写在前面省的声明了
加上字符串的头文件string.h。循环直接用strlen获取长度计算,你这样子看起来太傻了。
要返回多个整数的话可以用结构体做返回值,或者用指针(引用)做参数。
char*ch是指针的意思,初学者不行就用全局变量。
加上字符串的头文件string.h。循环直接用strlen获取长度计算,你这样子看起来太傻了。
要返回多个整数的话可以用结构体做返回值,或者用指针(引用)做参数。
char*ch是指针的意思,初学者不行就用全局变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数中对数组的改变是绝对的,因此,子函数中对数组做的任何改动,主函数中都可以直接使用,不需要在返回什么东西了!*ch就是指向数组ch的指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
若是整个函数不使用局部变量和全局变量,是不可能的。
或者说,你是指,传递参数的时候不用全局变量传参数吗?
附一个我的程序,使用地址(数组的首地址)做传递参数:
#include <stdio.h>
void count_number(unsigned char input_data[],unsigned char return_addr[4])
{
unsigned char temp,i;
while(*(input_data+i)!='\0')
{
temp=*(input_data+i);
if((temp>=0x41 && temp<=0x5a)||(temp>=0x61 && temp<=0x7a)) return_addr[0]+=1; // 字母
else if(temp>=0x30 && temp<=0x39) return_addr[1]+=1; // 数字
else if(temp==0x20) return_addr[2]+=1; // 空格
else return_addr[3]+=1; // 其他
i++;
}
}
int main(void)
{
unsigned char array[40]="wr\ET3\45 t/34WQr23 Y36 R/TR5 48eY/dRg ",res[4];
count_number(array,res);
printf("字母数目:%d\n",res[0]);
printf("数字数目:%d\n",res[1]);
printf("空格数目:%d\n",res[2]);
printf("其他数目:%d\n",res[3]);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-26
展开全部
要用一个局部变量吧。
#include <stdio.h>
int function(char *str,int n)
{
if(str==NULL)
return 0;
int num = 0;
switch(n)
{
case 1:/*字母数*/
while(*str!='\0')
{
if(('A'<=(*str)&&(*str)<='Z' )|| ('a'<=(*str)&&(*str)<='z'))
num++;
++str;
}
return num;
break;
case 2:/*数字*/
while(*str!='\0')
{
if('0'<=(*str) &&(*str)<='9')
num++;
++str;
}
return num;
break;
case 3:/*空格*/
while(*str!='\0')
{
if((*str)==' ')
num++;
++str;
}
return num;
break;
default:
return 0;
break;
}
}
int main()
{
char *str_1 = "123456QPRTY88 99 *4 %4S4Tr02 1)84ru";
printf("字母数目:%d\n",function(str_1,1));
printf("数字数目:%d\n",function(str_1,2));
printf("空格数目:%d\n",function(str_1,3));
printf("其他数目:%d\n",strlen(str_1)-function(str_1,1)-function(str_1,2)-function(str_1,3));
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询