1、字符串转为数组,数组转为字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
//1、组转字符串
int arr[7]={1,2,3,4,5,6,7};
char str[5];
char str1[10];
for(int i=0;i<7;i++){
sprintf(str,"%d",arr[i]);//将每一个数字转换成字符或者字符串
strcat(str1,str);//strcat将str拼接到str1中,把字符或者字符串拼接起来
}
printf("%s\n",str1);
//2、利用ASCII方式进行转换
int arr1[7]={1,2,3,4,5,6,7};
int j;
char str2[10];
for( j=0;j<7;j++){
str2[j]=arr1[j]+'0';
}
str2[j] = '\0'; //不可省略,因为字符串要以'\0'才表示结束,否则剩余的空格都会被输出
printf("%s\n",str2);
//3、字符串转数组
int arr2[10];
char str3[ ]="123456";
for(int y=0;y<strlen(str3);y++){
arr2[y]=str3[y]-'0';
printf("%d",arr2[y]);
}
return 0;
}
2、变形词
对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str1[100];
char str2[100];
int arr[255]={0};
gets(str1);
gets(str2);
int l1,l2;
l1=strlen(str1);
l2=strlen(str2);
if(l1!=l2){
printf("不是变形词");
}
else{
for(int i=0;i<l1;i++){
arr[str1[i]]++;//字符串中的字符可以直接转换成下标
arr[str2[i]]--;
}
}
for(int i=0;i<256;i++){
if(arr[i]!=0){
printf("不是变形词");
break;
}
if(i==255)
printf("是变形词");
}
return 0;
}
3、单词翻转
从键盘输入一个字符串,包含很多个单词。每个单词之间以1个或多个空格隔开。要求翻转每个单词,但是单词在句子中的顺序不变。注意行前和行后可能有多个空格。
输入样例:输入一个字符串(总长度不超过1000),里面包含n(n<50)个单词,每个单词不超过20个字母;且保证输入的字符只含英文字母和空格。
I ma a tneduts
olleH dlroW
输出样例:输出翻转后的字符串。每个单词之后输出一个空格,不能有多余的空客;且行末必须、只能有一个空格。
Hello World
I am a student
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[100];
int i,l;
int count=1;
gets(str);
l=strlen(str);
for(i=0;i<l;){
if((i==0&&str[0]!=' ')||(str[i]==' '&&str[i+1]!=' ')){//判断一个单词的开始
for(int j=i+1;;j++){
if(str[j+1]!=' '&&(j!=l)){
count++;//获取这个单词的长度
}
else{
break;
}
}
for(int z=i+count;z>i;z--){
printf("%c",str[z]);
}
printf(" ");//每个单词后面输出一个空格
i=i+count+1;
count=1;
}
else{
i++;
}
}
return 0;
}
4、替换空格
/*
请编写一个方法,将字符串中的空格全部替换为“%20”。
假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),
同时保证字符串由大小写的英文字母组成。
给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。
测试样例:
"Mr John Smith”,13
返回:"Mr%20John%20Smith"
*/
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[1000];
gets(str);
int l;
l=strlen(str);
int ll=l;
for(int i=0;i<l;i++){
if(str[i]==' '){
for(int j=l+2;j>i+2;j--){
str[j]=str[j-2];
}
str[i]='%';
str[i+1]='2';
str[i+2]='0';
l=l+2;
}
}
puts(str);
return 0;
}