C 简单数组索引失败

C 简单数组索引失败,c,arrays,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 ("=

为什么这不起作用

意图:想要拥有它,因此用户选择一张表格进行练习 然后是三个选择和数字数组的和。 我假设它会从数组中随机抽取一个数字

#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;
}
#包括
int main(){
整数和[12]={1,2,3,4,5,6,7,8,9,10,11,12};
智力选择;
printf(“选择您的时间表\n”);
printf(“2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |\n”);
printf(“===========================================\n”);
scanf(“%d”,选择);
printf(“%d x%d”,选择,和);
返回0;
}
scanf()函数需要变量选择的地址,而不是其内容

更改此声明: scanf(“%d”,选择)

为此:
scanf(“%d”,选择(&C)

首先,正如埃弗特所提到的,
scanf()
需要选择

其次,不能像那样打印
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;
}

好的,这里有一些问题。实际上,这不是需要数组解决的问题。您需要的是生成从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;
}
#包括
#包括
int main()
{
//声明我们稍后将使用的变量
int-choice=1;
整数随机数;
//打印用户提示
printf(“选择您的时间表\n”);
printf(“2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |\n”);
printf(“===========================================\n”);
printf(“输入0退出。\n”);
while(选项!=0)
{
//读入用户输入
scanf_s(“%d”和选项);
//获取1和12之间的随机数
randomNumber=rand()%12+1;
printf(“%d x%d=?\n”,选项,随机数);
系统(“暂停”);//暂停以便不立即显示答案。
//打印乘法问题的结果
printf(“=%d\n”,选项*随机数);
//再次获取用户输入
printf(“选择您的时间表\n”);
printf(“2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |\n”);
printf(“===========================================\n”);
printf(“输入0退出。\n”);
}
返回0;
}

在一开始,从无到有地编写代码是非常困难的,因此我希望以此为例进行修改能够帮助您解决这个问题。如果您还有任何问题,代码中的注释无法回答,请告诉我。

您的双关语是不可原谅的。因此,为了清楚起见,您希望他们输入一个数字,
choice
从1到12,这对应于练习他们的8s表或4s表。您想随机打印,例如,如果他们选择了8,
8xn
,其中n是1到12之间的某个数字?我想这就是你要问的,但我不是100%确定,所以我想澄清。
scanf
需要一个指向
Choice
@marmaa的指针。不太可能,你最好读一本书或入门教程(甚至阅读其他so线程);在这个阶段,看起来您只是在猜测代码并希望它能工作。我们可以为您提供此问题的答案,但如果您尝试对程序执行任何其他操作,您仍然会迷失方向。@marmaa K&R始终是一个良好的开端,尤其是对于阵列和scanf,因为它们从该区域开始。对于一个列表,它试图用这段代码解决问题,结果出现了第10行:错误:“for”循环初始声明在C99之外使用mode@marmaa我假设您使用的是c99标准。只需在
for()
循环之前声明
i
,然后删除int i=0;从那句话里说出来?非常有帮助,仍然会抛出一些错误,但它已经实现了,也许我应该试着从一开始做一个不那么复杂的项目?我运行了我发布的代码。它不是为你编译的?是的,有时候最好从没有用户输入的项目开始。这可能更容易。尝试一些简单的东西,比如计算矩形或球体的体积。使用循环打印出
*
的模式也是很好的做法。我想你可以做这个项目。记住,编程最重要的部分是规划您首先要做的事情,而不仅仅是编写代码!这是一堂很难的课,但你会发现它是值得的。嘿,丹,我想知道我是否可以把你作为朋友加入进来,聊一聊编码:)?当然可以!很乐意帮忙。给gmail的spudguntechie发邮件我不知道PMs是如何工作的,所以,如果它们存在的话。干杯,巴迪刚刚给你发了一条消息,也许我可以帮你做点什么,尽管它显然与代码无关^^
#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;
}