gaaa515 2021-12-27 16:01 采纳率: 92.3%
浏览 72
已结题

C语言 利用洗牌将字符串随机打乱10次

问题遇到的现象和发生背景

如果需要将下面的代码给改成,用户自己输入字符串,并且字符数不能少于5个,否则输出“String length must at least be 5. Please try again.”当输入长度为5或者以上的字符串时,将字符串洗牌shuffle10次

问题相关代码,请勿粘贴截图
#include <stdio.h>

void shuffle(int array[], int size) {
    for(int i = 0; i < size; i++) {
        int j = rand()%size;
        int t = array[i];
        array[i] = array[j];
        array[j] = t;
    }
}

int main(void){
    int list[10] = {0,1,2,3,4,5,6,7,8,9};

    shuffle(list, 10);
    for (int i = 0; i < 10; i++) {
        printf("%d,", list[i]);
    }
    return 0;
}

我想要达到的结果
Enter a string of length 5:
abc
String length must at least be 5. Please try again.
Enter a string of length 5:
abcde
Shuffle 1: adcbe
Shuffle 2: cdabe
Shuffle 3: bdace
Shuffle 4: badce
Shuffle 5: bedca
Shuffle 6: bedca
Shuffle 7: aedcb
Shuffle 8: acdeb
Shuffle 9: cadeb
Shuffle 10: cdaeb

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-12-27 16:09
    关注

    加srand
    并且字符串数不能少于5个---是字符数不少于5个吧?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    void shuffle(char *s,int n) {
        int i,j;
        char t;
        for(i = 0; i < 10; i++) {
            j = rand()%n;
            t = s[i%n];
            s[i%n] = s[j];
            s[j] = t;
            printf("Shuffle %d: %s\n",i+1,s);
        }
    }
    int main(void){
        char s[100];
        printf("Enter a string of length 5:\n");
        gets(s);
        while(strlen(s) < 5)
        {
            printf("String length must at least be 5. Please try again.\n");
            printf("Enter a string of length 5:\n");
            gets(s);
        }
        srand(time(NULL));
        shuffle(s, strlen(s));
        return 0;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 修改了问题 12月27日
  • 创建了问题 12月27日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题