笔试题小练1

来源:互联网 发布:手机视频壁纸软件 编辑:程序博客网 时间:2024/06/02 20:34
1、
/***题目:编写一个方法,将字符的空格全部替换为%20。假设该字符的尾部有足够的空间存放新增字符,并且知道字符串的真实长度。输入:“Mr John Smith”输出:“Mr%20John%20Smith”***/#include <iostream>#include <string>using namespace std;int main(){string str;cout<<"please input string:";getline(cin,str);for(int i = 0;i < str.length();i++){if(str[i] == ' '){str.insert(i,"%20");i = i+3;}}for(int j = 0; j < str.length();j++){if(str[j] == ' '){str.erase(j,1);}}cout<<str<<endl;return 0;}
2、
/********利用字符重新出现的次数,编写一个方法,实现基本的字符串压缩功能,比如:字符串aabbbccccaaa会变成a2b3c4a3若压缩后的字符没有变短,则返回原来的字符串*********/#include <stdio.h>#include <string.h>void reser(char *result,char *str){int i = 0;int j = 0;int count = 0;int len = strlen(str);*result = str[i];while(i < len){while(*result == str[i]){count++;i++;}if(*result != str[i]){result++;*result = count+'0';count = 0;result++;*result = str[i];}}*result = '\0';}int main(){char str[30] = {0};char result[30] = {0};printf("请输入一个字符串:");scanf("%s",str);reser(result,str);if(strlen(result) >= strlen(str)){printf("%s\n",str);}else{printf("%s\n",result);}return 0;}
3、
/*给定连个字符串,请编写程序确定其中一个字符串的字符重新排序后,能否变成另一个字符串*/#include <stdio.h>#include <string.h>int judge_string(char *str1,char *str2){int flag = 0;int count = 0;int len = strlen(str1);int i,j;char temp = 0;int k = 0;if(strlen(str1) != strlen(str2)){flag = -1;return flag;}j = 0;for(i = j;str1[i] != '\0';i++){if(str1[i] == str2[k]){temp = str1[k];str1[k] = str1[i];str1[i] = temp;k++;j++;}}if(strcmp(str1,str2) == 0){flag = 1;}return flag;}int main(){char str1[20] = {'a','c','b','a'};char str2[20] = {'c','a','b','a'};int flag = 0;flag = judge_string(str1,str2);if(flag == 1){printf("Yes!\n");}else{printf("No!\n");}return 0;}

原创粉丝点击