gpt4 book ai didi

c - 彩票计划问题

转载 作者:行者123 更新时间:2023-11-30 19:43:50 25 4
gpt4 key购买 nike

我目前正在创建我的第二个主 C 程序。我刚刚开始学习 C,并且遇到了一些问题,并且对下一步该程序做什么感到困惑。

这个想法基本上是允许用户输入所需的年份,然后程序根据他们输入的年份模拟每周玩的彩票游戏。然后在程序内部,我希望两个数组相互比较并检查它们同时拥有的任何数字。用户端的彩票保持不变,是在数组内部设置的,当然,随机彩票号码每周都会变化。

基础知识已经完成,我只是遇到了一些问题,并且不知道在某些领域该去哪里。

问题:
“int week =year * 52”不起作用,表示初始值设定项元素不是常量。

当我返回 get_lotto_draw 时,我只是得到一个一堆数字,无论如何它都没有分开,所以我不知道该怎么做。

#include <stdio.h> //Alows input/output operations
#include <stdlib.h> //Standard utility operations

//Declaring Variables
int year;
char name[15];
char option;
int lotteryPlayer[] = {5,11,15,33,42,43};
int i;
int randomNums[49];
int *lotteryPtr = lotteryPlayer;
int *randomPtr = randomNums;
int weeks = 0;

void print_array(int *lotteryPtr);
int* get_lotto_draw(int *randomPtr);

//Main Method
int main(int argc, char *argv[])
{
start: //Start of program

printf("\n---------------------------");
printf("\nProject: Jackpot Dreams ");
printf("\n---------------------------\n");

printf("\nWhat is your First Name?:> "); //Asks them for their choice
scanf("%s", &name); //Reads the input

printf("\nHow Many Years to Sleep?:> "); //Asks them for their choice
scanf("%d", &year); //Reads the input
weeks = year * 52;

printf("\nOk %s, I will play the lottery for %d years!\n",name, year);
sleep(1500);
printf("Sweet Dreams %s, don't let the bed bugs bite", &name);
sleep(1500);
printf(". ");
sleep(1500);
printf(". ");
sleep(1500);
printf(".");
sleep(2000);

printf("%d", get_lotto_draw);
system("PAUSE");
}

//Returns an array of six random lottery numbers 1-49
int* get_lotto_draw(int *randomPtr)
{
for (i=0 ; i<weeks ; i++)
return randomNums;
}

//Print out the content of an array
void print_array(int *lotteryPtr)
{
printf("Hello");
}

//Returns number of matches between two arrays
int find_matches(int * lotteryPtr, int * randomPtr)
{

}

更新:

#include <stdio.h> //Alows input/output operations
#include <stdlib.h> //Standard utility operations

//Declaring Variables
int year;
char name[15];
char option;
int lotteryPlayer[] = {5,11,15,33,42,43};
int i;
int randomNums[49];
int *lotteryPtr = lotteryPlayer;
int *randomPtr = randomNums;
int weeks = 0;

void print_array(int *lotteryPtr);
int* get_lotto_draw(int *randomPtr);

//Main Method
int main(int argc, char *argv[])
{
start: //Start of program

printf("\n---------------------------");
printf("\nProject: Jackpot Dreams ");
printf("\n---------------------------\n");

printf("\nWhat is your First Name?:> "); //Asks them for their choice
scanf("%s", name); //Reads the input

printf("\nHow Many Years to Sleep?:> "); //Asks them for their choice
scanf("%d", &year); //Reads the input
weeks = year * 52;

printf("\nOk %s, I will play the lottery for %d years!\n",name, year);
sleep(1500);
printf("Sweet Dreams %s, don't let the bed bugs bite", &name);
sleep(1500);
printf(". ");
sleep(1500);
printf(". ");
sleep(1500);
printf(".");
sleep(2000);

printf("%d", get_lotto_draw(*randomPtr));
system("PAUSE");
}

//Returns an array of six random lottery numbers 1-49
int* get_lotto_draw(int *randomPtr)
{
for (i=0 ; i<weeks ; i++)
return randomNums;
}

//Print out the content of an array
void print_array(int *lotteryPtr)
{
printf("Hello");
}

//Returns number of matches between two arrays
int find_matches(int * lotteryPtr, int * randomPtr)
{

}

最佳答案

主要借用评论,您的代码存在一些问题。

int weeks = year * 52;导致错误,因为 year尚未初始化。将其更改为 int weeks = 0; ,然后输入 weeks = year * 52在主函数的开头。

您不需要 start:标签在程序的开头,除非由于某种原因你想使用 goto 返回那里,这通常被认为是不好的做法。

printf("%d", get_lotto_draw);打印 get_lotto_draw 的地址作为十进制(“%d”),您需要将其设为 get_lotto_draw(args)得到get_lotto_draw的返回值.

system("PAUSE"),在 shell 上运行命令 PAUSE。我不知道这是否会暂停当前程序,但如果您不想让程序退出,可以使用循环。

while (1) {}

您的get_lotto_draw的实现不做你认为它做的事。你现在所做的只是返回randomNums ,您要做的是生成一个 1 到 49 之间的随机数。为此,您应该首先生成一个随机数,然后将其除以 48 并加一。这将为您提供 1 到 49 之间的随机数。 srand(time(NULL)); int r = rand();将生成一个随机数,并且 r %= 48; r += 1;将其修改为 48 并添加 1。然后,您可以为该 for 循环的每次迭代执行此操作,并使用这些值创建一个数组。您将返回的数组必须是 malloc 'd。

int get_lotto_draw() {
srand(time(NULL));
int* rv = malloc(sizeof(int) * 6);
for (int i = 0; i < 6; i++) {
rv[i] = (rand() % 48) + 1;
}
return rv;
}

您的find_matches功能也未实现。只需迭代数组来查找匹配项就足够了。

int find_matches(int* a, int* b) {
int matches = 0;
for (int i = 0; i < 6; i++) {
if (a[i] == b[i]) {
matches++;
}
}
return matches;
}

最后,献给您的print_array函数,您再次只需要遍历彩票号码列表,并打印每个号码。

void print_array(int* arr) {
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("%d", arr[5]);
printf("\n"); // remove this if you don't want a newline at the end.
}

关于c - 彩票计划问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29130174/

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