因为博主 C语言已经差不多都快3个月左右没用过了
平时刷力扣和做其他的东西都是用的cpp
今天布置了两个C语言 叫做大作业其实都很简单
这个我就只花了20-30分钟左右就做出来了 很简单

但还是打算把代码贴出来吧 做都做了hhh
在这里插入图片描述

首先是如何保存卡组呢
如果是C++的话 我会用
vector<vector<string>> 很方便很方便的就弄了
但是我刚刚去百度了一下 好像C++库函数里面也没有Shuffle函数
不像Python里面是有的 那好吧

C语言的话 就用三维的字符数组就行了 然后最后一层的数组储存牌
char card[4][13][4] 最后一层4的话 是因为有一个花色 + 最大两个数组 + '\0’空间

之后就往里面填卡组就完了 挺简单的
我用了一个 temp数组重当暂时的字符串 还用了一个sprintf函数
直接向字符数组赋值
之后就用strcpy或者memcpy 就向最底层的字符数组copy就完成了

之后就到了洗牌环节了
我也没想很多 一想就是 随机的交换 三维数组中的
管理字符数组那一层的字符串即可
然后每一次交换用四次random函数
之后就交换即可 我对指针的操作烦了
就直接memcpy对底层字符串进行交换了

思路就是这么个思路 然后具体实现就看下面代码实现就行了

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shufflecard(char card[4][13][4]);
void shufflecard(char card[4][13][4])
    int i,j,times = 100;
    char temp[4];
    srand(time(NULL));
    while(times--)
        int row1 = rand()%4,row2 = rand()%4;
        int line1 = rand()%13,line2 = rand()%13;
        memcpy(temp,card[row1][line1],sizeof(temp));
        memcpy(card[row1][line1],card[row2][line2],sizeof(temp));
        memcpy(card[row2][line2],temp,sizeof(temp));
    for(i=0;i<4;++i)
        for(j=0;j<13;++j)
            printf("%4s",card[i][j]);
        printf("\n");
    return;
int main()
    int i,j;
    char ch;
    char card[4][13][4];//52组牌的三维数组 c语言字符串只能是const char*
    char temp[4];//为后面的memcpy做准备
    char alpha[4] = {"JQKA"};
    memset(temp,'\0',sizeof(temp));//格式化temp字符串
    //为52组牌进行赋值 并进行输出
    for(i=0;i<4;++i)
        temp[0] = i+3;
        for(j=0;j<13;++j)
            if(j<9) sprintf(temp+1,"%d",j+2);
            else sprintf(temp+1,"%c",alpha[j-9]);
            memcpy(card[i][j],temp,sizeof(temp));//赋值
            printf("%4s",card[i][j]);//输出
        printf("\n");//换行
    printf("\nShuffle input 'Y' quit input 'N'\n");
    while((ch = getchar()) == 'Y' || ch == 'y')
        shufflecard(card);
        fflush(stdin);
        printf("\nGoing On input 'Y' quit input 'N'\n");
    printf("\nThanks for using this small Shuffle_Card program \nSee u!\n");
    return 0;
                    文章目录前引思路解析代码实现效果图本篇博客仅作学习参考 禁止直接复制粘贴代码以及任何形式的抄袭行为前引因为博主 C语言已经差不多都快3个月左右没用过了平时刷力扣和做其他的东西都是用的cpp今天布置了两个C语言 叫做大作业其实都很简单这个我就只花了20-30分钟左右就做出来了 很简单但还是打算把代码贴出来吧 做都做了hhh思路解析首先是如何保存卡组呢如果是C++的话 我会用 vector&lt;vector&lt;string&gt;&gt; 很方便很方便的就弄了但是我刚刚去百度
psArray:指向一个 UINT32 类型的数组,用于存储最终的编码结果。
smallSrcVec:指向一个 UINT32 类型的数组,包随机编码所需的数据。
nodeLen:UINT32 类型的变量,表示 smallSrcVec 数组的长度。
layerNum:UINT32 类型的变量,表示需要进...
				
题目描述: 给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。 请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。 示例 1: 输入:nums = [2,5,1,3,4,7], n = 3 输出:[2,3,5,4,1,7] 解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7] 示例 2: 输入:nums = [1,2,3,4,4,3,2
C语言大作业-员工管理系统(主要功能如下)(免积分下载) system("cls");//清屏 printf("************* 员工工资管理系统 **************\n"); printf("* 1-----增加员工信息 *\n"); printf("* 2-----查询员工信息(依据工号) *\n"); printf("* 3-----修改员工信息 *\n"); printf("* 4-----删除员工信息 *\n"); printf("* 5-----依据工资统计员工信息 *\n"); printf("* 6-----显示员工信息 *\n"); printf("* 7-----清空员工信息 *\n"); printf("* 8-----退出系统 *\n"); printf("*********************************************\n"); printf("请选择(输入编号1-8进行选择):");
这篇文章并没有什么特别的地方,可以说是很烂大街的一个选题了。写的目的呢只是想把大作业留个纪念(说不定n年后再看这段代码会觉得自己写了一坨屎233) 说实话,其实当时选题的时候就有点偷懒了,学校给的那15个样例大作业我不怎么感兴趣(因为说白了就是过去oi里普及-的大模拟/高精度算法),本来自己想完善一下高中写的那个人机五子棋的,emmmm但算法思路一直想不出一个更好的(现在看来高中写的那个东西太shit了233),所以我再次选择了扫雷这个经典大作业作为我第一个用C++写的超过200行的程序。 #define dP 0x00c4f4beb5e28db9 #define dQ 0x00b9a9b32c5e9d95 #define qInv 0x70863eccc5f29b6b // 快速幂算法 unsigned long long fast_pow(unsigned long long base, unsigned long long exponent, unsigned long long modulus) { unsigned long long result = 1; while (exponent > 0) { if (exponent & 1) { result = (result * base) % modulus; base = (base * base) % modulus; exponent >>= 1; return result; // RSA-CRT 加速 unsigned long long rsa_crt(unsigned long long message) { // 计算 mP = message^dP mod p 和 mQ = message^dQ mod q unsigned long long mP = fast_pow(message, dP, N); unsigned long long mQ = fast_pow(message, dQ, N); // 计算 h = (qInv * (mP - mQ)) mod p unsigned long long h = ((qInv * (mP - mQ)) % N + N) % N; // 计算结果为 mQ + q * h return mQ + N / 0x00dc29f7c59a11b3 * h; int main() { // 明文 unsigned long long message = 0x0123456789abcdef; printf("message: %llx\n", message); // 加密 unsigned long long ciphertext = fast_pow(message, e, N); printf("ciphertext: %llx\n", ciphertext); // 解密 unsigned long long decrypted = rsa_crt(ciphertext); printf("decrypted: %llx\n", decrypted); return 0; 在这份代码中,我们使用了 RSA-CRT 加速来加速 RSA 解密的过程,其中包了快速 typedef signed short int int16_t; typedef signed int int32_t; typedef signed long long int int64_t; typedef signed unsigned char uint8_t; typedef signed unsigned short int uint16_t; typedef signed unsigned int uint32_t; typedef signed unsigned long long int uint64_t; #endif 第一段的stdin.h文件里面typedef signed unsigned 这个重复了 《操作系统真象还原》第五章 ---- 轻取物理内存容量 启用分页畅游虚拟空间 力斧直斩内核先劈一角 闲庭信步摸谈特权级 weixin_50482733: gcc4.4 对应的Loader.S文件,多了259-261这三行 mov eax,[ebx+8] cmp eax,0xc0001500 jb .PTNULL 虽然能看到屏幕显示,但是bochs调试,运行完之后,info tab和info gdt的值不对了 Love 6 从零开始的计算机学习之路 全系列总结博客 CSDN-Ada助手: AI 写作助手上线啦!限免 4 天,快来创作试试功能吧~https://editor.csdn.net/md/?not_checkout=1&utmsource=blog_comment_recall