C语言编程实现

任意输入一个字符串,将其中最大字符存放在该字符串的第一个位置,最小字符存放在倒数第一个字符位置,根据ASCLL编码比较大小

//你只需要把下面的第二个字符的位置变成最后一个就行了。

//输入一个字符串,将其中最大的和第一个字符交换,最小字符与第2个字符交换。
#include<iostream>
using namespace std;
void max(char[]);
void min(char[]);
void exchange(char[]);
int b,s;
int main()
{
     char str[100]=" ";
     cout<<"please input a string:";
     cin>>str;
     if(strlen(str)<2)
        {
          cout<<"input error!"<<endl;;
          return 0;
        }
     cout<<str<<endl;
     exchange(str);
     cout<<str<<endl;
}


void max(char a[])
{
   char max=a[0];
   int n=0;
   while(a[n]!='\0')
     {
       if(a[n]>max)
         {
          max=a[n];
          b=n;
         }
       n++;
     }
}


void min(char a[])
{
   char min=a[0];
   int n=0;
   while(a[n]!='\0')
     {
       if(a[n]<min)
         {
          min=a[n];
          s=n;
         }
       n++;
     }
}

void exchange(char a[])
{    max(a);
     char temp;
     temp=a[b];
     a[b]=a[0];
     a[0]=temp;
     min(a);
     a[0]=temp;
     temp=a[s];
     a[s]=a[1];
     a[1]=temp;
}

追问

可输入 asdzxc 结果是为 zadsxc

追答

welcome

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-03
#include <stdio.h>
int main()
{
char str[1000],t;
int i,maxi,mini;
printf("input string: " );
gets(str);
maxi=mini=0;
for( i=0;str[i];i++ )
{
if( str[i] > str[maxi] )
maxi=i;
if ( str[i] < str[mini] )
mini=i;
}
t=str[0];
str[0]=str[maxi];
str[maxi]=t;

if ( mini==0 )
mini=maxi ;
t=str[i-1];
str[i-1]=str[mini];
str[mini]=t;
printf("%s\n", str );
return 0;
}

本回答被提问者采纳
第2个回答  2014-12-14
#include<stdio.h>
#include<string.h>
void bubblesort(char *arr, int size)
{
int i = 0;
int j = 0;
char t;
int s;
for (i = 0; i < size; i++)
{
s = 0;
for (j = 0; j < size - i - 1; j++)
{
if (arr[j] <arr[j + 1])
{
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
s = 1;
}
}
if (!s)
return;
}
}
int main()
{
char arr[100]={};
scanf("%s",arr);
bubblesort(arr,strlen(arr));
printf("%s",arr);
return 0;
}
相似回答