字符及字符串类型编程学习(2)

本文探讨了两种编程方法,用于处理字母字符的操作。一种是通过指针遍历字符数组,另一种则是利用ASCII码直接进行字符计算。通过实例展示了如何读取指定范围内的字符,并输出其周围字符,以及如何逆序输出指定字母后的所有小写字母。

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

问题一 : 写一个程序,读一个在字母C和X之间的字符,打印出该字母在中间的五个字母。
首次编程代码如下:(方法一)
指针方法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char a[100]=“ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
char *p=a;
int i;
char z;

printf(“请输入一个大写字符(C到X之间):”);
scanf("%c",&z);

char q,w,e,r;
for(i=0;i<strlen(a);i++){
if( *(p+i)==z){
q= *(p+i-1);
w= *( p+i-2);
e= *(p+i+1);
r= *(p+i+2);
}
}
printf(“输出相邻的字母构成的字符串: %c%c%c%c%c”,w,q,z,e,r);

return 0;
}
代码运行结果如上
总感觉代码比较冗余,寻求更简便方法。
无指针方法代码如下:(方法二)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
int i;
char z;
printf(“请输入一个大写字符(C到X之间):”);
scanf("%c",&z);
if((z<‘C’)||(z>‘X’)){
printf(“输入有误;\n”);
} else{
printf(“输出相邻的字母构成的字符串: “);
for(i=0;i<5;i++){
char s;
s=z-2+i;
printf(”%c”,s);
}
}
return 0;
}
运行结果如上
体会:还不能够把传统的字母等各种符号与ASCII码合理转化。字符之间可以任意的进行加减切换。
问题二:编程输入一个小写字母,以该字母为第一个字母按字母表逆序输出所有的小写字母。
方法一:(指针方法)

int main(int argc, char *argv[]) {
char n;
char q[]=“abcdefghijklmnopqrstuvwxyz” ;
printf(“请输入一个小写字母:”);
scanf("%c",&n);
int m=n-‘a’;
char *a;
char *b;

a=&q[m];
b=&q[25];
for(;*a>=‘a’;a–){
printf("%c",*a);
}
for(;*b>q[m];b–){
printf("%c",*b);
}
return 0;
}
运行结果如上

方法二:(无指针)
int main(int argc, char *argv[]) {
char n;
char a;
printf(“请输入一个小写字母:”);
scanf("%c",&n);
for(a=n;a>=97;a–){
printf("%c",a);
}
for(a=‘z’;a>n;a–){
printf("%c",a);
}
return 0;
}
运行结果如上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值