编程求10个字符串中最长与次长的两字符串连接起来,组成一个新的字符串平,并输出

亲 再帮忙做一个 我在给你加分
数组包含10个元素,找出第一个最小的元素,然后将它插入到最前面(例如:原来a数组为234516781,程序运行后的a数组为123456781)

是用c语言写还是c++写?追问

c语言 麻烦你了 帮忙写一下 谢谢啦 不要写的太难了 我新手 满意加悬赏

追答#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define  N  10
#define  MAXLEN 30 

const int MINNUMBER = -32767 ;
void find_sec_max( int data[] , int count,int &max_index,int &sec_max_index)
{
int maxnumber = data[0] ;
int sec_max = MINNUMBER ;
for ( int i = 1 ; i < count ; i++)
{
if ( data[i] > maxnumber )
{
sec_max = maxnumber ;
sec_max_index = max_index;
maxnumber = data[i] ;
max_index = i;
}
else
{
if ( data[i] > sec_max )
{
sec_max = data[i] ;
sec_max_index = i;
}
}
}
}
int main()
{
char *str[N],temp[MAXLEN*2];
int len[N],max = 0,sec_max = -1;

printf("input ten string:\n");

for (int i=0;i<N;i++)
{
str[i] = (char*)malloc(sizeof(char)*MAXLEN);
gets(str[i]);
len[i] = strlen(str[i]);
}

find_sec_max(len,N,max,sec_max);

strcpy(temp,str[max]);
strcat(temp,str[sec_max]);

printf("%s\n",temp);

};

输出结果:

追问

额 我直接看不懂 能用简单的方法给写一下吗

追答

具体是哪些地方看不懂?我给你加点注释吧,这个程序做起来代码量还是有点大的

追问

不好意思 我是个新手 基本都看不懂 呜呜 没有简单的方法吗?

追答

好的,我给你做个尽量简单的,在我贴出代码之前,你不用再追问了。另外,看看我给你做的另

一题,满意就先采纳了吧。代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int i,j;
char str[10][30]={0},temp[30],Result[60];

printf("input ten string:\n");

for (i=0;i<10;i++)
gets(str[i]);//输入字符串

for (i=0;i<10;i++)//两个for循环对字符串进行冒泡排序(降序)
for (j=0;j<10-1;j++)
{
if (strcmp(str[j],str[j+1])<0)
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}

strcpy(Result,str[0]);//降序排列,所以str[0]最大,str[0]次大
strcat(Result,str[1]);//次大字符串接在最大字符串后面

printf("%s\n",Result);

};

这个代码很简单了,时间专门为你干活了,输入方法见上面贴出来的那个黑框

别放我鸽子啊亲~

追问

我运行了一下 不对呀 我给你加分

追答

呵呵,不好意思啊,的确有问题,判断条件写错了,我上次测试的时候可能就测了一组条件

正好是对的就没管,代码改了就修改了一个地方:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int i,j;
char str[10][30]={0},temp[30],Result[60];

printf("input ten string:\n");

for (i=0;i<10;i++)
gets(str[i]);//输入字符串

for (i=0;i<10;i++)//两个for循环对字符串进行冒泡排序(降序)
for (j=0;j<10-1;j++)
{
if (strlen(str[j])<strlen(str[j+1]))//这里搞错了
{
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}

strcpy(Result,str[0]);//降序排列,所以str[0]最大,str[0]次大
strcat(Result,str[1]);//次大字符串接在最大字符串后面

printf("%s\n",Result);

};

温馨提示:答案为网友推荐,仅供参考
相似回答