用汇编语言求一个字符串中不同字符的个数
C语言 统计字符个数(指针)
时间限制:
1000毫秒
内存限制:
32768 K字节
总提次数:
689次
成功提交次数:
455次
判题规则:
严格比较
问题描述
输入一行字符,统计并输出其中数字字符、英文字母和其它字符的个数。
要求:
1、编写一函数void count(char *s,int *pdigit,int *pletter,int *pother),其中s为输入的字符串,*pdigit, *pletter,*pother分别表示字符串中数字、字母和其他字符的个数。
int dight=0;
int letter=0;
int other=0;
gets(s);
count(s,&dight,&letter,&other);
printf("%d %d %d \n",dight,letter,other);
return 0;
}
输入
输入1个字符串。
输出
输出数字、字母和其他字符的个数。每个数后有一空格。
输入样列
wenzhou university 1933
输出样例
4 17 2
出处
ymc
答案:
#include <stdio.h>
#include <string.h>
void count(char s[],int *pdight,int *pletter,int *pother)
{
int n;
int i;
n=strlen(s);
for(i=0;i<n;i++)
汇编语言——统计一个字符串中的大写字母、小写字母、数字和其他字符的个数,并显示
汇编语⾔——统计⼀个字符串中的⼤写字母、⼩写字母、数字和其他字符的个数,并显⽰;统计字符串中⼤写字母、⼩写字母、数字、其他字符的个数DATAS SEGMENT buf db '12ADdf#gh592HKL*','′tp1db0;⼤写字母个数 tp2db0;⼩写字母个数 tp3db0;数字的个数 tp4db0;其他字符的个数 str1db′thenumberofbigis:′,′' str2 db 'the number of small is:','′str3db′thenumberofnumberis:′,′' str4 db 'the number of other is:','′str5db0dH,0aH,′';换⾏DATAS ENDSSTACKS SEGMENT ;此处输⼊堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX lea si, buf mov cx, 16;设置循环次数 again: ;字符串结尾,结束程序 cmp byte ptr[si],'&' je exit ;0-9 cmp byte ptr[si],30h;⼩于30,其他字符加1 jb L1 cmp byte ptr[si],39h;⼤于39进⼀步⽐较 jbe L2 cmp byte ptr[si],41h jb L1 cmp byte ptr[si],5AH jbe L3 cmp byte ptr[si],61h jb L1 cmp byte ptr[si],7AH jbe L4 L1: inc tp4 jmp L5 L2: inc tp3 jmp L5 L3: inc tp1 jmp L5 L4: inc tp2 jmp L5 L5: add si,1 loop again ;显⽰⼤写字母 lea dx,str1 mov ah,09h int 21h mov bl,tp1 call disp ;调⽤⼦程序 mov ah,09h lea dx,str5 int 21h ;显⽰⼩写字母 lea dx,str2 mov ah,09h int 21h mov bl,tp2 call disp ;调⽤⼦程序 mov ah,09h lea dx,str5 int 21h ;显⽰数字 lea dx,str3 mov ah,09h int 21h mov bl,tp3 call disp ;调⽤⼦程序 mov ah,09h lea dx,str5 int 21h ;显⽰其他 lea dx,str4 mov ah,09h int 21h mov bl,tp4 call disp ;调⽤⼦程序 mov ah,09h lea dx,str5 int 21h exit: MOV AH,4CH INT 21H disp PROC ;显⽰BX中的数 mov ch,4 roll: mov cl,4 rol bx,cl mov dl,bl and dl,0fh cmp dl,9 jbe next1 add dl,07h next1: add dl,30h mov ah,02h int 21h dec ch jnz roll RET disp ENDPCODES ENDS END STARTProcessing math: 100%。
统计字符串中某个字符出现次数
武汉理工大学《微机原理与接口技术》课程设计目录摘要 (1)1课程设计目的 (2)2设计条件及要求 (2)2.1程序设计条件 (2)2.2程序设计要求 (2)3总体方案论证 (2)3.1总体方案思路 (2)3.2方案注意事项 (3)3.3具体方案论证 (3)3.3.1方案一 (3)3.3.2方案二 (4)3.3.3方案论证 (4)4流程图设计及说明 (5)4.1流程图 (5)4.2设计说明 (5)5软件设计关键问题和相应程序段 (6)5.1关键问题说明 (6)5.2问题解决方法 (6)5.3相应程序段 (7)6程序调试 (9)7结果记录及分析 (10)8课程设计收获及心得体会 (12)9参考文献 (13)10附录 (14)摘要微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,即是遵循冯·诺依曼基本思想的。
学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日常中经典的控制程序。
本文通过汇编语言编写程序,完成统计字符串中某个字符出现次数这一基本功能。
下面会介绍该程序的编程思路,并对程序设计中遇到的问题进行深入的研究。
关键字:微机统计编程统计字符串中某个字符出现次数汇编语言程序设计1课程设计目的通过本次课程设计,熟悉微机原理与接口技术的基本理论,使学生能够进一步了解微型计算机工作原理, 微型计算机的硬件结构及微型计算机软件编程,掌握使用汇编语言编写程序的方法,并进一步提高编程设计能力。
2设计条件及要求本次《微机原理与接口技术》课程设计的题目为统计字符串中某个字符出现的次数,为汇编程序设计。
2.1程序设计条件采用16位微处理器8086 CPU以及86系列微型计算机的指令系统;软件设计平台为多功能微型计算机实验软件MFS中的微机原理实验集成环境MF2KP。
2.2程序设计要求设计汇编语言程序,实现统计字符串中某个字符出现次数的功能,具体功能要求如下:(1)提示输入字符串;输入任意字符串string ,点击Enter结束输入;(2)提示输入字符;输入任意字符ch,点击Enter 结束输入;(3)输出字符串string 中字符ch的出现次数。
【精品文档】汇编语言-统计字符串中的字符个数
prompt2 byte cr, lf, "the string have ", 0 count1 dword 11 dup (?) prompt3 byte ' char',cr, lf, 0 string byte 100 dup (?)
.CODE count
proc near32 push ebp mov ebp, esp
INCLUDE io.h
; header file for input/output
cr
EQU 0dh ; carriage return character
Lf
EQU 0ah ; line feed
.STACK 4096
; reserve 4096-byte stack
.DATA prompt1 byte cr, lf, "Please input your string:",cr, lf,0
实 验 结 果 分 析 及 心 得 体 会
成 绩 评 定
备注:源代码附后,源代码要求有注释说明
教师签名mple assembly language program -- count number of chars in the string ; Author: duchuanhu ; Date: revised 12/08
.386 .MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
output prompt2 output count1 + 8 output prompt3
INVOKE ExitProcess, 0 ; exit with return code 0
在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法
在⼀个字符串中,统计⼤写字母个数,⼩写字母个数,其他字符个数的四种算法题⽬描述:编写程序,输出字符串中的⼤写字母、⼩写⼩母和其他的个数。
如有⼀个字符串"Helle, This is A test textfile.123456, tannkyou!!",则其⼤写字母个数:3,⼩写字母个数:29,其他字符个数:18.这⾥提供了四种算法,第⼀种是我们⽐较好理解的,也属于硬编码问题,其他三种⽅法要借助JAVA语⾔的jdk提供的api。
⽅法⼀:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>js分析字符串内容</title><!--实现⼀个函数,输出某字符串⾥有⼏个⼤写字母,⼩写字母,数字,其他符号。
字符串由形参指定 --><script>var str = prompt("请随意输⼊⼤写字母⼩写字母数字及符号等");function analyze(aa){var a = 0;var A = 0;var n = 0;var other = 0;for (var i=0;i<aa.length;i++){var c = aa.substr(i,1); //aa.charAt(i);if (c>='a' && c<='z'){a++;}else if(c>='A' && c<='Z'){A++;}else if(c>='0' && c<='9'){n++;}else{other++;}}document.write("⼩写字母为"+a,"⼤写字母为"+A,"数字为"+n,"其他字符为"+other);}</script></head><body onload="analyze(str)"></body></html>[java]1. //⽅法⼀:在利⽤每个字符的Unicode码在a~z之间,调⽤jdk提2. //供的String类的charAt取出字符串每⼀个字符,逐个进⾏⽐较来判定3.4. class FindLetter {5. public static void main(String[] args) {6. String str = "Helle, This is A test textfile.123456, tannk you!!";7. int upCount = 0;8. int lowCount = 0;9. int otherCount = 0;10.11. for(int i = 0; i < str.length(); i++) {12. char c = str.charAt(i);13. if(c >= 'a' && c <= 'z') {14. lowCount++;15. } else if(c >= 'A' && c <= 'Z') {16. upCount++;17. } else {18. otherCount++;19. }⽅法⼆:[java]1. //⽅法⼆:⽤jdk的Character类的isUpperCase⽅法和isLowerCase⽅法2.3. class FindLetter1 {4. public static void main(String[] args) {5. String str = "Helle, This is A test textfile.123456, tannk you!!";6. int upCount = 0;7. int lowCount = 0;8. int otherCount = 0;9.10. for(int i = 0; i < str.length(); i++) {11. char c = str.charAt(i);12. if(Character.isUpperCase(c)) {13. upCount++;14. } else if(Character.isLowerCase(c)) {15. lowCount++;16. } else {17. otherCount++;18. }19. }20. System.out.println("⼤写字母个数:" + upCount);21. System.out.println("⼩写字母个数:" + lowCount);22. System.out.println("其他字母个数:" + otherCount);23. }24. }⽅法三:[java]1. //⽅法三:先定义两个字符串a到z和A到Z,再逐个取出str字符串中的每个字母,2. //⽤indexOf()⽅法来判断字符是否在这这个定义的字符串中,在⼤写字母这⼀⾏,3. //⼤写字母的计数器就加1,在⼩写字母这⾏,⼩写字母就加⼀,否则其他字母计算器4. //加15.6. class FindLetter2 {7. public static void main(String[] args) {8. String low = "abcdefghijklmnopqrstuvwxyz";9. String up = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";10. int lowCount = 0;11. int upCount = 0;12. int otherCount = 0;13. String str = "Helle, This is A test textfile.123456, tannk you!!";14.15. for(int i = 0; i < str.length(); i++) {16. char c = str.charAt(i);17. if(low.indexOf(c) != -1) {18. lowCount++;19. } else if(up.indexOf(c) != -1) {20. upCount++;21. } else {22. otherCount++;23. }⽅法四:[java]1. //把str分别转化为⼤写和⼩写⼤写⽤sU ⼩写 sL2. //然后通过与原串⽐较来统计个数3.4. class FindLetter3 {5. public static void main(String[] args) {6. String str = "Helle, This is A test textfile.123456, tannk you!!";7. String sU = str.toUpperCase();8. String sL = str.toLowerCase();9. int lowCount = 0;10. int upCount = 0;11. int otherCount = 0;12. for(int i = 0; i < str.length(); i++) {13. char charSTR = str.charAt(i);14. char charSU = sU.charAt(i);15. char charSL = sL.charAt(i);16.17. //如果不是字母,是其他字符,则直接⽤otherCount来计数18. if(Character.isLetter(charSTR)) {19. //如果原串与转换过后的⼤写字母串相等,则原来字符为⼤写字母,20. //若与⼩写字母相等,则为⼩写字母21. if( charSTR == charSU) {22. upCount++;23. } else if(charSTR == charSL) {24. lowCount++;25. }26. } else {27. otherCount++;28. }29. }30.31. System.out.println("⼤写字母个数:" + upCount);32. System.out.println("⼩写字母个数:" + lowCount);33. System.out.println("其他字母个数:" + otherCount);34. }35. }这四种算法都有正确的输出:⼤写字母个数:3⼩写字母个数:29其他字母个数:18。
接收输入的一行字符,统计出字符串中包含数字的个数.
统计字符串中数字个数的方法有很多种,下面我们分别介绍几种常见的方法。
方法一:遍历统计1. 我们可以通过遍历字符串的每一个字符,判断字符是否是数字,并统计数字的个数。
实现代码如下:```pythondef count_digits(s):count = 0for char in s:if char.isdigit():count += 1return countinput_str = input("请输入字符串:")result = count_digits(input_str)print("字符串中包含数字的个数为:", result)```方法二:使用正则表达式2. 正则表达式是一种可以用来匹配字符串的强大工具,我们可以利用正则表达式来匹配数字,并统计匹配到的数字个数。
实现代码如下:```pythonimport redef count_digits(s):pattern = repile(r'\d')result = pattern.findall(s)return len(result)input_str = input("请输入字符串:")result = count_digits(input_str)print("字符串中包含数字的个数为:", result)```方法三:使用内置函数3. Python内置的字符串方法也提供了一些方便的函数来处理字符串。
我们可以使用`isdigit()`函数来判断字符是否是数字,然后统计数字的个数。
实现代码如下:```pythondef count_digits(s):count = sum(1 for char in s if char.isdigit())return countinput_str = input("请输入字符串:")result = count_digits(input_str)print("字符串中包含数字的个数为:", result)```以上就是三种统计字符串中数字个数的方法,你可以根据实际情况选择适合自己的方法来使用。
返回文本字符串中的字符个数所用到的函数
返回文本字符串中的字符个数所用到的函数在计算机编程中,经常会遇到需要统计文本字符串中字符个数的情况。
为了方便实现这一功能,许多编程语言都提供了相应的函数。
下面将介绍几种常见的函数,它们可以用来返回给定文本字符串中字符的个数。
1. len()函数len()函数是Python编程语言中常用的一个函数,它可以返回给定字符串的长度,即字符串中字符的个数。
例如,对于字符串"Hello World!",使用len()函数可以得到字符串中字符的个数为12。
2. strlen()函数strlen()函数是C语言中常用的一个函数,它可以返回给定字符串的长度,即字符串中字符的个数。
例如,对于字符串"Hello World!",使用strlen()函数可以得到字符串中字符的个数为12。
3. length()函数length()函数是JavaScript编程语言中常用的一个函数,它可以返回给定字符串的长度,即字符串中字符的个数。
例如,对于字符串"Hello World!",使用length()函数可以得到字符串中字符的个数为12。
4. str.size()函数str.size()函数是C++编程语言中string类的成员函数,它可以返回给定字符串的长度,即字符串中字符的个数。
例如,对于字符串"Hello World!",使用str.size()函数可以得到字符串中字符的个数为12。
5. len()方法len()方法是Java编程语言中String类的方法,它可以返回给定字符串的长度,即字符串中字符的个数。
例如,对于字符串"Hello World!",使用len()方法可以得到字符串中字符的个数为12。
6. length()方法length()方法是JavaScript编程语言中String类的方法,它可以返回给定字符串的长度,即字符串中字符的个数。
统计字符个数
for(i=0;i<26;i++)
pp[i]=0;
for(i=0;i<m;i++)
for(j=0;j<26;j++)
if((aa[i]-97)==j)
{pp[j]=pp[j]+1;
j=26;}}
3、统计在 tt 字符串中'a'到'z'26个字母各自出现的次数,并存入pp数组。 请考生编写函数
int num(char *ss, char c)
{int i,n=0;
for(i=0;ss[i];i++)
if(ss[i] == c)
n++;
return n;}
5、函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数CountWord(),找出重复出现次数最多的十个单词,并按它们的出现次数从大到小存入字符串数组yy中,它们各自出现的次数也将依次存放在整数数组nn中,最后调用函数WriteDat()把结果yy和nn输出到文件OUT.DAT中,单词和出现次数之间用“:”分开。原始数据文件的存放格式是:每行的宽度均小于80个字符,每一个单词的长度不大于20,含标点符号和空格。
int num(char *ss,char c)
{int i,cnt;
cnt=0;
for (i=0;i<M;i++)
if (ss[i]==c) cnt++;
return cnt;}
2、下列程序的功能是:统计在tt字符串中'a'到'z'26个字母各自出现的次数,并存入pp数组。请编写函数cnt(char *tt,int pp[])实现程序要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。(注:仅统计小写字母)
英文字符个数统计
英文字符个数统计
在计算机中,英文字符指的是英文字母、数字和标点符号。
统计英文字符个数可以用程序实现,具体操作如下:
1. 读入一段文本,保存在一个字符串变量中。
2. 遍历字符串中的每个字符,判断它是否为英文字符。
可以使用ASCII码进行判断,ASCII码表中,英文字母、数字和标点符号的编码范围分别是:
英文字母:65~90(大写字母)和97~122(小写字母)
数字:48~57
标点符号:33~47、58~64、91~96、123~126
可以用if语句结合ASCII码表进行判断,若字符的ASCII码在以上范围内,则它是英文字符。
3. 统计英文字符个数,可以定义一个计数器变量,每遇到一个英文字符,计数器加1。
4. 最后输出统计结果即可。
下面是一个简单的Python程序示例:
```python
text = input('请输入一段英文文本:')
count = 0
for ch in text:
if (ch >= 'A' and ch <= 'Z') or (ch >= 'a' and ch <= 'z') or (ch >= '0' and ch <= '9') or (ch in string.punctuation):
count += 1
print('英文字符个数为:', count)
```
需要注意的是,以上程序中需要用到Python标准库中的string.punctuation变量,它包含了所有标点符号的字符集。
从键盘输入一串字符,分别统计其中的字母,数字字符和其他
汇编编程:从键盘输入一串字符,分别统计其中的字母(不区分大小写)、数字字符和其他键盘输入一串字符,统计出其中的数字字符个数,字母字符(不区分大小写)个数,其他字符个数,并显示出这三类统计结果(输入字符串以回车结束),可连续对多个字符串统计,用户输入N时退出程序。
要求:题目分析(如何实现,以及实现的关键技术或步骤)2.要有流程图3.写出程序代码4.写出上机操作步骤,给出输入的数据及程序运行结果。
; 题目名称:分类统计字符; 题目来源:/question/131013276.html; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code SegmentAssume CS:Code,DS:Code; -------------------------------------; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr=字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addrlea dx,Str_Addrmov ah,9int 21hEndM; -------------------------------------; 功能:在当前光标位置显示一个字符; 入口:dl=要显示的字符Output_Chr proc Nearpush axmov ah,02hint 21hpop axretOutput_Chr Endp; -------------------------------------; 功能:显示、输出一个回车、换行Output_CTLF proc Nearpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axretOutput_CTLF Endp; -------------------------------------; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示; 入口:AX=二进制数; 出口:在当前光标位置显示转换后的ASCII码数字Unsi_Dec_ASCII Proc Nearpush dxpush bxpush dimov bx,10lea di,@@Temp_Save[5]mov BYTE PTR [di],'$'dec dicld@@Divide: xor dx,dxdiv bxor dl,30hmov [di],dldec ditest ax,axjnz @@Divideinc dipush dipop dxmov ah,9int 21hpop dipop bxpop dxret@@Temp_Save db 6 dup(?)Unsi_Dec_ASCII EndP; -------------------------------------; 功能:键盘输入一个字符,若输入的是'y'或'n'(不分大小写),则显示并返回; 入口:无; 出口:若输入的是'y',进位标志置位;若输入的是'n',进位标志复位。
微机原理实验指导书
实验一数据传送实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用TurboDebugger调试工具来调试汇编语言程序。
实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
用汇编语言实现字符统计算法
上海电力学院实验报告计算机硬件实验课程题目:字符统计算法的实现班级:姓名:学号:一、实验目的通过实验,掌握MASM工具调试汇编程序、熟悉DOS功能调用。
二、实验要求从键盘输入一系列字符,以回车符结束,编程统计其中非数字字符的个数。
三、实验内容程序首先调用DOS 功能的1号功能,从键盘输入字符。
为得到字符串,可以采用循环结构,连续输入。
在输入的过程中通过判断是否是回车来结束输入。
其中回车的ASII 码(0DH)。
数字的0的ASII码(30H)9的(39H)。
四、流程图Next1函数:Next函数:Exit函数:五、实验设计与实现1)编写实验程序如下data segmentbuf db 20h dup(?)cnt db ?data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axlea si,buf si指向buf首单元mov dl,0 记数器DL清零next1:mov ah,1 从键盘输入一个字符int 21hmov buf,al 输入字符送缓冲区inc sicmp al,0dHje exit 输入回车键转exitcmp al,30hjae next 输入字符的ASII码大于等于30h转next inc dl 否则记数器加1next: cmp al,39hjbe next1inc dljmp next1exit: add dl,30h 将dl变成ASCⅡ码mov ah,2 调用单字符输出功能int 21hmov ah,4chint 21h 退出,返回到doscode endsend start2)输入为abc123,结果输出为3(此时为无回显输入)图2-13)输入为abc123,输出结果也为3(此时有回显输入),输出结果替代了第一位置的1。
因此最后采用了无回显的功能。
图2-2。
汇编语言-统计字符串中的字符个数
汇编语言-统计字符串中的字符个数前言计算机语言的层次可以分为机器语言、汇编语言、高级语言等等。
在这些语言中,汇编语言是最接近于计算机硬件的一种语言,是二进制代码的直接书写形式。
虽然比机器语言更容易编写阅读,但汇编语言的学习和编写难度仍然比较大。
本篇文章将介绍在汇编语言中统计字符串中的字符个数的方法。
一、问题描述二、思路分析我们可以遍历这个字符串中的每一个字符,然后对每一个字符统计一次,最终就可以得到所有字符的总数。
在这个过程中需要注意以下几点:- 字符串的结束符,在C语言中,字符串以'\0'结尾,所以在统计字符串中字符个数的时候使用'cmpb $0, (%esi)'进行循环终止,因为字符串最后一个字符存放的是'\0'结束符。
- 字符串中可能含有同一个字符,所以在统计字符个数的时候,需要判断是否之前已经计算过了。
- 由于一个字符在ASCII码表中的值为0~255,这个范围有256个数,所以我们可以定义一个数组,将字符串中每个字符出现的次数存储在数组中。
三、具体实现下面是通过AT&T语法实现的代码。
.section .data ; 数据段str: .string "hello world ! This is a test." ; 字符串定义.section .bss ; 未初始化数据段count: .zero 256 ; 定义长度为256的数组,存放每个字符出现的次数.section .text ; 文本段.globl _start ; 入口标记_start:mov $str, %esi ; esi寄存器指向字符串地址xor %eax, %eax ; eax寄存器初始化为0.CountChar:cmpb $0, (%esi) ; 判断结束,碰到'\0'je EndCountmov (%esi), %al ; 从esi指向的地址取出一个字符,赋给al cmp $count, %al ; 比较字符是否越界jae NotLetteradd $1, count(%eax) ; 字符出现次数加1.NotLetter:add $1, %esi ; 下一个字符jmp CountChar.EndCount:mov $0, %ebx.Print:cmp $255, %ebx ; 假如循环到了255个字符,输出结果je EndPrintmov %bl, %bh ; 蓝色变红色mov count(%ebx), %ecx ; ecx中存放当前字符出现的次数cmp $0, %ecx ; 判断字符是否出现过jnz PrintChar ; 如果出现过,直接输出inc %ebxjmp Print.PrintChar:mov $4, %eax ; 输出mov $1, %ebx ; 标准输出mov $count(%ebx, %eax, 4), %ecx ; 取出次数 mov $1, %edx ; 字符个数mov $ebx, %eax ; 该字符的ASCII码add $48, %eax ; 将ASCII码转换为字符int $0x80 ; 输出字符mov $':', %al ; 输出':'int $0x80mov $ecx, %eax ; 输出次数xor %ebx, %ebxxor %ecx, %ecxmov $10, %ebx.Div:xor %edx, %edxdiv %ebxpush %edxcmp $0, %eax ; 进行取模除法jne DivPrintInt:pop %eaxadd $48, %eax ; 将ASCII码转换为字符int $0x80cmp $0, %esp ; 判断栈是否已经空了jne PrintInt ; 如果栈不为空,继续输出字符 mov $10, %al ; 输出换行符int $0x80 ; 停止程序.EndPrint:mov $1, %eax ; 退出xor %ebx, %ebxint $0x80.end _start四、总结统计字符串中字符个数是初学者熟悉汇编语言的一个适合练手的例子,可以对汇编语言的运行过程和寄存器的使用有一个较为直观的认识。
编写程序统计1行字符串中:不同字符的个数。每种字符出现的次数。
编写程序统计1行字符串中:不同字符的个数。
每种字符出现的次数。
编写一个程序来统计给定字符串中不同字符的个数以及每种字符出现的次数。
首先,我们需要定义一个函数来实现这个功能。
```pythondef count_characters(string):# 创建一个空的字典来存储字符和它们的出现次数character_count = {}# 遍历字符串中的每个字符for char in string:# 如果字符已经在字典中,则将其计数加1if char in character_count:character_count[char] += 1# 如果字符不在字典中,则将其添加到字典中,并将计数设置为1else:character_count[char] = 1# 打印不同字符的个数print('不同字符的个数:', len(character_count))# 打印每个字符和它们的出现次数for char, count in character_count.items():print('字符 '{}' 出现次数: {}'.format(char, count))# 测试程序string = input('请输入一个字符串:')count_characters(string)```在上述程序中,我们首先创建了一个空的字典 `character_count` 来存储字符和它们的出现次数。
然后,我们遍历给定字符串中的每个字符,并检查它是否已经在字典中。
如果是,则将其计数加1;如果不是,则将其添加到字典中,并将计数设置为1。
最后,我们打印出不同字符的个数,并以字符和它们的出现次数的形式打印出结果。
请注意,上述代码仅适用于英文字符。
如果要处理其他语言的字符,需要对代码进行适当的修改。
6-3统计字符串中各类字符个数
/*第6次作业第六章控制结构综合程序设计---6-3统计字符串中各类字符个数5.【问题描述】输入一行字符,统计其中英文字母、空格、数字和其他字符的个数。
【输入形式】输入一行字符。
【输出形式】输出各类字符串的个数。
【样例输入1】(下划线部分为键盘输入,其余部分为程序输出)Programming is fun!【样例输出】letter=16,blank=2,digit=0,other=1【样例输入2】(下划线部分为键盘输入,其余部分为程序输出)13 is a luck digit【样例输出】letter=12,blank=4,digit=2,other=0【样例说明】输入的数据之间以一个空格相隔。
英文字母区分大小写。
必须严格按样例输入输出。
*/#include<stdio.h>int main(void){int letter=0,blank=0,digit=0,other=0;char ch;while((ch=getchar())!='\n'){if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))letter++;else if(ch>='0'&&ch<='9')digit++;else if(ch==' ')blank++;elseother++;}printf("letter=%d,blank=%d,digit=%d,other=%d",letter,blank,digit,other);return 0;}。
vba 判断指定单元格内特定字符个数的方法
vba 判断指定单元格内特定字符个数的方法文章主题:VBA 判断指定单元格内特定字符个数的方法【导言】作为VBA的初学者,我们经常会在工作中遇到需要统计指定单元格内特定字符个数的情况。
我们可能需要统计一个单元格内出现某个字母的次数,或者统计某个单词在一个字符串中出现的次数。
今天,我们就来探讨一下如何使用VBA来实现这个功能。
【基本概念及方法】1. 使用Len函数获取字符串长度在VBA中,我们可以使用Len函数来获取一个字符串的长度,也就是该字符串中字符的个数。
结合这一特性,我们可以通过遍历字符串的方法来统计特定字符的个数。
2. 使用Mid函数截取字符串VBA中的Mid函数可以用来截取字符串中的特定部分,我们可以通过遍历字符串并逐个比对的方式来统计特定字符的个数。
【进阶方法】1. 使用Replace函数替换掉指定字符在VBA中,我们可以使用Replace函数来替换字符串中的特定字符,通过计算替换前后字符串长度的差值来统计特定字符的个数。
2. 使用Split函数拆分字符串VBA中的Split函数可以将一个字符串按照指定字符进行拆分,进而统计特定字符的个数。
【实际案例分析】接下来,我们通过一个实际案例来演示如何使用VBA来判断指定单元格内特定字符的个数。
假设我们有一个工作表,A列为尊称,B列为性别。
我们需要统计性别为“男”的人数。
我们可以通过以下VBA代码来实现:```Sub CountGender()Dim ws As WorksheetDim count As IntegerDim cell As RangeSet ws = ThisWorkbook.Sheets("Sheet1")count = 0For Each cell In ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)If cell.Value = "男" Thencount = count + 1End IfNext cellMsgBox "性别为男的人数为:" & countEnd Sub```【个人观点及总结】通过以上的讨论和案例分析,我们可以看到,在VBA中判断指定单元格内特定字符个数的方法有多种,我们可以根据具体情况选择合适的方法来实现。
计算字符个数的函数
计算字符个数的函数首先,要用函数计算字符个数,需要明确一些概念。
字符个数通常是指字母,数字,空格和特殊符号组成的文本中的字符总数。
在计算的过程中,可以用一个变量,比如count来表示当前的字符总数,为了进行计算,还要定义一个变量curr来表示当前的字符,也就是正在处理的字符。
其次,在使用函数计算字符个数时,可以采用迭代的思路实现,也就是通过依次处理字符,不断更新count变量来计算字符个数。
当遍历到某一字符时,首先要从文本中读取这个字符到curr变量中,然后更新count变量,最后进行下一次循环。
文本中有多少字符,就要进行多少次迭代,count变量的值就是最终的字符个数。
综上,为了实现计算字符个数的功能,需要定义两个变量,count 来表示当前的字符总数,curr来表示当前的字符。
然后,通过迭代的方式,从文本中依次读取字符,更新count变量,最终得到字符个数。
以上是计算字符个数的函数的一般实现方法,其实,在实际开发中,还可以采用更新技术来计算字符个数,比如通过使用栈或者队列等数据结构,来实现数据的快速读取,比如从文本中读取前n个字符,从而节省一定的时间。
此外,在实际的开发中,可以根据实际情况,使用不同的编程语言或者框架,来实现计算字符个数的功能,比如在Java中,可以采用String类的length()方法来获取字符串的长度,也就是字符的个数;在Python中,可以使用内置函数len()来获取字符串的长度;在C++中,可以使用string类的size()方法来获取字符串的长度。
可见,使用不同的语言和框架,可以实现计算字符个数的功能。
总之,计算字符个数的函数是计算机科学和编程领域中的一个重要概念,可以通过迭代的方式实现,也可以通过某些语言和框架中的某些函数实现。
然而,无论采用何种方法,都可以有效的计算字符个数,只要根据实际情况选择合适的方法即可。
java获取字符串中某个字符数量的方法
java获取字符串中某个字符数量的方法Java中获取字符串中某个字符数量的方法有很多种,下面列举了几种常用的方法:1. 使用String的`length(`方法和`charAt(`方法:遍历字符串的每个字符,判断是否等于指定字符,并统计数量。
```javaString str = "Hello World";char target = 'o';int count = 0;for (int i = 0; i < str.length(; i++)if (str.charAt(i) == target)count++;}System.out.println(count); // 输出2```2. 使用String的`replace(`方法和正则表达式:将指定字符替换为空,然后计算替换前后字符串长度的差值。
```javaString str = "Hello World";char target = 'o';int count = (str.length( -str.replace(String.valueOf(target), "").length();System.out.println(count); // 输出2```3. 使用Java8的Stream API:将字符串转为字符流,并使用filter(方法过滤出指定字符,然后使用count(方法统计数量。
```javaString str = "Hello World";char target = 'o';long count = str.chars(.filter(ch -> ch == target).count(;System.out.println(count); // 输出2```4. 使用Java8的Stream API和正则表达式:将字符串转为字符流,使用正则表达式匹配指定字符,然后使用count(方法统计数量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CMP AL, 61H ;与ASCII码中的a,即61h比较
JNB L ;不小于61h的,结合不大于7ah的,则跳转至l,在letter块进行操作
DIGIT DB 0 ;定义存储单元digit
OTHER DB 0 ;定义存储单元other
DATAREA ENDS
CASE SEGMENT
MAIN PROC FAR
JA LORO ;剩下的为字母或者其他类型
LORO:
CMP AL, 41H ;与ASCII码中的A,即41h比较
JB O ;小于41h的,结合大于39h的,则跳转至o,在other块进行操作
MOV DL, 0AH
INT 21H
MOV DL, 4FH
INT 21H
MOV DL, 3AH
CMP AL, 0DH
JE EXIT ;字符串以回车符结束,若进行分类的字符是回车符,则跳转至exit,退出程序
CMP AL, 30H ; ;ASCII码中的0,即30h比较
JMP CHECK ;返回继续比较下一个字符
D:
INC DIGIT ;属于digit类型,则digit增1
INC DI
JMP CHECK
MOV AH, 0AH
INT 21H
LEA DI, STRING + 2 ;输入一行字符,依次将每个字符存入字符串string中
SUB CH,CH
MOV BL, 10
DIV BL
PUSH AX
MOV DL, AL
ADD DL, 30H
MOV AH, 2
MOV AL, DIGIT
CALL DISPLAY
MOV AH, 02
MOV DL, 0DH
INT 21H
MOV DL, 4CH
INT 21H
MOV DL, 3AH
INT 21H
MOV DL, 0
MOV CL, STRING + 1
ADD DX, 2
CHECK: ;将每个字符进行分类
MOV AL, [DI]
INT 21H
MOV DL, 0
INT 21H
XOR AX, AX
MOV AL, OTHER
JB O ;小于61h的,结合大于5ah的,则跳转至o,在other块进行操作
L:
INC LETTER ;属于letter类型,则letter增1
INC DI
MOV AH, 02
MOV DL, 0DH
INT 21H
MOV DL, 0AH
INT 21H
RET
DISPLAY ENDP
CASE ENDS
END START
DATAREA SEGMENT
STRING DB 80
DB ?
DB 80 DUP(?) ;定义字符串string,长度为80
LETTER DB 0 ;定义存储单元letter
JB O ;小于30h的,为其他类型字符,则跳转至o,在other块进行操作
CMP AL, 39H ;与ASCII码中的9,即39h比较
JNA D ;不大于39h的,结合不小于30h的,则跳转至d,在digit块进行操作
MOV DL, 0DH
INT 21H
MOV DL, 0AH
INT 21H
MOV DL, 44H
INT 21H
MOV DL, 3AH
INT 21H
MOV DL, 0
INT 21H
XOR AX, AX
ASSUME CS:CASE, DS:DATAREA
START:
MOV AX, DATAREA
MOV DS, AX
LEA DX, STRING
CALL DISPLAY
MOV AX, 4C00H
INT 21H
MAIN ENDP
DISPLAY PROC NEAR ;子程序display,用于将二进制数转换成十进制数
INT 21H
XOR AX, AX
MOV AL, LETTER
CALL DISPLAY ;调用子程序display,输出
MOV AH, 02
O:
INC OTHER ;属于other类型,则other增1
INC DI
JMP CHECK
EXIT: ;输出letter,digit,other类型的计数结果
INT 21H
POP AX
MOV DL, AH
ADD DL, 30H
MOV AH, 2
INT 21H
CMP AL, 7AH ;与ASCII码中的z,即7ah比较
JA O ;大于7AH的,则条钻至O,在OTHER块进行操作
CMP AL, 5AH ;与ASCII码中的Z,即5ah比较