C语言问题

#include <stdio.h>
#include <string.h>
void fun(char *a, int b[]) //这行void fun是什么意思?什么情况下用void fun的//
{
int i;
for (i=0; i<6; i++) b[i] = 0;//这里又是什么意思 特别是b[i]=0?怎么会等于0的?//
for (i=0; i< strlen(a); i++)//i<字符串长度?什么意思?//
if (a[i] >= 'a' && a[i] <= 'e') b[a[i] - 'a']++;//不懂什么意思//
else b[5]++; //不懂什么意思//
}

main()
{ int i, b[6]; char a[100] = "bacd1b+ddep";
fun(a, b);//不懂//
printf("The result is: ");
for (i=0; i<6; i++) printf("%d ", b[i]);//不懂//
printf("\n");
}

请详细回答这几个问题 详细解释整个程序

#include <stdio.h>
#include <string.h>
void fun(char *a, int b[]) //这行void fun是什么意思?什么情况下用void fun的//
//答:void的意思是不返回任何数据,fun是函数名
//当需要定义一个名叫fun的不用返回数据的函数用void fun
{
int i;
for (i=0; i<6; i++) b[i] = 0;//这里又是什么意思 特别是b[i]=0?怎么会等于0的?//
//答:这句话的意思是:将b这个字符串清空(在某些程序中可以写作b="")
//b[i]=0就是将b[i]里存储的字符清除
for (i=0; i< strlen(a); i++)//i<字符串长度?什么意思?//
//答:遍历整个字符数组,或者说将b里的每个字符执行以下的操作
if (a[i] >= 'a' && a[i] <= 'e') b[a[i] - 'a']++;//不懂什么意思//
//答:在Ascii表中,a b c d e各表示67 68 69 70 71(好像是这样,反正一个比一个大1)
//就是说,b[0]到b[4]存储的是a b c d e的个数
else b[5]++; //不懂什么意思//
//答:如果这个字符既不是a,也不是b,也不是c或d或e,则认为它是其他字符
//其他字符个数增1
}

main()
{ int i, b[6]; char a[100] = "bacd1b+ddep";
fun(a, b);//不懂//
//调用名叫fun的函数(void fun(char *a, int b[]))
//也就是说fun函数里的char *a和int b[]就是fun(a, b)里的参数a和b
printf("The result is: ");
for (i=0; i<6; i++) printf("%d ", b[i]);//不懂//
//答:打印出a b c d e 其他字符的个数
printf("\n");
}
//其次,这个程序有错
//再其次,这个问题还是去书上多看看比较好吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-31
#include <stdio.h>
#include <string.h>
void fun(char *a, int b[]) //fun是自己定义的函数名称,void代表没有返回值,建议多看看书
{
int i;
for (i=0; i<6; i++) b[i] = 0;//只是把数组b的初始值都初始为0
for (i=0; i< strlen(a); i++)//i<字符串长度,控制循环的次数
if (a[i] >= 'a' && a[i] <= 'e') b[a[i] - 'a']++;
//满足条件数组i下标元素的值>'a'&&<'e',a相当于97,e相当于101
a[i] - 'a'这相当把a[i]的值-97,b[a[i] - 'a']++ 就是把数组下标为
a[i] - 'a'的值+1
else b[5]++; //返照上面的}

main()
{ int i, b[6]; char a[100] = "bacd1b+ddep";
fun(a, b);//就是调用上面自定义的fun()函数
printf("The result is: ");
for (i=0; i<6; i++) printf("%d ", b[i]);//循环输出数组b的值
printf("\n");
}
第2个回答  2008-05-31
void是空的意思
fun(char *a, int b[]) 是定义函数的函数名
b[i] = 0不是b[i] == 0而是赋初值的意思
i< strlen(a)这是比较字符串的长度的
if (a[i] >= 'a' && a[i] <= 'e') b[a[i] - 'a']++这是判断语句,一般用于确定下一步动作
fun(a, b)这是调用刚开始定义的函数
for (i=0; i<6; i++) printf("%d ", b[i]) 这是用for循环输出所有的数组元素
多看看书就好了!
第3个回答  2008-05-31
这个问题 要给你解释清楚 还真有点困难
可能 要说很多
建议你在好好看看书
书上写的 比 解释的更好
最起码 你得 知道 基本的语法 是如何 运用的不是
第4个回答  2008-05-31
大家都是做老师的人才啊,别那么费劲了。
相似回答