C语言利用ASCII码表统计字符串每个字符出现的次数

简介: C语言利用ASCII码表统计字符串每个字符出现的次数

前言

大家好,我是yma16,本文分享用c语言统计ascii的字符出现次数。

c++语法

C++是一种流行的编程语言,其语法如下:

  1. 变量:使用关键字定义变量,例如:int、float、double、char等。变量必须在使用之前声明,并且可以被初始化。变量可以是局部的或全局的。
  2. 语句:使用分号作为语句的结束符号,例如:赋值语句、循环语句、条件语句等。C++支持多种语句和控制结构,包括if、else、switch、for、while、do-while等。
  3. 函数:使用关键字定义函数,例如:int、float、double、void等。函数接受参数并返回一个值。函数可以是内部的或外部的,并可以被重载。
  4. 类:使用class关键字定义类,包括属性和方法。类可以被继承并可以使用访问修饰符控制访问权限。
  5. 指针:指针是一种用于引用内存地址的变量类型。可以使用指针访问和修改变量的值,也可以使用指针进行动态内存分配
  6. 数组:数组是一组具有相同类型的变量。可以使用数组下标访问单个元素,并可以使用循环访问整个数组。
  7. 文件操作:C++可以打开和关闭文件,并可以读写文件内容。

以上是C++的基础语法。同时,C++还有大量的标准库和第三方库,可以方便地实现各种功能。

c++输入输出示例

下面是一个简单的 C++ 输入输出示例:

#include <iostream>
using namespace std;
int main() {
    int a, b, c;
    cout << "请输入三个整数:";
    cin >> a >> b >> c;
    cout << "这三个数的和是:" << a + b + c << endl;
    return 0;
}

运行结果:

请输入三个整数:1 2 3
这三个数的和是:6

在这个示例中,我们使用了 cout 对象向屏幕输出提示信息和计算结果。我们还使用了 cin 对象从用户输入中获取三个整数,并将它们相加输出。注意,我们使用 >> 运算符来从 cin 读取值,使用 << 运算符将值输出到 cout。通过这些简单的输入输出操作,我们可以实现与用户进行交互并执行基本计算。

题目

在C语言里面写个能够统计并打印字符串中字符出现次数

输入一个字符串,输出该字符串中字符出现次数最多的次数。

思路:

遍历一次字符串统计,所有字符出现的次数,对比。

具体思路:

“定义两个char数组,输入,赋值给另一个字符数组

通过一个for循环嵌套两个for循环,比较,相同的值数组赋值=‘*’。

然后判断当数组值不等于0的时候和原数组进行比较再打印输出”

思路一

模拟过程

代码块

c++ 代码如下:

#include<stdio.h>
#include<string.h>
#define maxsize 100
int main(void){
  char s[maxsize],s1[maxsize];
  scanf("%s",s);
  for(int i=0,length=strlen(s);i<length;++i){
    s1[i]=s[i];
  }
  for(int i=0,length=strlen(s);i<length;++i){
    for(int j=i+1;j<length;++j){
      if(s[i]==s[j]){
        s1[j]='*';
      }
    }
    if(s1[i]!='*'){
      int number=0;
      for(int k=0;k<length;++k){
        if(s1[i]==s[k]){
          ++number;
        }
      }
      printf("%c出现次数:%d\n",s1[i],number);
    }
  }
}

运行正确

思路二

利用ascii的规则,所有的字符都出现在ascii中

这种方式更加简单粗暴,直接利用相同字符对应的数字一样作为数组下标,进行自加

想法很新颖,代码量比较少,效率高。

代码块如下:

其中int(s[i])是将字符换为ascii下标

#include<stdio.h>
#include<string.h>
#define maxsize 100
int main(void){
  char s[maxsize];
  scanf("%s",s);
  int asc[127]={0};//a-z字符对应ASCII码表小写字母97-122,大写字母是 65-90,小写大写相差32 
  for(int i=0,length=strlen(s);i<length;++i){
    asc[int(s[i])]++;//对应的ASCII码下标加1,同一个字母对应的下标都相同,进行计数 
  } 
  for(int j=0;j<123;++j){
    if(asc[j]!=0){
      printf("字母%c出现次数:%d\n",j,asc[j]);
    } 
  } 
} 

但是这个程序还有个不好的地方,没有按照输入字符串的顺序打印,而是从A-Z a-z打印的

这是安装ascii的顺序打印的

优化思路

优化打印顺序,记录统计的顺序

代码块如下:

#include<stdio.h>
#include<string.h>
#define maxsize 100
int main(void){
  char s[maxsize];
  scanf("%s",s);
  int length=strlen(s);
  char record[length];
  int asc[127]={0};//a-z字符对应ASCII码表小写字母97-122,大写字母是 65-90,小写大写相差32 
  for(int i=0,length=length;i<length;++i){
    record[i]=s[i];统计
    asc[int(s[i])]++;//对应的ASCII码下标加1,同一个字母对应的下标都相同,进行计数
  } 
  for(int j=0;j<length;++j){
    int asciiIndex=int(record[j]);
    printf("字母%c出现次数:%d\n",j,asc[asciiIndex]);  
  } 
} 

结束

本文分享到这结束,如有错误或者不足之处欢迎指出,感谢大家的阅读!

目录
相关文章
|
3天前
|
C语言
C语言 字符串操作函数
本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。
|
19天前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
19 4
|
19天前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
|
19天前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
|
24天前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
25天前
|
C语言 C++
|
3天前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
4天前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
19天前
|
编译器 程序员 C语言
【C语言篇】从零带你全面了解函数(包括隐式声明等)(下篇)
⼀般情况下,企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
|
22天前
|
测试技术 C语言
C语言中的void函数
C语言中的void函数