【ny总结字符串 】

本文介绍了C++中处理字符串的基本操作,包括字符输入输出、字符数组的使用,以及在实际问题中如何替换字符、过滤空格、计算亲朋字符串、转换字母大小写和比较字符串大小。还涉及了isalpha、isalnum、islower、isupper等函数的使用,以及字符串处理的实战案例分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来了解一下ASCLL码表:

这就是字符。

字符类型:

输入输出方法:

· 输入:cin>>a或scanf("%c",&a) 或者a=getchar();

· 输出:cout<<a;或printf("%c",a)或者putchar(a);

只能在赋初值这样写

字符数组

经典习题:

8843:A替换字母

输入两行内容,第1行是原文(长度不超过200个字符),第2行包含以空格

分隔的两个字符A和B,要求将原文中所有的字符A都替换成字符B,

注意:区分大小写字母

cin.getline(s,sizeof(s)); //输入原文
scanf(“%c %c”,&A, &B); // 输入A 和B
for(int i=0; s[i]!='\0’; i++){
if (A==s[i]) s[i]=B; //挨个判断,替换
}
printf("%s",s);

8845:B过滤空格

一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。

句子的头和尾都没有空格

分析:如果有多个空格,只保留一个空格

做法:如果当前字符是空格,如果前一个字符也是空格,则不输出.

for(int i=0; a[i] !='\0’; i++){
if(a[i] ==' ' && a[i-1] ==' ‘) 
continue;
else printf("%c",a[i]);
}

8847:C输出亲朋字符串

求给定字符串s的亲朋字符串s1。

字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲

朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,

得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。

亲朋字符串的最后一个字符由给定字符串s的最后一个字符ASCII值加s的

第一个字符的ASCII值。

分析:根据题意得:

前面的亲朋字符:s1[i] = s[i] + s[i+1] (i<=len-2)

最后一位亲朋字符:s1[i] = s[i] + s[0] (i = len -1)

8850:D将字符串中的小写字母转换成大写字母

H将字符串中的小写字母转换成大写字母。

字符串(长度不超过100,可能包含空格)。

拓展:

isalpha(C):用来字符C是否为字母

isalnum(C):用来字符C是否为数字或者字母,即判断是否属于a~z||A~Z||0~9。

islower(C):用来字符C是否为小写字母,即是否属于a~z。

isupper(C):用来字符C是否为大写字母,即是否属于A~Z。

toupper(C): 如果字符C是小写字母,则转换为对应的大写字母

tolower(C): 如果字符C是大写字母,则转换为对应的小写字母

1037:E【字符串】比较大小

输入两个数a和b,比较这两个数的大小,输出比较的结果;

若a大于b输出“>” ,若a等于b输出“ = ” ,若a小于b,输出“<”输入数字的位数不超过200位

思路:
不能把输入看成一个double类型或者float类型的数,因为这两种类型表示的数据范
围是有限的,200位整数位或者小数位根本无法表示。
因此将输入的两个数当做字符串处理。
1. 将输入的两个数当做字符串处理
2. 字符串比较:strcmp(a,b) 能够按照字典序对字符串进行比较
3. 因为有小数点’.’ 不能直接将两个字符串进行比较
4. 将字符串通过小数点的位置,得到整数部分的长度。
5. 整数部分的长度,越长代表数越大
6. 如果整数部分长度相等,则按照字符串的方式进行比较

5965:Z 754

分析:依次获取三位数字字符,将其分别看做百位,十位,个位数,

再与753进行比较,并记录结果ans(即最小的绝对值)

记录最小:则ans初始化为一个足够大的数: ans = 80000;

35753: abs(357-753) = 396 ; ans = 396;

35753: abs(575-753) = 178 ; ans = 178;

35753: abs(753-753) = 0 ; ans = 0;

for(int i=0;i<len-2;i++){

int x=(a[i]-'0')*100 + (a[i+1]-'0')*10 + (a[i+2]-’0’)*1;

if(abs(753 -x) > ans) ans = abs(753-x);

}

所学总结与反思

BYE~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值