在循环之后获得细分故障

  • 本文关键字:细分 故障 循环 之后 c
  • 更新时间 :
  • 英文 :


嗨,我有一个明天我想完成的项目,但我陷入困境。我对此非常新鲜,所以不要苛刻。我希望我的程序询问用户播放多少个数字。在要求彩票号码并将其放在边界之后,多少钱,然后索要用户数字,将其放在第二个边框上,然后我想比较其中的两个,如果他们有相同的数字将添加到" 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])

最新更新