一道编程题看看哪里不对。

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:57:35
3.编程题
请编写一个函数void fun(char *tt, int pp[]),统计在tt所指字符串中'a'到'z' 26个小写字母各自出现的次数,并依次放在pp所指数组中。
例如,当输入字符串:abcdefgabcdeabc 后,程序的输出结果应该是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <string.h>
void fun(char *tt,int pp[])
{
char c;
for(c='a';c<='z';c++)
{
while(*tt)
{if(*tt==c)
pp[c-'a']++;
tt++;
}
}

}
main()
{
char aa[1000];
int bb[26],k,n;
printf("Please enter a char string:");
scanf("%s", aa);
fun(aa,bb);
for(k=0;k<26;k++) printf("%d",bb[k]);
printf("\n");
}
一楼同志运行的结果和我的一样
Please enter a char string:abcdefgabcdeabc
-858993457-858993457-858993457-858993458-858993458-858993459-858993459-858993460
-858993460-858993460-8589

看一下我的程序吧,文件中写一串字符串,然后运行程序统计

#include<stdio.h>
#include<math.h>

void stat(char *file,int *statistic)//这个地方的就是统计字母出现的次数,和你的FUN函数功能一样,你参考一下
{
int i=0;
while(file[i++]!=0)
statistic[file[i-1]-97]++;
}

int main()
{

char file[100]={0};
int statistic[26]={0};
int i=0,j;
double s=0;
FILE *fp;
if((fp=fopen("1.txt","r"))==NULL)
{
printf("can't open 1.txt");
return 1;
}
while(!feof(fp))
fread(&file[i++],1,1,fp);
fclose(fp);
j=i;
stat(file,statistic);
for(i=0;i<26;i++)
printf("%c:%d\n",97+i,statistic[i]);
return 0;
}

你的程序有一个问题,就是没有给数组BB初始化,你在定义的时候改一下,改成int bb[26]={0};

void fun(char *tt,int pp[])
{
int i;
for(i=0 ;j<26;i++)
pp[i]=0;
while(*tt!='\0')
{if(*tt>='a'&&*tt&