C++ 编程题 ,能不能尽快啊,非常感谢!

第一题:编程要求1)编写函数intfind(char*a,char*b),函数被调用时,a指向的数组中已存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的功能... 第一题: 编程要求
1) 编写函数int find(char *a , char *b),函数被调用时,a指向的数组中已存储一个字符串,该字符串是一个包含了多个单词的英语句子。函数的功能找出字符数组a中字符串中最长的单词并存入b所指向的数组中,函数返回最长单词在字符串的起迭位置下标。
2) 编写main函数,接受键盘输入的一个英文句子。调用find函数找到该句子中最长的单词,将最长单词及其在字符串中的起始位置下标输出到屏幕。
第二题: 重新排列一维数组元素的顺序,使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。
【测试数据与运行结果】
数组原始数据为:17 15 10 14 16 17 19 18 13 12
输出结果:18 16 14 12 10 13 15 17 17 19
要求:
1) 编写函数void resort(int *x, int n),使得左边的所有元素均为偶数并按由大到小的次序存放,右边的所有元素均为奇数并按由小到大的次序存放。(可根据编程需要增加函数)
2) 编写main函数,接受键盘输入数据,调用resort函数完成上述功能,并输出结果。

谢谢大哥啊!
展开
 我来答
terranlong
推荐于2016-03-05 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3967万
展开全部
第一题:
#include <iostream>
#include <string.h>
using namespace std;

int find(char *a , char *b)
{
int len = 0;
int maxlen = 0;
char* p = a;
char* q = a;
while (*p)
{
if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))
{
len++;
}
else if (len > maxlen)
{
q = p - len;
maxlen = len;
len = 0;
}
else
{
len = 0;
}
p++;
}
if (len > maxlen)
{
q = p - len;
maxlen = len;
}
q[maxlen] = '\0';
strcpy(b, q);
return maxlen;
}
int main()
{
char a[100], b[20];
int len;
gets(a);
len = find(a, b);
printf("%s\n", b);
printf("len = %d\n", len);
return 0;
}

第二题:
#include <iostream>
using namespace std;
void sort(int *a, int n, int m)
{
int i, j, temp, pos;
if (m == 0)
{
for (i = 0; i < n; i++)
{
temp = a[i];
pos = i;
for (j = i + 1; j < n; j++)
{
if (temp > a[j])
{
temp = a[j];
pos = j;
}
}
a[pos] = a[i];
a[i] = temp;
}
}
else
{
for (i = 0; i < n; i++)
{
temp = a[i];
pos = i;
for (j = i + 1; j < n; j++)
{
if (temp < a[j])
{
temp = a[j];
pos = j;
}
}
a[pos] = a[i];
a[i] = temp;
}
}
}

void resort(int *x, int n)
{
int head = 0;
int tail = n - 1;
int temp;
while (head <= tail)
{
while (x[head] % 2 == 0)
{
head++;
}
while (x[tail] % 2 == 1)
{
tail--;
}
if (head <= tail)
{
temp = x[head];
x[head] = x[tail];
x[tail] = temp;
}
}
sort(x, head, 1);
sort(x + head, n - head, 0);
}

int main()
{
int i, a[] = {17, 15, 10, 14, 16, 17, 19, 18, 13, 12};
resort(a, 10);
for (i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
return 0;
}
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Generalringo
2012-03-18 · 超过22用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:30.8万
展开全部
第一题:
#include<stdio.h>
#include<stdlib.h>
int find(char* a,char* b);
int main(int argc,char** argv)
{
int n;
char *a = (char*)malloc(sizeof(char)*1000);
char *b = (char*)malloc(sizeof(char)*40);
gets(a);
n = find(a,b);
printf("%d %s\n",n,b);
}
int find(char* a,char* b)
{
int max=0,t=0,i,j=0,k=0;
char* p,*s;
p =a;
s =b;
while(*a!='\0')
{
j++;
while(*a!=' '&&*a>'A'&&*a<'z')
{
t++;
a++;
j++;
}
if(t>max)
{
max=t;
k=j-t;
t=0;
for(i=0;i<max;i++)
{
*b=*p;
b++;
p++;
}
*b='\0';
b=s;
}
a++;
p=a;
t=0;
}
return k;
}
第二题:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-18
展开全部
第一题思路:从头开始遍历,设置一个计数和一个字符串,遇到空格或者换行或制表符时检查比较,如果比之前存储的字符串长更新,直至遍历完整个字符串。效率先不考虑。
第二题比较麻烦啊就。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天亮中
2012-03-18 · TA获得超过6755个赞
知道小有建树答主
回答量:1404
采纳率:66%
帮助的人:672万
展开全部
不知道哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式