第一题:
string函数的改写,不使用库函数实现string函数族的功能:strlen strcpy strcmp strcat
strlen:
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100];
printf("请输入字符串:\n");
scanf("%s",str);
int i;
for(i=0;str[i]!='\0';i++);
printf("str的有效长度为:%d\n",i);
return 0;
}
strcpy:
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str1[100];
char str2[100];
printf("请输入第一个字符串:\n");
scanf("%s",str1);
printf("请输入第二个字符串:\n");
scanf("%s",str2);
int i;
for(i = 0;str2[i]!='\0';i++)
{
str1[i] = str2[i];
}
str1[i]='\0';
printf("str1=%s\n",str1);
return 0;
}
strcmp:
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str1[100];
char str2[100];
printf("请输入第一个字符串:\n");
scanf("%s",str1);
printf("请输入第二个字符串:\n");
scanf("%s",str2);
int i;
for(i=0;str1[i]==str2[i]&&str1[i]!='\0';i++);
if(str1[i]>str2[i])
{
printf("str1比str2大\n");
}
else if(str1[i]<str2[i])
{
printf("str1比str2小\n");
}
else
{
printf("str1与str2相等\n");
}
return 0;
}
strcat:
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[100];
char str2[100];
printf("请输入第一个字符串:\n");
scanf("%s",str1);
printf("请输入第二个字符串:\n");
scanf("%s",str2);
int len = strlen(str1);
int i;
for(i =0;str2[i]!='\0';i++)
{
str1[len+i] = str2[i];
}
str1[len+i] = '\0';
printf("str1=%s\n",str1);
return 0;
}
第二题:
从终端输入一个字符串,要求删除字符串中的空格字符。提示:可以新建一个辅助数组。
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100];
printf("请输入字符串:\n");
gets(str);
char str1[100]="";
int j = 0;
for(int i =0;str[i]!='\0';i++)
{
if(str[i]!=' ')
{
str1[j] = str[i];
j++;
}
}
int i;
for(i =0;str1[i]!='\0';i++)
{
str[i] = str1[i];
}
str[i] = '\0';
printf("%s\n",str);
return 0;
}
第三题:
从终端获取一个字符串,要求将该字符串倒置存储。不允许使用辅助数组。
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100];
printf("请输入字符串:\n");
scanf("%s",str);
int i;
for(i = 0;str[i]!='\0';i++);
int j;
for(j = 0,i=i-1;j<i;j++,i--)
{
str[i] = str[i]+str[j];
str[j] = str[i]-str[j];
str[i] = str[i]-str[j];
}
printf("%s",str);
return 0;
}
第四题:
从终端获取一个字符串,判断该字符串中小写字母分别有几个。aabbbcc ->a有2个b有3个 c有2个
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100];
char str1[26]={0};
printf("请输入字符串:\n");
gets(str);
int i;
for(i = 0;str[i]!='\0';i++);
for(int j = 0;j<i;j++)
{
if(str[j]>='a'&&str[j]<='z')
{
str1[str[j]-'a']+=1;
}
}
for(int j = 0;j<sizeof(str1);j++)
{
if(str1[j]>0)
{
printf("%c有%d个\n",j+'a',str1[j]);
}
}
return 0;
}
第五题:
从终端输入一 个字符串,要求删除字符串中的空格字符,请在原字符串上操作,不允许使用辅助数组。
#include <stdio.h>
int main(int argc, const char *argv[])
{
char str[100];
printf("请输入字符串:\n");
gets(str);
for(int i =0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
for(int j =i;str[j]!='\0';j++)
{
str[j] = str[j+1];
}
}
}
printf("str=%s\n",str);
return 0;
}