C语言 输入4个整数,要求按由小到大的顺序输出
利用函数的模块化设计。
1、完成整体函数格局,输入、排序、输出。
2、输入函数代码如下:
3、排序函数代码如下:
4、输出函数代码如下:
5、执行结果:
扩展资料:
利用数组和循环结构实现排序功能,具体代码如下:
执行结果同上。
你可以利用 C 标准库 stdlib.h 里的 qsort( ) 完成任何类型的数组的快速排序:
#include
#include
int compare( const int *a, const int *b ) { return *b - *a; }
int main( ) {
int ia[ 4 ],
width = sizeof *ia,
num = sizeof ia / width,
j;
puts( "Enter four integers to be sorted in descending order:" );
for( j = 0; j < num; ++j )
scanf( "%d", &ia[ j ] );
qsort( ia, num, width, compare );
for( j = 0; j < num; ++j )
printf( "%d ", ia[ j ] );
}
调用 qsort( ) 只需要传入四个参数:
1)数组指针:指向要排序的数组
2)数组的元素个数
3)数组的元素字节长度
4)函数指针:指向我们定义的一个比较两个元素大小的函数
若是要 qsort( ) 做由小到大的排序,我们定义的函数的返回值和相应的条件必须是:
返回值 条件
====== =====
< 0 *a < *b
0 *a == *b
> 0 *a > *b
要达到以上的要求其实就只需写 “*a - *b” 。
而若是要 qsort( ) 做由大到小的排序,把 *a 和 *b 的位置换一换就行了。
这个程序给你举个实例讲解也许你就明白了
假设输入为1,3,4,2
1不大于3,第一个if不执行,目前顺序为1,3,4,2
1不大于4,第二个if不执行,目前顺序为1,3,4,2
1不大于2,第三个if不执行,目前顺序为1,3,4,2
3不大于4,第四个if不执行,目前顺序为1,3,4,2
3大于2,第五个if执行,实现交换,目前顺序为1,2,4,3
4大于3,第六个if执行,实现交换,最后顺序为1,2,3,4
其实你仔细想想,如果第一个if执行,实现交换,那么第二个if中的a已经是交换过后的那个较小的数。第三个同理。也就是说,前3个if执行完以后确保了第1个数是4个数字中最小的,第四第五确保第二个数在剩下的3个数中是最小的(也就是4个数字中第二小的),第6个if确保第三个数小于第四个数。这样子就实现了整个结构的排序。希望能帮到你。
t=a; a=c; c=t; 这是将a的值和c的值进行交换的意思。
设置一个中间变量t,保存a的值。
然后将c的值赋给a,此时a的值被覆盖,然后a原来的值保存在t里,所以c=t。
你卡住的语句的作用是如果a<c,就交换a c的值。先把a的值赋给t,再将c的值赋给a,最后将t的值赋给c.
通过中间变量t交换a和c中存放的数,执行后a存放原先存放在c中的数,c存放原先存放在a中的数
乾文丹红: #include"stdio.h" main() {int a[4],i,j; printf("请输入四个整数:\n"); //以空格分开// for(i=0;i<4;i++)scanf("%d",&a[i]); for(i=1;i<4;i++)for(j=0;j<=4-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("排列后的顺序是:\n"); for(i=0;i<4;i++)printf("%5d",a[i]); } 用VC++运行过了,没错!如有问题请联系!
南票区19260066327: 输入4个整数,要求按由小到大的顺序输出,用C语言怎么编程呀?求高人指点呀! - ?
乾文丹红: #include<stdio.h>#define MAX 4 //定义输入数的个数 void main () { int a[MAX], i, j, tmp; printf ("input %d numbers:\n", MAX); for (i = 0; i < MAX; i++) { scanf ("%d", a+i);for (j = 0; j < i; j++) //从第一个数开始与这个输入的数比较if (a[i] < a[j]) { //...
南票区19260066327: C语言 输入4个整数,要求按由小到大的顺序输出 - ?
乾文丹红: t=a; a=c; c=t; 这是将a的值和c的值进行交换的意思.设置一个中间变量t,保存a的值.然后将c的值赋给a,此时a的值被覆盖,然后a原来的值保存在t里,所以c=t.
南票区19260066327: C语言 输入4个整数 按从小到大 排列 - ?
乾文丹红: #include int main() { int t,a,b,c,d; printf("请输入4个整数:"); scanf("%d,%d,%d,%d",&a,&b,&c,&d); printf("\n a=%d,b=%d,c=%d,d=%d \n",a,b,c,d); if(a>b) {t=a; a=b; b=t;} if(a>c) {t=a; a=c; c=t;} if(a>d) {t=a; a=d; d=t;} if(b>c) {t=b; b=c; c=t;} ...
南票区19260066327: C语言编程题:输入4个整数,要求按由小到大顺序输出怎么编啊?(要用switch case语句) - ?
乾文丹红: #include<stdio.h> main() { int i,j,temp; int a[4]; printf("Please you input the four number you want to campare!\n"); for(i=0;i<4;i++) /*输入要比较的四个数字*/ scanf ("%d,",&a[i]);for(j=0;j<4;j++)/*采用冒泡排序法排序*/ {for (i=0;i<4-j;i++)if (a[...
南票区19260066327: c语言编程 输入4个整数,要求由小到大输出 - ?
乾文丹红: 道理都是一样的,再多就可以用循环了,不过4个数用循环不太爽~~,看下面的冒泡排序非循环4个数的实现呵呵: #include <stdio.h>int main(char* x ,char** y){ int temp,a,b,c,d;printf("please input num list:");scanf("%d,%d,%d,%d",&a,&...
南票区19260066327: C语言编程题:输入4个整数,要求按由小到大顺序输出怎么编啊? - ?
乾文丹红: 将四个数存到数组中,然后排序即可. 排序后,再利用循环输出. 代码: #include <stdio.h> int main() { int a[4],i,j; for(i = 0; i < 4; i ++) scanf("%d",&a[i]); for(i = 0; i < 3; i ++) for(j = i+1; j < 4; j ++) { int t; if(a[i]>a[j]) { t = a[i]; a[i] = a[j]; a[j] = t; } } for(i = 0; i < 4; i ++) printf("%d,",a[i]); }
南票区19260066327: (c语言)输入4个整数,要求按由小到大的顺序输出.谢谢!!! - ?
乾文丹红: #include <stdio.h> void main() { int a[4],temp,i,j; for(i=0;i<4;i++) scanf("%d",&a[i]); for(i=0;i<4;i++) for(j=i+1;j<4;j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]); }
南票区19260066327: 输入4个整数,要求从小到大排列,用C语言写程序 - ?
乾文丹红: #include <stdio.h> void main() { int a[4],b; printf("请输入四个整数:"); for(int i=0;i<4;i++) { scanf("%d",a[i]); } printf("由小到大顺序为:"); for(i=0;i<3;i++) { for(int j=i;j<4;j++) { if(a[i]>a[j]) { b=a[i]; a[i]=a[j]; a[j]=b; } } } for(i=0;i<4;i++) printf("%d",a[i]); }
南票区19260066327: 输入4个整数,按从小到大输出这四个数 用c语言 - ?
乾文丹红: int main() { int i,j,temp; int a[4]; for(i=0;i<4;i++) scanf("%d",&a[i]); for(i=0;i<4;i++) for(j=i+1;j<4;j++) {if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;} }for(i=0;i<4;i++) printf("%d\t",a[i]);return 0;}