微电子22 发表于 2022-12-25 19:41:02

不懂

编写一个函数void fun(char*q,int pp[])统计在q字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在数组pp中。
#include <stdio.h>
#include <string.h>

void main()
{
char tt;
int ii;
int pp;
gets(tt);
for(ii=0;ii<100;ii++)
{
          if(tt='a')       {pp++;}
          else if(tt='b'){pp++;}
          else if(tt='c'){pp++;}
          else if(tt='d'){pp++;}
          else if(tt='e'){pp++;}
          else if(tt='f'){pp++;}
          else if(tt='g'){pp++;}
          else if(tt='h'){pp++;}
          else if(tt='i'){pp++;}
          else if(tt='j'){pp++;}
          else if(tt='k'){pp++;}
          else if(tt='l'){pp++;}
          else if(tt='m'){pp++;}
          else if(tt='n'){pp++;}
          else if(tt='o'){pp++;}
          else if(tt='p'){pp++;}
          else if(tt='q'){pp++;}
          else if(tt='r'){pp++;}
          else if(tt='s'){pp++;}
          else if(tt='t'){pp++;}
          else if(tt='u'){pp++;}
          else if(tt='v'){pp++;}
          else if(tt='w'){pp++;}
          else if(tt='x'){pp++;}
          else if(tt='y'){pp++;}
          else if(tt='z'){pp++;}
}
for(ii=0;ii<26;ii++)
{
   printf("%d",pp);
}
}

jackz007 发表于 2022-12-25 19:55:57

本帖最后由 jackz007 于 2022-12-25 19:57 编辑

#include <stdio.h>

#include <stdio.h>

int main()
{
      char pp = {0} , tt                                                    ;
      gets(tt)                                                                     ;
      for(int i = 0 ; tt ; i ++) pp - 'a'] ++                               ;
      for(int i = 0 ; i < 26 ; i ++) if(pp) printf("%c : %d\n" , 'a' + i , pp) ;
}
      编译运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
abcde
a : 1
b : 1
c : 1
d : 1
e : 1

D:\\C>

柿子饼同学 发表于 2022-12-25 20:04:13

#include <stdio.h>
#include <string.h>
#include <ctype.h> // 加这个头文件可以用 islower()

char str;
int pp;
int len;

void fun(char * p, int pp[]){
    for(int i = 0; i < len; i++){
      if(islower(p)){ // 判断是不是小写
            pp - 'a']++;// c中这些字母按照 ASCII 码存储, a 的码是 97, b = 98 等等
            // 因此每个字母对应的位置就是减去 a(97) 的结果, 比如 'b' - 'a' = 1...
      }
    }
}

int main(){
    gets(str);
    len = strlen(str);// 字符串长度

    fun(str, pp);

    for(int i = 0; i < 26; i++){
      printf("%d ", pp);
    }
   
    return 0;
}

焦糖橙子 发表于 2022-12-26 22:52:21

 你第一个for循环,ii取不到100这么多的,数组越界了啊
 for(ii=0;ii<100;ii++)
页: [1]
查看完整版本: 不懂