最大字符移位

在字符串str中找出最大的字符,将在该字符前的所有字符往后顺序移动一位,再把最大字符放在字符串的第一个位置上。如“knowledge”变成“wknowledge”

首先我们需要找出字符串中最大的字符。然后,将在该字符前的所有字符往后移动一位,最后将该字符放在字符串的第一个位置上。例如knowledge变成wknowledge,将最大字符‘w’移动到了第一个位置。

#include <stdio.h>
int main()
{
    char max, str[80], *p, *q;     
    p = str; 
//把字符串的长度赋值给p,这样就可以通过p来指向字符串str里的每个字符,来找到最大的字符
    gets(p);
//从标准输入中读取字符串str然后遍历字符串的每一个字符,
//找出最大的字符,将其记录在max中,最后将max移到字符串的第一个位置,并输出新字符串
    max = *p;
//为了在字符串中找出最大的字符,*p指的是字符串中当前字符的值
//max保存着目前为止看到的最大值
    p++;
//下一次循环中指向的字符
    while (*p!='\0'){
//为了循环遍历str,直到遇到空字符‘\0’才能够结束循环
        if (max<*p){ 
            max=*p; //用途是读取字符串中的最大值
            q=p; 
//为了使指针q指向字符串str的第一个字符,
//从而可以从头开始遍历str并找到最大字符max
        }
        p++;
    }
    p = q;
    while (p>&str[0]){
//比较语句,可以保证while语句执行之前,p一定指向最大字符的下一个位置
//检查p是否大于字符数组的第一个字符
        *p = *(p-1);
//将p指向的字符赋值为p-1指向的字符即前一个字符,也就是把字符串中的元素往后移动一个位置的意思。
        p--;
    }
    *p = max;
    puts(p);
    return 0;
}

char max用于存储字符串str中最大值,每次循环都会检查字符串str中的值是否比max大,如果大于max,就更新max的值。

str[80]代表最多可以存储80个字符的字符串

char max是为了读入最大值,str80是限定了字符串的长度,这是因为需要有一个有限的存储空间来存储最大值。

#include<stdio.h>
int main()
{
    char str[]="knowledge";
    int maxIndex=0;
    for(int i=1;str[i]!='\0';i++)
{
        if(str[i]>str[maxIndex])
            maxIndex=i;
}
       char largest=str[maxIndex];
           while(maxIndex>0)
{
                str[maxIndex]=str[maxIndex-1];
                    maxIndex--;  
}     
        str[0]=largest;
            printf("Result:%s\n",str);
        return 0;



}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值