gpt4 book ai didi

c - 查找#在数组中的时间

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:55 28 4
gpt4 key购买 nike

大家好,这个程序创建了一个生成随机数数组的函数。然后它使用另一个函数来显示用户提供的号码在列表中的次数。由于输出始终为 0,因此我无法显示数组中数字出现的次数。

10 32 31 5 34 39 10 15 39 25 26 10 27 21 
50 31 3 21 29 16 12 42 29 30 8 28 19 8 39 1
19 50 34 2 4 18 40 14 34 30 40 12 41 16 32 42
48 34 12 28

键入一个数字以查看它在您的列表中出现的次数:16.你的号码被列出0次

代码

#include <stdio.h>

int MakeRand()
{
srand(time(NULL));
}

void fillArray( int arr[], int high)
{
int i,N;
N = 50;
for (i=0;i<N;++i)
{
arr[i] = rand() % high +1;
printf("%d ", arr[i]);
}
}

int CountNumb(int arr[], int x)
{
int k,j;
j = 0;
for (k=0;k<50;++k);
{
if (arr[k] == x)
{
j = j++;
}
return j;
}
}

int main()
{
int nums[50];
int b,k,n;

MakeRand();
fillArray(nums,50);
printf("Type a number to see how many times it appears in your list: ");
scanf("%d",&n);
b = CountNumb(nums,n);
printf("Your number is listed %d times\n",b);
return 0;
}

最佳答案

您的 CountNumb 中存在三个问题功能:

  1. 在您的 for 之后有一个不必要的分号循环语句。
  2. 你需要做 j++ , 而不是 j = j++; .你不能做 j = j++;因为它导致 undefined behavior .
  3. 您将在 for 内返回循环而不是在完成 for 后返回循环。

int CountNumb(int arr[], int x)
{
int k,j;
j = 0;
/* for (k=0;k<50;++k); */ /* Isuee 1 here, trailing semicolon */
for (k=0;k<50;++k)
{
if (arr[k] == x) {
/* j = j++; */ /* Issue 2 here, you just need j++ */
j++; /* Or j = j + 1;, or j += 1; but NOT j = j++ */
}
/* return j; */ /* Issue 3 here, you need to return at end of function */
/* Not inside the for loop */
}
return j;
}

您还需要include<stdlib.h> , 和 include<time.h> .

关于c - 查找#在数组中的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799326/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com