嗨,我有一个明天我想完成的项目,但我陷入困境。我对此非常新鲜,所以不要苛刻。我希望我的程序询问用户播放多少个数字。在要求彩票号码并将其放在边界之后,多少钱,然后索要用户数字,将其放在第二个边框上,然后我想比较其中的两个,如果他们有相同的数字将添加到" 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 numbersn");
scanf("%d",&k[i]);}
while (l<num){
printf("Give your numbersn");
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");}
看来f
从未被初始化为任何东西。因此,
scanf("%d",k2[f]);
将导致不确定的行为,这可能是崩溃的原因。
此外,您需要修复缩进。此外,您的循环逐渐消失。您初始化l
至1,然后执行以下循环,其明显目的是读取num
数字:
while (l<num){
因此,例如,如果输入" 1",为了仅读取一个数字,则循环的主体将永远不会执行,因为比较" 1&lt; 1"将是错误的。
此代码可能还有其他问题,由于凹痕不良而难以分析。
此循环
for (i=0;i=19;i++){
将永远不会结束,因为i = 19将始终评估。
我认为目的是:
for (i=0;i<19;i++){
而不是l,您可能想要的,您正在使用f,如Sam Varshavchik所发现的那样,它尚未初始化。
此外,您没有将指针传递给SCANF:scanf("%d", k2[f]);
。如果您喜欢的话,您需要scanf("%d", k2 + l);
或scanf("%d", &k2[l])
。