我有一项研究,它必须打印一个数组中的所有数字然后重复多少次。
int lottery(int a,int b,int c,int d,int e,int f,int i,int count)
{
printf("Enter the loop count:");
scanf("%d",&d);
a=time(NULL);
srand(a);
int genel[100][100];
int hepsi[50]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49};
count=0;
for(e=0;e<=d-1;e++)
{
for(b=0;b<=5;b++)
{
genel[e][b]=(rand()%49+1);
while(i>=0 && i<=49)
{
if(genel[e][b]==hepsi[i])
{
count=count+1;
}
else{
count=count;
}
}
printf("%d->%d\t",genel[e][b],count);
}
}
}
这显然不起作用。输出必须是这样的 1 - > 0 2 - > 3 3 - > 15等
TY为您提供帮助,欢呼:)
答案 0 :(得分:1)
了解自己在做什么非常重要,因此命名非常重要。如果你知道你在做什么,嵌套循环是可以的。一种更容易理解的方法是:
void lottery() {
int i, j //forloop counters
int randArray[100][100]; //array for random values
srand(Time(NULL)); //set random seed based on system time
//set random values
for(i = 0; i < 100; i++) {
for(j = 0; j < 100; j++) {
randArray[i][j] = rand()%49 + 1; //sets random ranging from 1 to 49 (49 incl)
}
}
//here you can start the counting procedure, which I won't spoil but ill give some hints below
}
有一些选择,首先是简单的懒惰方法: 在所有值上使用循环,&#39; int number&#39;从1到49,在forloop里面使用两个forloops来搜索整个数组,每当你遇到值&#39;数字时就递增int x。在搜索整个数组后,您可以使用printf(&#34;%d - &gt;%d&#34;,number,x);要打印该值,请将x设置为零并计算另一个数字。
另一种方法是你试过的, 创建一个数组,每个数字都有一个可以递增计数器的位置。现在使用两个for循环遍历整个数组,增加对应于你在randArray [i] [j]中找到的值的arraylocation。然后使用另一个forloop打印带有计数的数组。
我建议您尝试清理代码和方法,再试一次,然后再遇到遇到的问题。祝你好运!
抱歉,如果这对你没有帮助,我试图破坏不要太多,因为根据我自己的经验,编程应该通过犯错来学习。