C语言重复数字不输入数组
时间: 2024-05-08 10:16:51 浏览: 8
以下是一个用C语言编写的程序,它要求用户输入一串数字,并输出其中重复出现的数字,但并不使用数组来存储输入的数字。
```c
#include <stdio.h>
int main() {
int num, temp, count = 0;
printf("请输入一串数字,以0结束:\n");
scanf("%d", &num);
while (num != 0) {
temp = num;
while (temp != 0) {
if (temp % 10 == num % 10) {
count++;
}
temp /= 10;
}
if (count > 1) {
printf("%d ", num % 10);
count = 0;
}
num /= 10;
}
return 0;
}
```
该程序使用两个while循环,第一个while循环用来输入数字,第二个while循环用来比较输入的数字中每个数字是否与其它数字重复出现。如果一个数字重复出现,则计数器count加1。如果count大于1,则说明该数字重复出现,程序会输出它的个位数。程序会一直循环,直到输入0为止。
相关问题
c语言一维数组删除重复数字
你可以使用双重循环遍历一维数组,将重复的数字标记为-1,然后再将非-1的数字放入新的数组中。具体实现可以参考以下代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int main()
{
int arr[MAX_SIZE], n, i, j, k;
// 读取数组大小和元素
printf("输入数组大小:");
scanf("%d", &n);
printf("输入数组元素:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 删除重复元素
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] == arr[j]) {
arr[j] = -1;
}
}
}
// 将非-1元素放入新数组中
int new_arr[MAX_SIZE], new_n = 0;
for (i = 0; i < n; i++) {
if (arr[i] != -1) {
new_arr[new_n++] = arr[i];
}
}
// 输出新数组
printf("删除重复元素后的数组为:");
for (i = 0; i < new_n; i++) {
printf("%d ", new_arr[i]);
}
return 0;
}
```
这个程序会先读取数组大小和元素,然后使用双重循环删除重复元素,最后将非-1元素放入新数组中并输出。
C语言,输入一个数组,不保证不包含重复数字,要求判断能否找到两个数对,使得a+b=c+d,要求数字不能重复,如果能找到返回true
好的,可以使用哈希表来解决。下面是C语言的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool findPairs(int* nums, int numsSize) {
if (!nums || numsSize <= 0) {
return false;
}
int i, j;
int pair_sum;
int* pair_dict = (int*)malloc(sizeof(int) * numsSize * numsSize);
memset(pair_dict, 0, sizeof(int) * numsSize * numsSize);
for (i = 0; i < numsSize; i++) {
for (j = i + 1; j < numsSize; j++) {
pair_sum = nums[i] + nums[j];
if (pair_dict[pair_sum] == 0) {
pair_dict[pair_sum] = nums[i] * 1000 + nums[j];
} else {
int a = pair_dict[pair_sum] / 1000;
int b = pair_dict[pair_sum] % 1000;
if (a != nums[i] && a != nums[j] && b != nums[i] && b != nums[j]) {
return true;
}
}
}
}
free(pair_dict);
return false;
}
int main() {
int nums[] = {1, 2, 3, 4, 5};
int numsSize = sizeof(nums) / sizeof(nums[0]);
bool res = findPairs(nums, numsSize);
printf("%s\n", res ? "true" : "false");
return 0;
}
```
在这里,我们使用了一个一维数组来模拟哈希表,数组的下标代表数字对的和,数组的值代表数字对。如果某个数字对的和在哈希表中不存在,则将该数字对存入哈希表中;否则,判断哈希表中存储的数字对是否与当前数字对满足条件,如果满足条件,则返回true。注意,在存储数字对时,我们将两个数字合并成一个整数来存储,这样可以避免重复数字对的问题。