为什么这不起作用.....?
意图:想拥有它,以便用户选择要练习的表格 然后是那里的选择和数字数组的总和。 我假设它会从数组中挑出一个随机数字?
#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;
}
答案 0 :(得分:2)
首先,正如Evert所提到的,scanf()
需要pointer到Choice
。
其次,您不能像这样打印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);