//获取空格,数字,大小写英文字母及其他
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100];
printf("输入字符串>>>");
gets(str);
int a=0,b=0,c=0,d=0,e=0;
for(int i=0;i<strlen(str);i++)
{
if(str[i]>='a' && str[i]<='z')
{
a++;
}
else if(str[i]>='A' && str[i]<='Z')
{
b++;
}
else if(str[i]>='0' && str[i]<='9')
{
c++;
}
else if(str[i] == ' ')
{
d++;
}
else
{
e++;
}
}
printf("小写字母数为%d\n大写字母数为%d\n数字数为%d\n空格数为%d\n其他%d\n",a,b,c,d,e);
return 0;
}
//使用辅助数组倒置字符串
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("输入字符串>>>");
char str[100]="";
gets(str);
//辅助数组
char bu[100]="";
int i=0,j=0,k=0;
//计算str的有效长度,下标='\0'的时候停止运算
for(i=0;str[i] != '\0';i++);
for(k=0,j=i-1; k<i ;i++,j--)
{
bu[k]=str[j];
}
bu[i]='\0';
printf("bu=%s\n",bu);
return 0;
}
//不使用辅助字符串数组倒置,使用三杯水交换
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
printf("输入字符串>>>");
char str[100];
gets(str);
char temp;
int i=0,j=strlen(str)-1;
for(i=0;i<strlen(str)/2;i++)
{
temp=str[i];
str[i]=str[strlen(str)-1-i];
str[strlen(str)-1-i]=temp;
}
printf("倒置后的字符串为>>>%s\n",str);
for(;i<j;i++,j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
printf("倒置后的字符串为>>>%s\n",str);
return 0;
}
//使用辅助数组删除空格
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
printf("输入字符串str>>>");
char str[100]="";
gets(str);
char buf[100]="";
int i,j;
for(i=0,j=0;str[i]!= '\0';i++)
{
if(str[i] != ' ')
{
buf[j]=str[i];
j++;
}
}
buf[j]='\0';
printf("删除空格后的字符串为>>>%s\n",buf);
return 0;
}
//不使用辅助数组删除空格
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
printf("输入字符串>>>");
char str[100];
gets(str);
int i=0,j=0;
for(i=0,j=0;str[i] != '\0';i++)
{
if(str[i] != ' ')
{
str[j]=str[i];
j++;
}
}
str[j]='\0';
printf("删除空格后的字符串为>>>%s\n",str);
return 0;
}
//实现字符串的拼接
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100]="bsudf";
char buf[50]="bsudga";
int i=0;
for(i=0;str[i] != '\0' ;i++);
for(int j=0; ;i++,j++)
{
str[i]=buf[j];
if('\0' == buf[j])
break;
}
printf("&s\n",str);
for(int j=0; buf[j] != '\0';i++,j++)
{
str[i]=buf[j];
}
str[i]='\0';
printf("&s\n",str);
return 0;
}
//不使用strlen函数,实现计算有效长度功能
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[20]="";
printf("输入字符串>>>");
gets(str);
int i=0;
//1
for(i=0;str[i] != '\0';i++);
//2
i=0;
while(str[i] != '\0')
{
i++;
}
//3
i=0;
while(str[i++] != '\0');
//i++先返回值,再自增,i表示'\0'后面一个位置,所以-1
i--;
printf("%d\n",i);
return 0;
}
//不使用strcmp函数,实现比较功能
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100]="";
char buf[150]="";
int i=0;
int res;
for(i=0; ;i++)
{
res=str[i]-buf[i];
if(res != 0)
{
break;
}
else if(buf[i] == '\0')
{
break;
}
}
printf("res=%d\n",res);
for(i=0;str[i] == buf[i] && buf[i] != '\0';i++);
printf("res=%d\n",str[i]-buf[i]);
return 0;
}
//实现拷贝功能
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100]="";
printf("输入字符串str>>>");
gets(str);
char buf[100]="";
printf("输入字符串buf>>>");
gets(buf);
int i=0;
for(i=0; ;i++)
{
str[i]=buf[i];
if(buf[i] == '\0')
break;
}
printf("%s\n",str);
for(i=0;buf[i] != '\0';i++)
{
str[i]=buf[i];
}
str[i]= '\0';
printf("%s\n",str);
i=0;
while(buf[i] != '\0')
{
str[i] = buf[i];
i++;
}
str[i]= '\0';
printf("%s\n",str);
return 0;
}