Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 函数未初始化_C_Arrays_Function - Fatal编程技术网

C 函数未初始化

C 函数未初始化,c,arrays,function,C,Arrays,Function,嗨,如果数组中的某些数字相同,我在初始化打印错误消息的函数时遇到问题 #include<stdio.h> #include<stdlib.h> void printRepeating(int arr[], int size) { int i, j; for(i = 0; i < size; i++) for(j = i+1; j < size; j++) if(arr[i] == arr[j]) printf("W

嗨,如果数组中的某些数字相同,我在初始化打印错误消息的函数时遇到问题

#include<stdio.h>
#include<stdlib.h>

void printRepeating(int arr[], int size)
{
  int i, j;
  for(i = 0; i < size; i++)
    for(j = i+1; j < size; j++)
      if(arr[i] == arr[j])
        printf("Wrong input. Same numbers in array!\n");
}     

int main()
{
    int arr[200],i;
    int res, num;
    while((res = scanf("%d", &num)) == 1)
    {
      arr[i++] = num;
      if(num == 0){
        break;
      }
    }
    for(i = 0; i < arr[i]; i++)
      printf("%d ", arr[i]);
    printf("\n");
    int arr_size = sizeof(arr[i])/sizeof(arr[0]);  
    printRepeating(arr, arr_size);
    return 0;
}
#包括
#包括
无效打印重复(整数arr[],整数大小)
{
int i,j;
对于(i=0;i

如果我扫描
1 2 3 1 4 5 0
,我的功能
printRepeating
不会启动,但是我的数组中有相同的数字
1 1
,为什么?另一个问题是,当我键入
123150
时,它只打印
1230
,例如,当我扫描
1234567890
时,它打印除0以外的所有数字。

代码中存在多个问题。首先,将
i
初始化为
0
,并在
i
旁边声明一个新变量
j

int arr[200], i = 0, j;
数组的大小应该是
i
,每次在数组中插入元素并更改此值时,数组的大小都会增加

for(i = 0; i < arr[i]; i++)
     printf("%d ", arr[i]);
这条线

int arr_size = sizeof(arr[i])/sizeof(arr[0]);
没有达到你的期望。您只需将数组的两个元素的大小进行分割,这两个元素的大小始终相同,因此总是得到
1
。如果要为函数指定元素数,请为其指定一个变量,在读取这些元素数时,使用该变量对每个元素进行计数

还包括:

for(i = 0; i < arr[i]; i++)
    printf("%d ", arr[i]);
for(i=0;i

只打印不大于其索引的数字。同样,您的程序缺少一个用于计算输入值数量的变量。

我想您的问题已经解决,如果它解决了您的问题,请标记此答案@黑道问题解决了吗?如果答案被接受,请将其标记为已接受@布莱克路
int arr_size = sizeof(arr[i])/sizeof(arr[0]);
for(i = 0; i < arr[i]; i++)
    printf("%d ", arr[i]);