C语言指针函数的统计字母个数

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:51:20
用指针写函数,求一个字符串中小写字母和大写字母的个数,再调用函数,求某个字符串中的个数。我把求大写和小写的个数分开了写了2个自定义函数,但输出总是显示有10个大写,10个小写,请大家帮我看看 并详细帮我讲解下 原理。谢谢了大家 我还会加20分 请大家帮帮我。
#include "stdio.h"
char show (char *p)
{
char *i ;
int num ;
i=p;
for (i=p;*i!='\0';i++)
if (*i<='a' && *i>='z')
num ++;
return num;
}
char minshow (char *p)
{
char *i;
int num1;
i=p;
for (i=p;*i!='\0';i++)
if (*i<='A' && *i>='Z')
num1++;
return num1;
}
main ( )
{
char s[50]; char *p;
int big ,min ;
gets (s);
big=show(s);
min=minshow(s);
printf ("小写有%d个,大写有%d个",min ,big);
}

这程序里很很多不规范,首先,你想返回的是整形数据,所以最好把char改为Int,虽然你用%d格式输出(我也不清楚这行不行,呵呵)。声明一个变量的时候记得最好初始化。像这里的num和num1都应该初始化下。
还有你主函数里的*p好像没用到。
程序中很多语句都是多余的,你要想如何用最简短的语句达到你想要的结果。比如别人用4行代码,你能不能用2行就能实现。记住没有很好的程序,只有更好的程序。要精益求精(大一老师教我的,哈哈)。
还有记得要会用cfree里面的调试!(相当重要)。。。

#include "stdio.h"
int show (char *p) //返回值int
{
char *i ;
int num = 0 ; //初始化为0
i=p;
for (i=p;*i!='\0';i++)
if (*i>='a' && *i<='z') //大于号和小于号正好 写反了
num ++;
return num;
}
int minshow (char *p) //返回值int
{
char *i;
int num1 = 0; //初始化为0
i=p;
for (i=p;*i!='\0';i++)
if (*i>='A' && *i>='Z') //大于号和小于号正好 写反了
num1++;
return num1;
}
main ( )
{
char s[50]; char *p;
int big ,min ;
gets (s);
big=show(s);
min=minshow(s);
printf ("小写有%d个,大写有%d个",min ,big);
}

。。。写得好复杂哦
st