第六章作业(1. 统计整数个数 2.字符串排序 3 .插入字符串)

目录

第一题

1.1题目描述

1.2 源代码

第二题

2.1题目描述

2.2源代码

第三题

3.1题目描述

3.2源代码


第一题

1.1题目描述

【问题描述】输入一个字符串,其包括数字和非数字字符,如:a123x456 17935? 098tab,将其中连续的数字作为一个整数,依次存放到数组a中,统计共有多少个整数,并输出这些数。

【输入形式】数字和非数字字符的字符串

【输出形式】多行,第一行输出整数个数,后面每行输出一个整数

【样例输入】a123x456 17935? 098tab583

  注意需要保留带有空格的字符串,请不要使用gets,cin,练习使用cin.getline(char *str, int maxnum)

【样例输出】

  5

  123

  456

  17935

  98

  583

【样例说明】第一个输出项为整数的个数,后面的分别为具体的整数。注意,不需要输出提示类文字,如:“整数为”,“分别为”等字样。直接输出结果。有一个数字的也要输出。测试用例中没有超过整数范围连续数字。当遇到0开头的数字应舍去0。

1.2 源代码

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	char a[1000];
	char *p=a;
	int num=0;
	cin.getline(a,1000);
	if(*p>='0'&&*p<='9')
	{
		num++;
	}
	for(;*p!='\0';p++)
	{
		if((*p<'0'||*p>'9')&&(*(p+1)>='0'&&*(p+1)<='9'))
		{
			num++;
		}
	}
	cout<<num<<endl;
	p=a;
	for(;*p!='\0';p++)
	{
		if(*p<'0'||*p>'9')
		{
			continue;
		}
		if((*(p-1)<'0'||*(p-1)>'9')&&*p=='0')
		{
			continue;
		}
		if(*p>='0'&&*p<='9')
		{
			cout<<*p;
		}
		if((*p>='0'&&*p<='9')&&(*(p+1)<'0'||*(p+1)>'9'))
		{
			cout<<endl;
		}
	}
	return 0;
}

第二题

2.1题目描述

【问题描述】有5个字符串,首先将它们按照字符串中字符个数由小到大排序,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。

【输入形式】5个字符串,用回车分隔

【输出形式】输出一个字符串:按5个字符串中字符个数由小到大排序,再分别取出每个字符串的第三个字母合并成一个新的字符串输出,若少于三个字符的输出一个空格

【样例输入】

  test1234

  123test

  cumt

  think

  apples

【样例输出】

  cumt think apples 123test test1234

  concatenate string:mip3s

【样例说明】输出的第一行中,每个字符串后面有一个空格。字符数量相等的串相对顺序不变。

2.2源代码

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	char *s[5];
	for(int i=0;i<5;i++)
	{
		s[i]=new char[100];
		cin>>s[i];
	}
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4-i;j++)
		{
			if(strlen(s[j])>strlen(s[j+1]))
			{
				char *tmp=s[j+1];
				s[j+1]=s[j];
				s[j]=tmp;
			}
		}
	}
	for(int i=0;i<5;i++)
	{
		cout<<s[i]<<" ";
	}
	cout<<endl<<"concatenate string:";
	for(int i=0;i<5;i++)
	{
		if(strlen(s[i])<3)
		{
			cout<<" ";
		}
		else
		{
			cout<<s[i][2];
		}
	}
	return 0;
}

第三题

3.1题目描述

【问题描述】从键盘输入一个字符串,并在串中的第一次出现的最大元素后边插入字符串”ab”。

【输入形式】任意输入一个字符串

【输出形式】在串中的最大元素后边插入字符串”ab”

【样例输入】123csCUMT

【样例输出】123csabCUMT

【样例说明】为了保证输入的字符串有空格,请使用cin.getline(char* , int); 本系统不支持使用gets。只插入一次ab。

3.2源代码

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	char a[1000];
	int k=0;
	char max=0;
	cin.getline(a , 1000);
	for(int i=0;i<strlen(a);i++)
	{
		if(a[i]>max)
		{
			max=a[i];
			k=i;
		}
		else continue;
	}
	for(int i=0;i<=k;i++)
	{
		cout<<a[i];
	}
	cout<<"ab";
	for(int i=k+1;i<strlen(a);i++)
	{
		cout<<a[i];
	}
	return 0;
}


愿你有一个灿烂的前程

愿你有情人终成眷属

愿你在尘世获得幸福

我只愿面朝大海,春暖花开

                                                                                              ————海子《面朝大海,春暖花开》

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值