#include <stdio.h> #include <stdlib.h> void ChangeSort(int num[], int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if (num[j] > num[i]) { temp = num[j]; num[j] = num[i]; num[i] = temp; } } } } int main() { int num[11] = { 1,3,2,5,4,7,6,9,8,10,11 }; ChangeSort(num, 5); for (int i = 0; i < 11; i++) { printf("%d", num[i]); } return 0; }改为降序排列
时间: 2024-02-14 18:08:54 浏览: 19
将比较条件中的`num[j] > num[i]`改为`num[j] < num[i]`即可将升序排序改为降序排序。修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
void ChangeSort(int num[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (num[j] < num[i]) { // 将比较条件改为小于
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
}
}
int main() {
int num[11] = { 1,3,2,5,4,7,6,9,8,10,11 };
ChangeSort(num, 11);
for (int i = 0; i < 11; i++) {
printf("%d ", num[i]);
}
return 0;
}
```
输出结果为:
```
11 10 9 8 7 6 5 4 3 2 1
```
可以看到,数组已经按照降序排列。
相关问题
#include <stdio.h> #include <stdlib.h> void Swap(int x, int y){ int tmp; tmp = x; x = y; y = tmp; } int main(){ int num1 = 10; int num2 = 20; Swap(num1,num2); printf("num1 = %d,num2 = %d\n",num1,num2); } 为什么这个程序输出结果不交换,原因及多种正确代码表示
这个程序输出结果不交换的原因是因为在 Swap 函数中,传入的参数是按值传递(pass by value),也就是说,在函数内部修改的是传入参数的副本,而不是传入参数本身。因此,函数内部的交换操作并不会影响到调用函数时传入的参数。要解决这个问题,可以使用指针或者引用作为函数参数,这样就可以修改传入参数的值。以下是两种正确的代码表示:
使用指针:
```c
#include <stdio.h>
#include <stdlib.h>
void Swap(int *x, int *y){
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main(){
int num1 = 10;
int num2 = 20;
Swap(&num1,&num2);
printf("num1 = %d,num2 = %d\n",num1,num2);
}
```
使用引用:
```c
#include <stdio.h>
#include <stdlib.h>
void Swap(int &x, int &y){
int tmp;
tmp = x;
x = y;
y = tmp;
}
int main(){
int num1 = 10;
int num2 = 20;
Swap(num1,num2);
printf("num1 = %d,num2 = %d\n",num1,num2);
}
```
在以上两种情况下,传入的参数都可以被正确的交换。
C语言程序填空:从键盘输入10个字符,将其全部输出到一个磁盘文件“data.dat"中保存起来#include<stdio.h> #include<conio.h> #include<stdlib.h> void main() { FILE *fp; int num; int i=0; if((fp=fopen("data.dat","w"))==NULL) { printf("打不开文件\n"); exit(0); } while(i<=9) { fprintf(fp,"%d",num); i++; } }
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main() {
FILE *fp;
char ch[10];
int i=0;
if((fp=fopen("data.dat","w"))==NULL) {
printf("打不开文件\n");
exit(0);
}
printf("请输入10个字符:\n");
while(i<=9) {
ch[i] = getch();
fprintf(fp,"%c",ch[i]);
i++;
}
fclose(fp);
printf("已将输入的字符保存到文件data.dat中!");
}
注意:程序中使用了 getch() 函数,需要包含 conio.h 头文件。另外,文件操作完成后需要关闭文件,使用 fclose() 函数。