c语言中输入一串数字,要求负数放左边,非负数放右边
时间: 2024-10-02 14:03:23 浏览: 27
C语言中将数字转换为字符串的方法
在C语言中,你可以通过使用标准库函数`scanf`读取用户输入,并结合一些逻辑判断来实现这个需求。下面是一个简单的示例程序:
```c
#include <stdio.h>
void separate_numbers(int arr[], int *left, int *right) {
int i = 0, j = 0;
while (true) {
int num;
if (scanf("%d", &num) == EOF || num == -1) { // 如果遇到EOF或用户输入非数字,跳出循环
break;
}
if (num >= 0) { // 非负数放到右侧数组
arr[right++] = num;
} else { // 负数放到左侧数组
arr[left++] = num;
}
// 清空缓存区,避免影响下一个输入
getchar();
}
arr[left] = arr[right] = 0; // 确保左右数组都有结束标记
}
int main() {
int left[10], right[10]; // 假设我们有两个大小为10的数组
separate_numbers(left, left, right);
printf("Non-negative numbers: ");
for (int i = 0; i < sizeof(right)/sizeof(right[0]); i++) {
printf("%d ", right[i]);
}
printf("\nNegative numbers: ");
for (int i = 0; i < sizeof(left)/sizeof(left[0]); i++) {
printf("%d ", left[i]);
}
return 0;
}
```
在这个程序里,我们首先初始化两个指针 `left` 和 `right` 分别指向左右两侧的数组。然后在一个无限循环中等待用户输入,如果输入的是负数就放入 `left` 数组,如果是非负数则放入 `right` 数组。注意最后使用 `getchar()` 清空缓冲区,以防干扰下一次的输入。
运行此程序后,它会将输入的负数放在前面,非负数放在后面显示出来。
阅读全文