我正在研究一个问题,我给出了一个排序的整数数组,我应该从用户那里获取一个输入,搜索输入,并返回该输入的第一个实例(如果它存在)和它出现的次数.
我用以下方法编写了一个程序:我从用户那里得到了一个输入.然后我使用二进制搜索来查找值.如果它存在,那么我将索引存储为m.之后,我写了两个while循环.第一个循环检查左边的值的出现次数,第二个循环检查相同,但是向右.例如,二进制搜索可能正在寻找5,并且它找到它.然而,它落在第三个,即.{.....5,5,**5**,5....}.第一个while循环将计算左边的两个循环,而第二个循环将计算右边的一个循环.然后我将它们全部加起来并返回实例总数.如果输入值不存在,那么我跳过上述代码并简单地返回-1.
在main函数体中,我然后检查返回值.如果是-1,我告诉用户该值尚未找到.如果返回值> = 0,则打印所需信息.
无论如何,我已经为程序编写了C代码,但我无法使其正常工作.我得到一个段.错误错误,我不知道我做错了什么.无论如何,任何帮助将不胜感激.我一直在为这个问题敲打头脑.这很有趣也很难,我认为我有正确的逻辑; 但我不能让它正常工作.无论如何,这里是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
/* function prototype */
int get_num_of_ints( const int* arr, size_t r, int N, size_t* f, size_t* count );
int main()
{
int i;
int N; /* input variable */
int arr[]={1,1,2,3,4,4,4,4,5,5,6,7,7,7,7,8,9,9}; /* array of sorted integers */
size_t r = sizeof(arr[i])/sizeof(int); /* right bound */
size_t f; /* first match index */
size_t *fPtr;
fPtr …Run Code Online (Sandbox Code Playgroud) 这是一个非常简单的问题,但以下函数原型是什么意思?
int square(int y,size_t*x)
size_t*的意思是什么?我知道size_t是一种数据类型(int> = 0).但是如何阅读附加的*?它是指向x的内存位置的指针吗?总的来说,我遇到了这个问题,如果有人能提供方便的参考,我会很感激.
谢谢大家.我理解指针是什么,但我想我很难理解指针和函数之间的关系.当我看到函数原型定义为int sq(int x, int y),那么我很清楚发生了什么.然而,当我看到类似的东西时int sq( int x, int* y),我不能 - 为了我的生活 - 理解第二个参数的真正含义.在某种程度上,我理解它意味着"传递一个指针",但我不能很好地理解它自己操纵它.