从键盘输入一个字符串 使用指针判断字符串中大写字母 小写字母 数字 的个数并输出

#include<iostream>
#include<string.h>
using namespace std;
void fun(char *p)
{ int i;
int a,b,c;
a=b=c=0;
for(i=0;i<=strlen(p);i++)
{ if(*(p+i)>='A'&&*(p+i)<='Z')
a++;
if(*(p+i)>='a'&&*(p+i)<='z')
b++;
if(*(p+i)>='0'&&*(p+i)<='9')
c++;
// p++;
}
cout<<"该字符串中大写字母有"<<a<<"个"<<"小写字母有"<<b<<"个"<<"数字有"<<c<<"个"<<endl;




}
void main()
{ void fun(char *p);
char a[1000];
cout<<"请输入字符串"<<endl;
fun(gets(a));
}
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是汇编语言实现字符串统计的代码: ```asm section .data str db 'Hello, World! 123',0 len equ $-str section .bss uc resb 1 lc resb 1 num resb 1 section .text global _start _start: mov ecx, len ; 将字符串长度保存到 ecx 寄存器 mov esi, str ; 将字符串地址保存到 esi 寄存器 mov eax, 0 ; 将计数器清零 mov ebx, 0 ; 将计数器清零 mov edx, 0 ; 将计数器清零 loop_start: cmp byte [esi], 0 ; 判断是否到字符串末尾 je end_loop cmp byte [esi], 'A' ; 判断是否为大写字母 jb check_lower cmp byte [esi], 'Z' ja check_lower inc eax ; 大写字母计数器加一 jmp next_char check_lower: cmp byte [esi], 'a' ; 判断是否为小写字母 jb check_number cmp byte [esi], 'z' ja check_number inc ebx ; 小写字母计数器加一 jmp next_char check_number: cmp byte [esi], '0' ; 判断是否为数字 jb next_char cmp byte [esi], '9' ja next_char inc edx ; 数字计数器加一 next_char: inc esi ; 指针指向下一个字符 loop loop_start ; 继续处理下一个字符 end_loop: mov [uc], al ; 保存大写字母计数器的值 mov [lc], bl ; 保存小写字母计数器的值 mov [num], dl ; 保存数字计数器的值 ; 输出结果 mov eax, 4 mov ebx, 1 mov ecx, uc mov edx, 1 int 0x80 mov eax, 4 mov ebx, 1 mov ecx, lc mov edx, 1 int 0x80 mov eax, 4 mov ebx, 1 mov ecx, num mov edx, 1 int 0x80 ; 退出程序 mov eax, 1 xor ebx, ebx int 0x80 ``` 这段代码定义了一个字符串 `str`,并且使用 `ecx` 和 `esi` 寄存器分别保存了字符串长度和地址。然后,使用 `eax`、`ebx`、`edx` 寄存器分别作为大写字母小写字母数字的计数器。 接下来,使用 `loop` 指令和标签 `loop_start` 来循环处理字符串的每个字符。在每次循环使用 `cmp` 指令判断当前字符是否为大写字母小写字母数字,并且根据判断结果分别增加相应的计数器。最后,将计数器的值保存到 `uc`、`lc`、`num` 变量,并且使用 `int 0x80` 指令将结果输出到屏幕上。 最后,使用 `int 0x80` 指令退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值