我试着检查一个数组中有多少个负数,并检查在同一个数组中是否有重复的数字。
下面是我使用的代码:
#include<stdio.h>
int main()
{
int n = 0;
int negative_count = 0;
int duplicate_count = 0;
// input lenght of the array
scanf("%d", &n);
getchar();
int arr[n];
for(int i = 0;i < n;i++){
//input elements of the array
scanf("%d", &arr[i]);
getchar();
}
int len = sizeof(arr) / sizeof(arr[0]);
for(int i=0;i<len;i++){
if(arr[i] < 0){
negative_count++;
}
for(int j= i+1;j<len;j++){
if(arr[i] == arr[j]){
duplicate_count++;
}
}
}
printf("Number of negative numbers: %d\n", negative_count);
printf("Number of duplicates: %d", duplicate_count);
return 0;
}
输入
5
1 -1 2 3 -3
输出功率
Number of negative numbers: 2
Number of duplicates: 0
负数的输出是正确的,但是副本的输出不是我想要的。它应该输出2,因为1和-1都是数字1,3和-3也是数字1。我该怎么做呢?
2条答案
按热度按时间zxlwwiss1#
如果你真的想让1和-1算作同一个数字,你应该使用abs()函数,在搜索“重复项”时使用绝对值。
还要记住包括<stdlib.h>使用abs()
xlpyo6sf2#
我修正了我的代码,它可以工作了,只需要使用abs()函数来比较数组。我还去掉了一些不必要的代码。
下面是新代码: