cccc语言

来源:百度知道 编辑:UC知道 时间:2024/05/20 01:04:12
请编一个函数 fun() 统计tt字符中'a'到'z'26个字符出现的次数

#include <stdio.h>
void fun(char *tt, int pp[])
{
int j;
char *q=tt;
for(j=0;j<26;j++)
pp[j]=0;
while(*q)
{
(pp[*q-'a'] += 1;
q++;
}
}

main()
{ char aa[1000] ;
int bb[26], k, n ;
printf( "\nPlease enter a char string:" ) ; scanf("%s", aa) ;
fun(aa, bb ) ;
for ( k = 0 ; k < 26 ; k++ ) printf ("%d ", bb[k]) ;
printf( "\n" ) ;
NONO() ;
}
NONO()
{/* 本函数用于数据读入和结果写入文件, 考生无需修改 */
char aa[1000] ;
int bb[26], k, n, i ;
FILE *rf, *wf ;

rf = fopen("in.dat", "r") ;
if(rf == NULL) {
printf("在考生文件夹下数据文件in.dat不存在!") ;
return ;
}
wf = fopen("out.dat", "w") ;
for(i = 0 ; i < 10 ; i

***************************************************
**************** 问题在这!!!!********************
***************************************************
存在的问题:(没什么大问题,但还存在一些不够清楚的地方.)
1.(pp[*q-'a'] = 1; 这个句子前面不应该有"(",应该为pp[*q-'a'] = 1;
2.fun函数中,为了计算'a'到'z'26个字符出现的次数,
应该在pp[*q-'a'] = 1;的前面加上判断语句if(0<=(*q-'a') && (*q-'a')<26)
避免在语句"pp[*q-'a'] = 1;"中出现pp[-2]或者pp[30]等越界,引起不要的麻烦!!!(比如只读错误等!!!)

运行应该注意几点:
1.输入函数是scanf("%s", aa),我们应该知道scanf函数接受数据时,以"空格""回车""换行""制表符"等为结束符号,所以应该分清:
*********************************************************
当输入:"abc123de fg"时,实际接受的是 aa[1000]="abc123de"
*********************************************************
而不是 "abc123de fg" 或者 "abc123de fg".

2.这是一道C语言上机题目, 函数NONO()考试系统给出的,又不是该错题,可以不要理会它,因为理