简单数组索引失败

时间:2015-06-16 23:26:31

标签: c arrays

为什么这不起作用.....?

意图:想拥有它,以便用户选择要练习的表格 然后是那里的选择和数字数组的总和。 我假设它会从数组中挑出一个随机数字?

#include <stdio.h>
int main(){
int Sum [12] = {1,2,3,4,5,6,7,8,9,10,11,12};
int Choice ;
printf ("Pick Your Time's Table\n");
printf ("|2|3|4|5|6|7|8|9|10|11|12|\n");
printf ("===========================\n");
scanf ("%d",Choice);

printf ("%d x %d",Choice,Sum);


return 0;
}

3 个答案:

答案 0 :(得分:2)

首先,正如Evert所提到的,scanf()需要pointerChoice

其次,您不能像这样打印Sum,它是一个数组。

您应该使用

#include <stdio.h>
int main(){
int Sum [12] = {1,2,3,4,5,6,7,8,9,10,11,12};
int Choice ;
printf ("Pick Your Time's Table\n");
printf ("|2|3|4|5|6|7|8|9|10|11|12|\n");
printf ("===========================\n");
scanf ("%d",&Choice);
int i;
for ( i = 0; i < 12; i++){
  printf("%d X %d = %d\n",Choice,Sum[i],Choice*Sum[i]);
}

return 0;
}

它将循环通过数组并打印表的结果。

如果您希望它在数组中输出一个随机整数,您必须使用rand()函数和模运算符,如下所示:

int i = rand() % 12; //return numbers from 0 to 11
printf("%d X %d = %d\n",Choice,Sum[i],Choice*Sum[i]);

答案 1 :(得分:2)

好的,所以你在这里遇到一些问题。实际上这不是你需要数组的问题。你需要的是生成从1到12的随机数。这是我根据你编写的一个示例程序,你可以修改它来做你想做的事。

#include <stdio.h>
#include <cstdlib>

int main()
{
    //declare variables we will use later
    int choice = 1;
    int randomNumber;

    //print prompt for user
    printf("Pick Your Times Table\n");
    printf("|2|3|4|5|6|7|8|9|10|11|12|\n");
    printf("===========================\n");
    printf("Enter 0 to quit.\n");

    while (choice != 0)
    {
        //read in user input
        scanf_s("%d", &choice);

        //gets a random number from 1 and 12
        randomNumber = rand() % 12 + 1;

        printf("%d x %d = ?\n", choice, randomNumber);
        system("pause"); //pauses so the answer isnt shown right away.
        //print the result of the multiplication problem
        printf("= %d\n", choice * randomNumber);

        //get user input again
        printf("Pick Your Times Table\n");
        printf("|2|3|4|5|6|7|8|9|10|11|12|\n");
        printf("===========================\n");
        printf("Enter 0 to quit.\n");
     }

    return 0;
}

一开始,从零开始编写代码非常困难,所以我希望以此为例进行修改可以帮助你解决问题。如果您对此有任何疑问,请告诉我代码中的注释无法解答。

答案 2 :(得分:0)

scanf()函数需要变量选择的地址,而不是其内容。

更改此声明: scanf(&#34;%d&#34;,选择);

到此: scanf(&#34;%d&#34;,&amp; Choice);