嗨我有一个明天的项目,我想完成,但我卡住了。我是新手,所以不要太苛刻。基本上我希望我的程序询问用户玩了多少个数字。多少钱,在它要求彩票号码然后放入边界,然后它询问用户号码,放入第二个边界然后我想比较其中的2个,如果它们有相同的号码它将添加到' sum'。
#include <stdlib.h>
int main()
{
int k[20],i;
int k2[12],f;
int numbers,sum,n,l,num;
float money,winnings;
l=0;
sum=0;
printf("How many numbers from 1 to 12?\n");
scanf("%d",&num);
printf("How much money?\n");
scanf("%f",&money);
for (i=0;i<19;i++)
{printf("Give lottery numbers\n");
scanf("%d",&k[i]);}
while (l<num){
printf("Give your numbers\n");
scanf("%d", k2 + f); !!fixed!!
l++;}
for (f=0;f<num;f++){
for (i=0;i>19;i++){ !!fixed!!
if ((k[i])==(k2[f])) !!! and here i think its a mistake.
{
sum=sum+1;
}
}
}
printf("You got %d numbers out of %d",sum,num);
if ((sum=1) && (num=1));
{winnings=(money*2,5);
printf("Won %f",winnings);}
if ((sum=1) && (num=2));
{winnings=(money*1);
printf("won %f",winnings);}
if ((sum=2) && (num=2));
{winnings=(money*5);
printf("Won %f",winnings);}
system("pause");}
答案 0 :(得分:1)
f
似乎没有被初始化为任何东西。因此,
scanf("%d",k2[f]);
会导致未定义的行为,并且可能是导致崩溃的原因。
此外,您需要修复缩进。此外,你的循环是一个。您将l
初始化为1,然后执行以下循环,其明显目的是读取num
个数字:
while (l<num){
所以,例如,如果&#34; 1&#34;因为比较&#34; 1&lt; 1&#34;将是假的。
此代码可能存在其他问题,由于缩进不良而难以对其进行分析。
答案 1 :(得分:1)
此循环
for (i=0;i=19;i++){
将永远不会结束,因为i = 19将评估为始终为真。
我认为其意图是:
for (i=0;i<19;i++){
答案 2 :(得分:0)
而不是l,你可能想要的是什么,你使用的是f,正如Sam Varshavchik已经发现的那样,它没有被初始化。
此外,您没有传递指向scanf的指针:scanf("%d", k2[f]);
。如果您愿意,则需要scanf("%d", k2 + l);
或scanf("%d", &k2[l])
。