目录
第一题
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;
}
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
————海子《面朝大海,春暖花开》