字符和字符串操作

实例:统计各种字符个数

输入一组字符,要求分别统计出其中英文、数字、空格以及其他字符的个数。

代码:

#include<stdio.h>
int main()
{
char a;
int letter=0,number=0,space=0,other=0;
while((a=getchar())!='\n')
{
if(a>='a'&&a<='z' || a>='A'&&a<='Z')
letter++;
else if(a>='0'&&a<='9')
number++;
else if(a==' ')
space++;
else
other++;
}
printf("%d %d %d %d",letter,number,space,other);
return 0;


实例:字符串倒置

输入字符串,要求将该字符串倒置输出。

代码:

//倒置输出,没有更改原字符串

#include<stdio.h>
#include<string.h>
int main()
{
void reput(char a[],int str1,int str2);
char a[100];
gets(a);
int str = strlen(a);
reput(a,str,str);
return 0;
}


void reput(char a[],int str1,int str2)
{
if(str1>0)
{
reput(a,str1-1,str2);
printf("%c",a[str2-str1]);
}
}


实例:字符串替换

编程实现字符串替换,先输入一字符串,然后再输入要替换成什么内容,从第几个字符开始替换。

代码:

#include<stdio.h>
#include<string.h>
int main()
{
char* replace(char str[],char str2[],int n);
printf("输入字符串:");
char str[100];
gets(str);
printf("输入要替换成什么内容:");
char str2[100];
gets(str2);
printf("要从第几个字符开始替换?:");
int n;
scanf("%d",&n);
printf("%s",replace(str,str2,n));
return 0;
}


char* replace(char str[],char str2[],int n)
{
int i,j,strl2=strlen(str2);
for (i=n-1,j=0;j<strl2;i++,j++)
{
str[i] = str2[j];
}
return str;
}


实例:回文字符串

正读反读都一样的字符串,要求从键盘输入字符串,判断该字符串是否是回文字符串。

代码:

#include<stdio.h>
#include<string.h> 
int main()
{
int paline(char str[],int len);
char str1[100];
gets(str1);
int len=strlen(str1);
if(paline(str1,len)==1)
printf("是回文字符串");
else
printf("不是回文字符串");
return 0;



int paline(char str[],int len)
{
int i;
for(i=0;i<len/2;i++)
{
if(str[i]!=str[len-i-1])
{
return 0;
}
}
return 1;
}


实例:不用strcat连接两个字符串

连接两个字符串,要求不使用strcat函数。

代码:

#include<stdio.h>
#include<string.h>
int main()
{
char str1[100],str2[100];
scanf("%s",str1);
scanf("%s",str2);
int len1=strlen(str1);
int len2=strlen(str2);
int i;
for(i=0;i<len2;i++)
{
str1[len1+i]=str2[i];
}
str1[len1+len2]='\0';
printf("%s",str1);
return 0;
}


实例:删除字符串中连续字符

输入一个字符串,输入要求删除的位置及长度,输出进行完删除操作的字符串。

代码:

#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
gets(str);
int n,m,len=strlen(str);
scanf("%d %d",&n,&m);
int i,j=n-1;
for(i=n+m-1;i<len;i++)
str[j++]=str[i];
str[len-m]='\0';
printf("%s",str);
return 0;
}


实例:字符升序排列

将已按升序排好的字符串a和字符串b按升序归并到字符串c中并输出。

代码:

#include<stdio.h>
#include<string.h>
int main()
{
char str1[100],str2[100],str3[200],*p;
gets(str1);
gets(str2);
int i=0,j=0,k=0;
while(str1[i]!='\0'&&str2[j]!='\0')
{
if(str1[i]<str2[j])
str3[k++]=str1[i++];
else
str3[k++]=str2[j++];
}
str3[k]='\0';
if(str1[i]=='\0')
p=str2+j;
else
p=str1+i;
strcat(str3,p);
puts(str3);
return 0;
}


实例:在指定的位置后插入字符串

用户先输入两个字符串str1和str2,再输入数值来确定将字符串2插在字符串1的第几个字符后面,最后将插入后的字符串输出。

代码:

#include<stdio.h>
#include<string.h>
int main()
{
char str1[100],str2[100],str3[100];
gets(str1);
gets(str2);
int len1=strlen(str1),len2=strlen(str2);
int position;
scanf("%d",&position);
strncpy(str3,str1,position);
str3[position]='\0';
strcat(str3,str2);
strcat(str3,(str1+position));
strcpy(str1,str3);
puts(str1);
return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值