解题思路:定义两个一样大小的数组,一个数组用来存放输入的数据,另一个数组则用来记录是否是负数的判断,然后对于第一个数组遍历,如果小于0,则转化为它的相反数,否则不做处理,然后使用冒泡排序或者选择排序(我这里用的是选择排序)将第一个也就是存放数据的数组进行排序,关键在于你还要对第二个数组执行与第一个数组相同的操作,否则数据位置变了,之前对负数的记录也就没用了,最后根据第二个数组判断输出是否带负号。
注意事项:
第二个数组也要跟着第一个数组进行交换操作。
参考代码:
int main()
{
int arr[100] = { 0 };
int n = 1;
while (scanf("%d",&n)!=EOF&&n) {
int arr2[100] = { 0 };
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
for (int i = 0; i < n; i++) {
if (arr[i] < 0)
arr[i] = 0 - arr[i], arr2[i] = 1;
}
for (int i = 0; i < n; i++) {
for (int j = i; j >= 0; j--) {
if (arr[j - 1] < arr[j] && j - 1 >= 0) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
temp = arr2[j];
arr2[j] = arr2[j - 1];
arr2[j - 1] = temp;
}
}
}
for (int i = 0; i < n; i++) {
if (arr2[i] == 1)
printf("-%d", arr[i]);
else
printf("%d", arr[i]);
if (i != n - 1)
printf(" ");
}
printf("\n");
}
return 0;
}
0.0分
0 人评分
点我有惊喜!你懂得!浏览:1330 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:624 |
关于C语言变量位置的问题浏览:272 |
有关字符,字符串的输入输出函数说明浏览:479 |
简单的a+b (C语言代码)浏览:531 |
程序员的表白 (C语言代码)浏览:598 |
模拟计算器 (C语言代码)浏览:2300 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:562 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:573 |
C二级辅导-公约公倍 (C语言代码)浏览:1311 |