C语言笔试练习(一)

xiaoxiao2021-02-28  137

1、编写一个方法,将字符的空格全部替换为 。假设该字符的尾部有足够的空间存放新增字符,并且知道字符串的真实长度。 输入:“Mr John Smith” 输出:“Mr John Smith”

#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," "); 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; }
转载请注明原文地址: https://www.6miu.com/read-35212.html

最新回复(0)