大家帮忙看看这个C程序的问题,100高分奖励

来源:百度知道 编辑:UC知道 时间:2024/06/23 15:48:33
编译已经通过,但是结果却出不来,帮帮忙

功能就是统计数组中a到z的个数并依次放在PP[]中
如abcdad 则pp[]=21120000000000000000000000

# include <conio.h>
# include <stdio.h>

void fun(char *tt, int pp[])
{
int i,j=0,k=97,m=0;
for(i=0;tt[i]!='/0';i++)
if((tt[i]==k)&&(k<103))
{
m++;
pp[j]=m;
}
else
{ m=0;
k++;
j++;
}
}

main()
{
char aa[1000];
int bb[26], k;
FILE *out;
printf("\nPlease enter a char string:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26 ; k++)
printf("%d",bb[k]);
printf("\n");
fun("a bosom friend afar brings a distant land near", bb);
out = fopen("out.dat", "w");
for (k = 0; k < 26; k++)
fprintf(out, "%d\n", bb[k]);
fclose(out);
}

void fun(char *tt, int pp[])
{
int i,j=0,k=97,m=0;
for(i=0;tt[i]!='/0';i++)
if((tt[i]==k)&&(k<103)) { m++; pp[j]=m; }
else { m=0; k++; j++; }
}
问题:
1.应该是123才对...
2.如果第一个字母是g,执行ELSE,但是i执行了++.所以你的第一个字母根本没有进入计算.
我的程序:
void fun(char *tt, int pp[])
{ int i,j;
for(i=0;i<26;i++)
pp[i]=0;
for(i=0;tt[i]!='/0';i++)
for(j=97;j<123;j++)
{
if(tt[i]==j)
pp[j-97]++;
continue;}
}