用c++写程序:输入一个数组,数组类型为int,将数组里负数排在前面
时间: 2023-09-26 17:06:46 浏览: 207
C++实现对输入数字组进行排序
### 回答1:
您好,我可以回答这个问题。以下是用 C 语言编写的程序,可以将输入的 int 类型数组中的负数排在前面:
```
#include <stdio.h>
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int arr[n], neg[n], pos[n];
int neg_count = , pos_count = ;
printf("请输入数组元素:");
for (int i = ; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] < ) {
neg[neg_count] = arr[i];
neg_count++;
} else {
pos[pos_count] = arr[i];
pos_count++;
}
}
printf("负数排在前面的数组为:");
for (int i = ; i < neg_count; i++) {
printf("%d ", neg[i]);
}
for (int i = ; i < pos_count; i++) {
printf("%d ", pos[i]);
}
printf("\n");
return ;
}
```
希望能对您有所帮助。
### 回答2:
可以使用以下方法编写一个C程序来将数组中的负数排在前面:
```c
#include <stdio.h>
void rearrangeArray(int arr[], int n) {
int i, j, temp;
j = 0;
// 将负数移动到数组的前面
for (i = 0; i < n; i++) {
if (arr[i] < 0) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
j++;
}
}
}
int main() {
int arr[8] = {-1, 2, -3, 4, -5, 6, -7, 8};
int n = sizeof(arr) / sizeof(arr[0]);
printf("原数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
rearrangeArray(arr, n);
printf("\n重新排列后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:
```
原数组:-1 2 -3 4 -5 6 -7 8
重新排列后的数组:-1 -3 -5 -7 2 4 6 8
```
在这个程序中,我们使用了一个变量`j`来跟踪负数的数量。我们遍历整个数组,如果我们找到一个负数,就将其与`arr[j]`位置的元素交换,并将`j`增加1。这样,我们就可以确保所有的负数都排在了数组的前面。
注意,此程序假定数组中的元素只包含整数。如果遇到其他类型的数组,可以相应地调整程序。
### 回答3:
使用C语言编写程序,实现将数组中的负数排在前面的功能。程序的大致思路如下:
1. 首先声明一个整型数组及其长度变量,用于存储用户输入的数组。
2. 获取用户输入的数组长度,并根据长度动态分配内存空间给数组。
3. 循环读取用户输入的数组元素,并存储到数组中。
4. 声明两个变量,分别用于记录负数的个数和正数(或0)的个数。
5. 循环遍历数组,统计负数和正数(或0)的个数。
6. 声明一个新数组,用于存放排序后的数组。
7. 循环遍历数组,将负数存入新数组的前面部分。
8. 再次循环遍历数组,将正数和0存入新数组的后面部分。
9. 输出排序后的数组。
10. 释放动态分配的内存空间。
下面是使用C语言编写的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
printf("请输入数组第%d个元素:", i);
scanf("%d", &arr[i]);
}
int negCount = 0; // 负数的个数
int posCount = 0; // 正数或0的个数
for (int i = 0; i < n; i++) {
if (arr[i] < 0) {
negCount++;
} else {
posCount++;
}
}
int *sortedArr = (int *)malloc(n * sizeof(int));
int negIndex = 0; // 存放负数的索引
int posIndex = negCount; // 存放正数或0的索引
for (int i = 0; i < n; i++) {
if (arr[i] < 0) {
sortedArr[negIndex++] = arr[i];
} else {
sortedArr[posIndex++] = arr[i];
}
}
printf("排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", sortedArr[i]);
}
printf("\n");
free(arr);
free(sortedArr);
return 0;
}
```
通过运行上述程序,用户可以按照提示输入数组长度和元素,然后得到将负数排在前面的排序后的数组。
阅读全文