c++作业第六章

1.

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

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

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

【样例输入】a123x456 17935? 098tab583

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

【样例输出】

  5

  123

  456

  17935

  98

  583

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

#include <iostream>
using namespace std;
#include <string>
int  main(){
	int count =0;
	int t = 0;
	char s[100];
	char p[100];
	cin.getline(s,100);
	int i = 0;
	while(s[i]!='\0'){
		if(s[i]>='0'&&s[i]<='9'){
			p[t] = s[i];
			t++;
		}
		else{
			p[t] = 'p';
			t++; 
		}
		i++;
	}
	p[t] = 'p';
	p[t+1] = '\0';
	int j = 0;
	while(p[j]!='\0'){
		if(p[j]>='0'&&p[j]<='9'&&p[j+1] == 'p'){
			count++;
		}
		j++;
	}
	j = 0;
	cout<<count<<endl;
	while(p[j]!='\0'){
		if(p[j]>'0'&&p[j]<='9')
		cout<<p[j];
		if(p[j]>='0'&&p[j]<='9'&&p[j+1] == 'p')
		cout<<endl;
		j++;
	}
	return 0;
}

2.

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

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

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

【样例输入】

  test1234

  123test

  cumt

  think

  apples

【样例输出】

  cumt think apples 123test test1234

  concatenate string:mip3s

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

#include<iostream>

#include<string.h>

using namespace std;

int main()

{

char str[5][50];

char *pstr[5],*ptemp;

int len[5],temp;

int i,j;

for(i=0;i<5;i++)

pstr[i]=str[i];

for(i=0;i<5;i++)

cin>>pstr[i];

for(i=0;i<5;i++)

len[i]=strlen(pstr[i]);

for(i=0;i<4;i++)

for(j=0;j<4-i;j++)

if(len[j]>len[j+1])

{

temp=len[j];

len[j]=len[j+1];

len[j+1]=temp;

ptemp=pstr[j];

pstr[j]=pstr[j+1];

pstr[j+1]=ptemp;

}

for(i=0;i<5;i++)

cout<<pstr[i]<<" ";

cout<<endl;

cout<<"concatenate string:";

for(i=0;i<5;i++)

if(*(pstr[i]+2)) cout<<*(pstr[i]+2);

else cout<<' ';

cout<<endl;

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值