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;
}