前言
大家好,我是yma16,本文分享用c语言统计ascii的字符出现次数。
c++语法
C++是一种流行的编程语言,其语法如下:
-
变量:使用关键字定义变量,例如:int、float、double、char等。变量必须在使用之前声明,并且可以被初始化。变量可以是局部的或全局的。
-
语句:使用分号作为语句的结束符号,例如:赋值语句、循环语句、条件语句等。C++支持多种语句和控制结构,包括if、else、switch、for、while、do-while等。
-
函数:使用关键字定义函数,例如:int、float、double、void等。函数接受参数并返回一个值。函数可以是内部的或外部的,并可以被重载。
-
类:使用class关键字定义类,包括属性和方法。类可以被继承并可以使用访问修饰符控制访问权限。
-
指针:指针是一种用于引用内存地址的变量类型。可以使用指针访问和修改变量的值,也可以使用指针进行动态内存分配。
-
数组:数组是一组具有相同类型的变量。可以使用数组下标访问单个元素,并可以使用循环访问整个数组。
-
文件操作: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]);
}
}
结束
本文分享到这结束,如有错误或者不足之处欢迎指出,感谢大家的阅读!