用C语言编程:用选择法对10个整数排序,10个整数用scanf函数输入
#include
int main()
{
int i,j,min,t,a[10]={2,4,8,3,6,9,7,222,64,88};
printf("排序前的序列为:
");
for(i=0;i<10;i++)//输出排序前的序列
{
printf("%5d",a);
}
printf("
");
for(i=0;i<9;i++)
{
min=i;//把每次循环的第一个数作为最小值
for(j=i+1;j<10;j++)
{
if(a[min]>a[j])
min=j;//交换
}
if(min!=i)//说明第一个数不是最小数,所以将a[i+1]~a[10]中最小值与a对换
{
t=a[min];
a[min]=a;
a=t;
}
}
printf("排序后的序列为:
");
for(i=0;i<10;i++)//输出排序后的序列
printf("%5d",a);
printf("
");
return 0;
}
扩展资料:return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
#include//标准输入输出函数调用需要此头文件、就是那个printf和scanf函数要用的
void main()//主函数
{int i,j,min,temp,a[10];
printf("请输入:
"); //屏幕输出引号内的字符然后换行
for(i=1;i<=10;i++) //从键盘上循环输入10个数据
{printf("a[%d]=",i);
scanf("%d",&a[i]);} //读取数据函数
printf("
"); //换行
for(i=1;i<=9;i++) //比较10个数据
{min=i; //每次比较的最小数据赋给min
for(j=i+1;j<=10;j++) //比较循环控制
if (a[min]>a[j]) min=j; //大小数值判断
temp=a[i];
a[i]=a[min]; //a[i]里存放的最小数值
a[min]=temp;}
printf("
从大到小排列是:
"); //输出字符
for(i=10;i>=1;i--) //循环输出按大小排列的数据
printf("%5d",a[i]);
printf("
");//每输出一个数据换行
}
1、打开visual C++ 6.0,准备一个空白的c语言文件,引入头文件,在main函数中定义变量和数组:
2、接下来用scanf函数输入的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互换,最后输出排序的结果:
3、编译运行程序,输入任意的10个数,回车后即可看到排序后的结果。以上就是c语言中选择排序的用法:
用选择法对10个整数递增排序。10个整数用scanf函数输入
选择法:假设集合A有n个元素,按以下算法完成递增排序:
(1)\x05以一个元素为基准,从一个方向开始扫描,比如以A[0]为基准,从左至右扫描;
(2)\x05用A[0]右边的A[1]-A[n-1]与A[0]比较,找出最小的元素,将其与A[0]交换;
(3)\x05将基准位置右移一位,即移到A[1],重复(1)和(2)动作,比如,以A[1]为基准,找出A[1]-A[n-1]中最小的,将其与A[1]交换。一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
#include<stdio.h>
void main()
{
int i,j,min,temp,a[11];
printf("enter data;
");
for(i=1;i<=10;i++)
{printf("a[%d]=",i);
scanf("%d",&a<i>);
}
printf("
");
printf("The original numbers:
");
for(i=1;i<=10;i++)
printf("%5d",a<i>);
printf("
");
for(i=1;i<=9;i++)
{min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j])min=j;
temp=a<i>;
a<i>=a[min];
a[min]=temp;
}
printf("
The sored numbers;
");
for(i=1;i<=10;i++)
printf("%5d",a<i>);
printf("
");
}
扩展资料:
选择排序每次找出所剩元素中最小(大)的值
void selectionSort(int arr[],int n)
{
for(int i=0;i<n;i++){
//寻找[i,n)区间的最小值
int minIndex=i;
for(int j=i+1;j<n;j++)
if(arr[j]<arr[minIndex])
minIndex=j;
swap(arr<i>,arr[minIndex]);
}
}
参考资料
百度百科——算法
一、算法思想
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据有序。
选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。选择排序有简单选择排序、堆排序等多种算法。下面的分析、操作、程序均以简单选择排序算法为例进行讲解。
二、操作过程
初始状态: (49) 38 65 97 76 13 27 49 32 13
第1趟: i k
13 (38) 65 97 76 49 27 49 32 13
第2趟: i k
13 13 (65) 97 76 49 27 49 32 38
第3趟: i k
13 13 27 (97) 76 49 65 49 32 38
第4趟: i k
13 13 27 32 (76) 49 65 49 97 38
第5趟: i k
13 13 27 32 38 (49) 65 49 97 76
第6趟: i,k
13 13 27 32 38 49 (65) 49 97 76
第7趟: i k
13 13 27 32 38 49 49 (65) 97 76
第8趟: i,k
13 13 27 32 38 49 49 65 (97) 76
第9趟: i k
13 13 27 32 38 49 49 65 76 97
三、参考程序
#include <stdio.h>
#define MAX 10
/* 从键盘输入n个数,保存在数组中 */
void input(int arr[], int n);
/* 使用简单选择排序对数组中的元素按非递减有序排列 */
void sort(int arr[], int n);
/* 输出数组中的所有元素 */
void display(int arr[], int n);
int main()
{
int arr[MAX];
printf("请输入%d个数:
", MAX);
input(arr, MAX);
printf("排序前:
");
display(arr, MAX);
sort(arr, MAX);
printf("排序后:
");
display(arr, MAX);
return 0;
}
/* 从键盘输入n个数,保存在数组中 */
void input(int arr[], int n)
{
int i;
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
}
/* 使用简单选择排序对数组中的元素按非递减有序排列 */
void sort(int arr[], int n)
{
int i, j, k;
int temp;
for(i=0; i<n-1; i++)
{
k = i;
for(j=i+1; j<n; j++)
{
if(arr[j] < arr[k])
{
k = j;
}
}
if(k != i)
{
temp = arr[k];
arr[k] =arr[i];
arr[i] = temp;
}
}
}
/* 输出数组中的所有元素 */
void display(int arr[], int n)
{
int i;
for(i=0; i<n; i++)
{
printf("%d ", arr[i]);
}
printf("
");
}
四、运行测试
请输入10个数:
49 38 65 97 76 13 27 49 32 13
排序前:
49 38 65 97 76 13 27 49 32 13
排序后:
13 13 27 32 38 49 49 65 76 97
#include<stdio.h>
void main()
{
int i[10],a=0,b=0,temp,k;
printf("请输入十个整数:");
for(;a<10;a++)
scanf("%d",&i[a]);
for(a=0;a<9;a++)
{
k=a;
for(b=1;b<10-a;b++)
{ if(i[b]>i[k])
{k=b;}
}
if(k!=a)
{temp=i[a];i[a]=i[k];i[k]=temp; }
}
printf("从小到大排序:");
for(a=0;a<10;a++)
printf("%d\t",i[a]);
printf("\n");
}
#include<stdio.h>
void main()
{
int i[5],a=0,b=0,temp;
printf("请输入十个整数:");
for(;a<5;a++)
scanf("%d",&i[a]);
for(a=1;a<10;a++)
{
for(b=0;b<10-a;b++)
{
if(i[b]>i[b+1])
{
temp = i[b];
i[b] = i[b+1];
i[b+1] = temp;
}
}
}
printf("从小到大排序:");
for(a=0;a<10;a++)
printf("%d\t",i[a]);
printf("\n");
}
C语言中的选择是如何实现的?
实现选择的要素在C语言中有以下几点:1. 变量和条件语句:实现选择的基础是使用变量存储状态和条件语句判断这些状态。常见的条件语句有if语句和switch语句。通过设定不同的条件,程序可以根据这些条件做出不同的选择。2. 数据结构:选择操作通常涉及到数据的处理,因此数据结构是实现选择的关键要素之一。在C...
c语言编程题:用选择法对数组中15个整数按由小到大排序。
= i){ t = a[min]; a[min] = a[i]; a[i] = t; } } }int main(){ int a[15],n,i; n=15; for(i=0;i<n;i++) a[i]=rand(); select_sort(a,n); for(
C语言编程 题目描述 使用选择排序法对数组元素进行排序,要求输出每一 ...
include<stdio.h> int main(){int n,i,j,k,t,a[20];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]<a[k])k=j;t=a[i];a[i]=a[k];a[k]=t;for(j=0;j<n;j++)printf("%d ",a[j])...
c语言编程题:分别用冒泡法和选择法对输入的10个整数由大到小排序_百度...
include <stdio.h> void maopao(int *a){ int temp=0;for(int i=0;i<10-1;++i)\/\/只需要冒泡9个数最后一个就已经有序了 for(int j=0;j<10-i-1;++j)\/\/j的取值需<10-i-1;为何-1,if(a[j]<a[j+1]){ temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } void xuanze(...
用C语言编程:从5,6,7,8,9这五个数中选中四个不同的数字组成能被3,5...
include <stdio.h>void main(){int i,j,k,l,a[5]={5,6,7,8,9};for(i=0;i<5;i++)for(j=0;j<5&&j!=i;j++)for(k=0;k<5&&k!=i&&k!=j;k++)for(l=0;l<5&&l!=i&&l!=j&&l!=k;l++)if((a[i]*1000+a[j]*100+a[k]*10+a[l])%(3*5*7)==0)printf("...
急求,字符串比较大小,用c语言编程
int i,j,n=10,type=1;\/\/n为实际字符串个数,type为排序方法,1:表示冒泡法,2.简单选择法 void sort(){ char temp[200];if(type==1){ for(j=0;j<n;j++)for(i=0;i<n-j-1;i++){ if(strcmp(a[i],a[i+1])>0){ strcpy(temp,a[i]);strcpy(a[i],a[i+1]);strcpy(a...
C语言编程 从键盘输入一个年份和月份,输出该月有多少天(考虑闰年)_百度...
用switch选择的:#include<stdio.h>int main(){int y,m;printf("请依次输入年,月:\\n"); scanf("%d,%d",&y,&m); \/\/上机时注意打逗号,也可修改为其他格式switch(m){case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("这个月有31天\\n");break;case 2 : if(y%4=...
用C语言编程:从键盘输入10个学生的成绩,由高到低排序输出成绩
int main(){ int s [10], i, j, t;cout << "输入10个数:";for (i = 0; i < 10; i++){ cout << "请输入第" << i+1 << "名学生的成绩;" << endl;cin >> s[i];} for (i = 0; i<10; i++){ for (j = 0; j<9 - i; j++)if (s[j]<s[j + 1])...
编程,用c语言编辑
编程,用c语言编辑 图书管理系统功能要求:选择1:创建图书信息。例如向图书档案中添加图书基本信息:ISBN号、书名、出版社、出版日期、作者、图书索引号(按专业来分类)、借阅次数、借阅人员、是否在库... 图书管理系统功能要求:选择1:创建图书信息。例如向图书档案中添加图书基本信息:ISBN号、书名、出版社、出版日期、...
c语言编程用哪个软件好?
目前,就分享这6个不错的C语言编程软件吧,对于日常C语言学习使用来说,完全够用了,当然,还有许多其他编程软件,像C-free,Xcode等也都非常不错,选择适合自己的一款就行,网上也有相关资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行...
芝侦积雪: #include <stdio.h> void main() { void sort(int arry[],int n);//函数声明 int a[10],i; printf("enter the array:\n"); for(i=0;i<10;i++) //输入十个数 scanf("%d",&a[i]); sort(a,10);//调用排序函数 printf("the sorted array:\n"); for(i=0;i<10;i++) //输出十个...
安泽县17652153957: C语言 怎么样用选择法对10个整数排序? - ?
芝侦积雪: 选择法排序是一种简单的容易实现的对数据排序的算法.以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同).要求对其元素排序使之递增有序.首先以一个元素为基准,从一个方向开始扫描,比如从左至...
安泽县17652153957: C语言 用选择法对10个整数按从大到小顺序排序 - ?
芝侦积雪: for(p=a,i=0;i<10;i++) { printf("%d",*p); p++; 少了“}” void sort(int x[],int n); 多了“;”
安泽县17652153957: C语言,用选择法对数组中10个整数按由小到大排序?求解释!!! - ?
芝侦积雪: 首先以array[0]作为参照,从左到右扫描,找到最小的数据与array[0]位置交换. 接下来以array[1]作为参照,重复上述过程. ... k=i定位参照 k=j找到剩下数组中最小值
安泽县17652153957: 用C语言用选择法对10个整数按升序排列(指针变量表示数组) - ?
芝侦积雪: 选择法: #include "stdio.h" main() { int a[11]; int i,j,k,n; for (i=1;i<11;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) for(j=i+1;j<=10;j++) { (a[i]>a[j])?(a[0]=a[i],a[i]=a[j],a[j]=a[0]):(a[0]=0); } for(i=1;i<11;i++) printf("%5d",a[i]); } 起泡法: #include "stdio....
安泽县17652153957: C语言编程题:用选择法对10个整数排序 - ?
芝侦积雪: #include main() { int a[10],i,j,t; printf("please input ten int numbers:"); for(i=0;ia[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0;i
安泽县17652153957: c语言 选择法对10个整数降序排列 - ?
芝侦积雪: #include "stdio.h"// #include <stdlib.h>// #include <time.h>// void Selectsort(int *p){int i,j,k;for(i=0;i<10;i++){k=i;for(j=k+1;j<10;j++)if(*(p+k)<*(p+j)) k=j;j=*(p+i);*(p+i)=*(p+k);*(p+k)=j;} }void main(void){int a[10],i;srand((unsigned)time(...
安泽县17652153957: c语用选择法对10个整数进行由小到大排序 - ?
芝侦积雪: 冒泡排序法1 跟 2 比 2跟3比 ....8根9比 9跟10比 前面的比后面的大就把这两个换一下 做一个 int count 如果一次 1-10冒泡排序 有前面的比后面的大 count=1 最外面做一个 while count=0
安泽县17652153957: 用C语言编程:用选择法对10个整数排序,10个整数用scanf函数输入 - ?
芝侦积雪: #include<stdio.h> void main() { int i[10],a=0,b=0,temp,k; printf("请输入十个整数:"); for(;a<10;a++) scanf("%d",&i[a]); for(a=0;a<9;a++) { k=a; for(b=1;b<10-a;b++) { if(i[b]>i[k]) {k=b;} } if(k!=a) {temp=i[a];i[a]=i[k];i[k]=temp; } } printf("从小到大排序:"); for(a=0;a<10;a++) printf("%d\t",i[a]); printf("\n"); }
安泽县17652153957: 用选择法对十个数排序(用C语言) - ?
芝侦积雪: #include <stdio.h> main() { static int temp,a[]={7,5,6,8,9,4,1,0,2,3}; int i,j; for (i=0;i<n;i++) for (j=i+1;j<n;j++) if (a[j]<a[i]) { temp=a[j]; a[j]=a[i]; a[i]=temp; } printf("%d",a[i]); }