《算法笔记》3.6 codeup编号:100000580

  • Problem A
问题

字符串连接

描述 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输入 每一行包括两个字符串,长度不超过100。
输出 可能有多组测试数据,对于每组数据,
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输出连接后的字符串。

#include//此处我觉得只要连续输入两个字符串就能AC结果证明确实如此 

int main(){
	char str1[211],str2[101];
	while(scanf("%s%s",str1,str2)!=EOF){
		printf("%s%s\n",str1,str2);
	}
	return 0;
} 
  • Problem B
问题

 首字母大写

描述 对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。
输入 输入一行:待处理的字符串(长度小于100)。
输出 可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。

#include
#include
using namespace std;

int main()
{
	char a[100];
	while(cin.getline(a,102))
	{
		int i=0;
		if(a[i]>='a'&&a[i]<='z')
		{
			a[i]=a[i]-32;
		}
		for(i=1;a[i]!='\0';i++)
		{
			if(a[i]==' '||a[i]=='\t'||a[i]=='\r')
			{
				if(a[i+1]>='a'&&a[i+1]<='z')
				{
					a[i+1]=a[i+1]-32;
				}
			}
		}
		printf("%s\n",a);
	}
	return 0;
}
  • Problem C
问题 字符串的查找删除
描述 给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入 输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出 删除输入的短字符串(不区分大小写)并去掉空格,输出。

#include//使用C编译 
#include
#include

int main(){
	char ch[100],str[500];
	scanf("%s",ch);
	getchar();
	int len=strlen(ch);
	while(gets(str)){
		int len1=strlen(str);
		int i,k,j;
		for(i=0;i
  • Problem D
问题 单词替换
描述 输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入

多组数据。每组数据输入包括3行,

第1行是包含多个单词的字符串 s,

第2行是待替换的单词a,(长度<=100)

第3行是a将被替换的单词b。(长度<=100)

s, a, b 最前面和最后面都没有空格。

输出

每个测试数据输出只有 1 行,

将s中所有单词a替换成b之后的字符串。

#include
#include
int main()
{

   char  s[1001];
   while(gets(s)!=NULL)
   {
       char a[1001], b[1001];
       char ans[1001][1001],r=0,h=0;//r为行, h为列
       for(int i=0;i<=strlen(s); i++)
       {

           if(s[i]!=' ')
               ans[r][h++] = s[i];
           if(s[i]==' '||i==strlen(s))
           {
               ans[r][h]='\0';
               r++;
             //  printf("r = %d,  %s\n",r, ans[r-1]);
               h=0;
           }
       }

       gets(a);
       gets(b);
       for(int i=0; i
  • Problem E
问题 字符串去特定字符
描述 输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。
输入 测试数据有多组,每组输入字符串s和字符c。
输出 对于每组输入,输出去除c字符后的结果。

#include
#include
int main(){
	char q[10000];
	while(gets(q)){
		char c;
		scanf("%c",&c);
		int len=strlen(q);
		for(int i=0;i
  • Problem F
问题

数组逆置

描述 输入一个字符串,长度小于等于200,然后将数组逆置输出。
输入 测试数据有多组,每组输入一个字符串。
输出 对于每组输入,请输出逆置后的结果。

#include
#include

int main(){
	char ch[201];
	while(gets(ch)){
		int len=strlen(ch);
		for(int i=len-1;i>=0;i--){
			printf("%c",ch[i]);
		}
		printf("\n");
	}
	return 0;
}
  • Problem G
问题

比较字符串

描述 输入两个字符串,比较两字符串的长度大小关系。
输入 输入第一行表示测试用例的个数m,接下来m行每行两个字符串A和B,字符串长度不超过50。
输出 输出m行。若两字符串长度相等则输出A is equal long to B;若A比B长,则输出A is longer than B;否则输出A is shorter than B。

#include
#include

int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		char A[51],B[51];
		scanf("%s%s",A,B);
		int lenA=strlen(A);
		int lenB=strlen(B);
		if(lenA==lenB)printf("%s is equal long to %s\n",A,B);
		else if(lenA>lenB)printf("%s is longer than %s\n",A,B);
		else if(lenA
  • Problem H
问题

编排字符串

描述

请输入字符串,最多输入4 个字符串,要求后输入的字符串排在前面,例如

输入:EricZ

输出:1=EricZ

输入:David

输出:1=David 2=EricZ

输入:Peter

输出:1=Peter 2=David 3=EricZ

输入:Alan

输出:1=Alan 2=Peter 3=David 4=EricZ

输入:Jane

输出:1=Jane 2=Alan 3=Peter 4=David

输入 第一行为字符串个数m,接下来m行每行一个字符床,m不超过100,每个字符床长度不超过20。
输出 输出m行,每行按照样例格式输出,注意用一个空格隔开。

#include
 
int main(){
	char m[101][21];
	int i=0;
	int num;
	scanf("%d",&num);
	getchar();
	while(num--){
		scanf("%s",m[i]);
		getchar();
		i++;
			if(i>=4){
				for(int t=0;t<4;t++){
					printf("%d=%s",t+1,m[i-t-1]);			
					if(t!=3)printf(" ");
					else printf("\n");
				}
			}
			else{
				for(int t=0;t
  • Problem I
问题 【字符串】回文串
描述 读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
输入 一行字符串,长度不超过255。
输出 如果是回文串,输出“YES”,否则输出“NO”。

结果:注意区分C和C++的编译器,现在oj上已经不支持c++_使用gets了,要使用getline才能读取一行包括空格《算法笔记》3.6 codeup编号:100000580_第1张图片

 

你可能感兴趣的:(算法学习,算法,数据结构)