gpt4 book ai didi

c++ - 将堆上的结构从 C++ 转换为 C

转载 作者:行者123 更新时间:2023-11-30 20:24:34 24 4
gpt4 key购买 nike

问题是,编写一个名为 card_factory 的函数,该函数不带参数并返回指向 Playing_Card 结构的指针。
Playing_Card 结构声明如下:

struct Playing_Card
{int rank;
int suit; };

在工厂函数内,在堆上分配一个新的 Playing_Card 结构。使用 1 到 13 之间的随机值填充排名成员。使用 0 到 3 之间的随机值填充花色成员。返回这个新的 Playing_Card 结构调用者。

从主函数中调用card_factory五次。将每次调用的结果存储在数组中Playing_Card 指针。编写另一个名为 print_playing_card 的方法,它接受一个指向Playing_Card,并打印如下:

Printing playing card:
Rank: Queen
Suit: Clubs

其中花色表示如下:0 = 方 block ,1 = 红桃,2 = 梅花,3 = 黑桃。
等级如下:1 = Ace,11 = Jack,12 = Queen,13 = King,2 到 10 是值 2 到 10。
确保在 main() 退出之前,它通过释放适当的堆分配来清理内存分配。

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

struct Playing_Card {

int rank;
int suit;
};

void print_playing_card(Playing_Card *ptr) {
cout << "Rank: ";
switch (ptr->rank) {
case 1:
cout << "Ace\n";
break;
case 11:
cout << "Jack\n";
break;
case 12:
cout << "Queen\n";
break;
case 13:
cout << "King\n";
break;
default:
cout << ptr->rank << "\n";
}
cout << "Suit: ";
switch (ptr->suit) {
case 0:
cout << "Diamonds\n";
break;
case 1:
cout << "Hearts\n";
break;
case 2:
cout << "Clubs\n";
break;
case 3:
cout << "Spades\n";
break;
}

cout << endl;
}
Playing_Card* card_factory() {
Playing_Card *temp = new Playing_Card;
temp->rank = rand()%13 + 1;
temp->suit = rand()%4;
return temp;
}

int main() {

Playing_Card *arr[5];

// Allocate memory on heap
for(int i = 0; i < 5; i++) arr[i] = card_factory();


// Print the cards
cout << "Printing Playing Cards:\n\n";
for(int i = 0; i < 5; i++) print_playing_card(arr[i]);

// Free the memory allocated on heap
for(int i = 0; i < 5; i++) delete(arr[i]);

// exit
return 0;
}

我已经编写了这段代码,我需要它使用 c 编程语言而不是 c++,有人可以帮助我进行转换吗?

最佳答案

cout 变成 printf

new 变成 malloc

删除变得免费

在 block 的开头声明所有自动变量。

编辑:在所有Playing_card引用前面添加struct

我认为这涵盖了你的端口。

关于c++ - 将堆上的结构从 C++ 转换为 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com