C语言三个数从小到大排序
【C语言简单排序】——整数奇偶排序
【C语⾔简单排序】——整数奇偶排序7-1 整数奇偶排序 给定10个整数的序列,要求对其重新排序。
排序要求: 1.奇数在前,偶数在后; 2.奇数按从⼤到⼩排序; 3.偶数按从⼩到⼤排序。
输⼊格式: 输⼊⼀⾏,包含10个整数,彼此以⼀个空格分开,每个整数的范围是⼤于等于0,⼩于等于30000。
输出格式: 请在这⾥描述输出格式。
例如:对每⼀组输⼊,在⼀⾏中输出A+B的值。
输⼊样例: 按照要求排序后输出⼀⾏,包含排序后的10个整数,数与数之间以⼀个空格分开。
4731311120473498输出样例: 在这⾥给出相应的输出。
例如:4713117304123498思路: 这⾥分析题⽬,发现有三种情况下需要进⾏排序: 1.a[j]为奇数,a[j+1]为偶数 2.a[j]为奇数,a[j+1]为奇数且a[j] < a[j+1] 3.a[j]为偶数,a[j+1]为偶数且a[j] > a[j+1]代码:#include<stdio.h>int main(){int n = 10,i,j,tmp;int a[10];for(i = 0; i < n; i++){scanf("%d",&a[i]);}for(i = 0; i < n-1; i++){for(j = 0; j < n-1; j++){if(a[j] % 2 == 0 && a[j+1] % 2 != 0 || a[j] % 2 != 0 && a[j+1] % 2 != 0 && a[j] < a[j+1] || a[j] % 2 == 0 && a[j+1] % 2 ==0 && a[j] > a[j+1]) {tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;}}}for(i = 0; i < n; i++){printf("%d ",a[i]);}return0;}。
C语言常用算法归纳
C语言常用算法归纳应当掌握的一般算法一、基本算法:交换、累加、累乘二、非数值计算常用经典算法:穷举、排序(冒泡,选择)、查找(顺序即线性)三、数值计算常用经典算法:级数计算(直接、简接即递推)、一元非线性方程求根(牛顿迭代法、二分法)、定积分计算(矩形法、梯形法)四、其他:迭代、进制转换、矩阵转置、字符处理(统计、数字串、字母大小写转换、加密等)、整数各数位上数字的获取、辗转相除法求最大公约数(最小公倍数)、求最值、判断素数(各种变形)、数组元素的插入(删除)、二维数组的其他典型问题(方阵的特点、杨辉三角形)详细讲解一、基本算法1.交换(两量交换借助第三者)例1、任意读入两个整数,将二者的值交换后输出。
main(){ int a,b,t;scanf("%d%d",&a,&b);printf("%d,%d\n",a,b);t=a; a=b; b=t;printf("%d,%d\n",a,b);}【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。
假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。
其中t为中间变量,起到“空杯子”的作用。
注意:三句赋值语句赋值号左右的各量之间的关系!【应用】例2、任意读入三个整数,然后按从小到大的顺序输出。
main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);/*以下两个if语句使得a中存放的数最小*/if(a>b){ t=a; a=b; b=t; }if(a>c){ t=a; a=c; c=t; }/*以下if语句使得b中存放的数次小*/if(b>c) { t=b; b=c; c=t; }printf("%d,%d,%d\n",a,b,c);}2.累加累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。
学习C语言之用if语句比较三个数的大小[大全5篇]
学习C语言之用if语句比较三个数的大小[大全5篇]第一篇:学习C语言之用if语句比较三个数的大小# include int main(){ int a , b , c , max , min;printf(“输入三个数比较大小以空格隔开:n”);scanf(''%d %d %d“,&a,&b,&c);if(a>b){max=a;min =b;} else{max=b;min =a;} if(max{max=c;} if(min>c){min=c;} printf(”max=%d,min=%d",max.min);return 0;}第二篇:C语言实验题——三个数排序述:输入三个整数x,y,z,请把这三个数由小到大输出。
输入:输入数据包含3个整数x,y,z,分别用逗号隔开。
输出:输出由小到大排序后的结果,用空格隔开。
样例输入2,1,3样例输出2 3#includeint main(){int *p1,p,*p2,*p3,a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1>*p2){p=*p1;*p1=*p2;*p2=p;}if(*p1>*p3){p=*p1;*p1=*p2;*p2=p;}if(*p2>*p3){p=*p2;*p2=*p3;*p3=p;}if(*p1>*p3){p=*p1;*p1=*p2;*p2=p;}if(*p2>*p3){p=*p2;*p2=*p3;*p3=p;}printf(“%d %d %dn”,a,b,c);return 0;}第三篇:C语言常用语句1、putchar函数:putchar函数(字符输出函数)的作用是向终端输出一个字符。
一般形式为:putchar(c)输出字符变量c的值。
C语言程序简单例子
实验二参考答案1.输入两个整型数字,输出他们的和。
#include<stdio.h>main(){int a, b, sum;scanf(“%d%d”, &a, &b);sum=a+b;printf(“a+b=%d”, sum);}2.输入两个实型数,输出他们的和与乘积。
#include<stdio.h>main(){float a, b, sum, product;scanf(“%f%f”, &a, &b);sum=a+b;product=a*b;printf(“a+b=%5.2f, a*b =%5.2f”, sum, product);}3.求方程的根(设)(其中a,b,c的值由键盘输入)。
#include<stdio.h>#include<math.h>main(){float a, b, c, dt, x1, x2;scanf(“%f%f%f”, &a, &b, &c);dt=sqrt(b*b-4*a*c);x1=(-b+dt)/(2*a);x2=(-b-dt)/(2*a);printf(“x1=%5.2f, x2 =%5.2f”, x1, x2);}4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)#include<stdio.h>main(){int h, f, x,y;scanf(“%d%d”, &h, &f);x=2*h-f/2;y=f/2-h;printf(“x=%d, y =%d”, x, y);}实验三参考答案1.输入三个数a、b、c,要求按由小到大的顺序输出。
#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c); if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}printf(“%f,%f,%f”,a,b,c);}2.编写程序,输入三角形xx a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
C语言入门必学—10个经典C语言算法
C语言入门必学—10个经典C语言算法C语言是一种广泛使用的编程语言,具有高效、灵活和易学的特点。
它不仅在软件开发中被广泛应用,也是计算机科学专业的必修课。
在学习C语言的过程中,掌握一些经典的算法是非常重要的。
本文将介绍10个经典C语言算法,帮助读者更好地了解和掌握C语言。
一、冒泡排序算法(Bubble Sort)冒泡排序算法是最简单、也是最经典的排序算法之一。
它通过不断比较相邻的元素并交换位置,将最大(或最小)的元素逐渐“冒泡”到数组的最后(或最前)位置。
二、选择排序算法(Selection Sort)选择排序算法是一种简单但低效的排序算法。
它通过不断选择最小(或最大)的元素,并与未排序部分的第一个元素进行交换,将最小(或最大)的元素逐渐交换到数组的前面(或后面)。
三、插入排序算法(Insertion Sort)插入排序算法是一种简单且高效的排序算法。
它通过将数组分为已排序和未排序两个部分,依次将未排序部分的元素插入到已排序部分的合适位置。
四、快速排序算法(Quick Sort)快速排序算法是一种高效的排序算法。
它采用了分治的思想,通过将数组分为较小和较大两部分,并递归地对两部分进行排序,最终达到整个数组有序的目的。
五、归并排序算法(Merge Sort)归并排序算法是一种高效的排序算法。
它采用了分治的思想,将数组一分为二,递归地对两个子数组进行排序,并将结果合并,最终得到有序的数组。
六、二分查找算法(Binary Search)二分查找算法是一种高效的查找算法。
它通过不断将查找范围折半,根据中间元素与目标值的大小关系,缩小查找范围,最终找到目标值所在的位置。
七、递归算法(Recursive Algorithm)递归算法是一种通过自我调用的方式解决问题的算法。
在C语言中,递归算法常用于解决树的遍历、问题分解等情况。
八、斐波那契数列算法(Fibonacci Sequence)斐波那契数列是一列数字,其中每个数字都是前两个数字的和。
C语言实验题——三个数排序
C语言实验题——三个数排序第一篇:C语言实验题——三个数排序述:输入三个整数x,y,z,请把这三个数由小到大输出。
输入: 输入数据包含3个整数x,y,z,分别用逗号隔开。
输出:输出由小到大排序后的结果,用空格隔开。
样例输入2,1,3样例输出2 3#includeint main(){int *p1,p,*p2,*p3,a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1>*p2){p=*p1;*p1=*p2;*p2=p;}if(*p1>*p3){p=*p1;*p1=*p2;*p2=p;}if(*p2>*p3){p=*p2;*p2=*p3;*p3=p;}if(*p1>*p3){p=*p1;*p1=*p2;*p2=p;}if(*p2>*p3){p=*p2;*p2=*p3;*p3=p;}printf(“%d %d %dn”,a,b,c);return 0;}第二篇:《语言连贯:排序》教案海湾中学语文组《排序专项训练》教案一、学习目标:掌握句子排序的几种方法;灵活准确地解答各类排序题。
二、考点解读:排序即“排列正确的顺序”,就是要求语言具有“合理的语序”,也就是要求句间排列要合乎语法规范和语言表达习惯。
语段内部的句子排列次序是根据语言表达的需要进行的正确组合,这种组合具有不可随意更改的逻辑性。
三:中考回放(2007深圳中考题)请选出下列句子排序正确的一项()(2分)⑴他们对社会的发展做出了突出贡献,他们的事迹生动感人,广为流传。
⑵在人类历史的长河中,曾经出现过许多杰出人物。
⑶学习他们的精神,有利于我们的成长。
⑷他们中有叱咤风云的政治家,有决胜千里的军事家,有博学睿智的科学家……A ④③①②B ②④①③C ①②④③ 四:方法技巧:一般来说,语段的排序主要涉及到以下一些因素:①空间顺序:或从上到下,或从左到右,或从里到外。
c语言答案
1、输入两个数,输出较大数的平方值。
#include<stdio.h>main(){int a,b,t;printf("Please enter two numbers:");scanf("%d%d",&a,&b);if(a>b){a=t;a=b;b=t;}printf("The result is:%d",b*b);getch();}2、计算并输出50-100间的数的和。
#include "stdio.h"main(){ int i,sum;for(i=50;i<=100;i++)sum=sum+i;printf("sum is %d",sum);getch();}3、用数组编程,有一个4×4的矩阵,编程序计算并输出对角线元素之和#include<stdio.h>main(){int a[4][4],i,j,sum=0;printf("Please enter 16 numbers:");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j)sum=sum+a[i][j];printf("The result is:%d",sum);getch();}4、编写程序,通过键盘输入2个整数,计算并输出它们的平均值。
#include "stdio.h"main(){ int i,j,avg;printf("enter two number:/n") ;scanf("%d%d",&i,&j);avg=(i+j)/2;printf("avg is %d",avg);getch();}5、编写程序,在屏幕上输出字符串"2011 C test"。
C语言实验2-6参考答案
实验二参考答案1.输入两个整型数字,输出他们的和。
#include<stdio.h>main(){int a, b, sum;scanf(“%d%d ”, &a, &b);sum=a+b;printf(“a+b=%d ”, sum);}2.输入两个实型数,输出他们的和与乘积。
#include<stdio.h>main(){float a, b, sum, product;scanf(“%f%f ”, &a, &b);sum=a+b;product=a*b;printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product);}3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。
#include<stdio.h>#include<math.h>main(){float a, b, c, dt, x1, x2;scanf(“%f%f%f ”, &a, &b, &c);dt=sqrt(b*b-4*a*c);x1=(-b+dt)/(2*a);x2=(-b-dt)/(2*a);printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2);}4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)#include<stdio.h>main(){int h, f, x,y;scanf(“%d%d”, &h, &f);x=2*h-f/2;y=f/2-h;printf(“x=%d, y =%d”, x, y);}实验三参考答案1.输入三个数a、b、c,要求按由小到大的顺序输出。
#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}printf(“%f,%f,%f”,a,b,c);}2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
C语言常见排序算法
6.1.5 选择排序
排序过程:
首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数 交换—第一趟选择排序,结果最小的数被安置在第一个元素位 置上 再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录, 将它与第二个数交换—第二趟选择排序 重复上述过程,共经过n-1趟排序后,排序结束
6.1.3 直接插入排序
实用例子:
已知待序的一组记录的初始排列为:21, 25, 49, 25*, 16, 08
21 25 49 25* 16 08 012345
6.1.3 直接插入排序
实用例子:
i=1
21 25 49 25* 16 08 25 012345 temp
i=2 i=3
21 25 49 25* 16 08 49 012345 temp
6.1.1Leabharlann 冒泡排序算法实例21
21
21
21
16
08
25
25
25
16
08
16
49
25
16
08
21
21
25
16
08
25
25
25
16
08
25
25
25
25
08
49
49
49
49
49
6.1.1 冒泡排序
算法实现
输入n 个数给a[1] 到 a[n] for j=1 to n-1
for i=1 to n-j
真
if ( temp < r[j-1] ) r[j] = r[j-1];
C语言实验题
return 0;
}
矩阵转置
题目描述:输入N*N的矩阵,输出它的转置矩阵。
输入:第一行为整数N(1≤N≤100)。
接着是一个N*N的矩阵。
输出:转置矩阵。
样例输入:2
1 2
1 2
样例输出:1 1
2 2
代码:#include<stdio.h>
int main()
{int a[100][100];
输入:输入三边a、b、c
输出:输出面积,保留3位小数。
样例输入:1 2 2.5
样例输出:0.950
代码:int main()
{
float f,c;
scanf("%f",&f);
c=5*(f-32)/9;
printf("%.2f",c);
return 0;
}
一元二次方程
题目描述:解一元二次方程ax2+bx+c=0的解。
scanf("%d",&a[i][j]);}
for(i=0;i<n;i++)
{for(j=0;j<=i;j++)
s=s+a[i][j];}printf("%d",s);return 0;
}
单词统计
题目描述:从键盘输入一行字符,统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。
输入:输入只有一行句子。仅有空格和英文字母构成。
输出:输出数据只有一个,即摄氏温度,保留2位小数。
样例输入:32.0
样例输出:0.00
C语言编程练习题与答案 选择结构2-3
if (b==1 || b==3 || b==5 || b==7 || b==8 || b==10 || b==12) printf("%d",31);
else printf("%d",30); }
return 0; }
2.测试数据 (不提供,请在网站上进行测试)
三、判断一个数能否被 2、3、5 整数(codeup,21662,原题,25 日第 5 题升级)答案 1.源代码: #include <stdio.h>
2.测试数据 (不提供,请在网站上进行测试)
二、某月天数判断(codeup,21663,原题) 答案 1.源代码: #include <stdio.h>
int main() {
int a,b; scanf("%d %d",&a,&b);
if (b==2) {
if ((a%4==0 && a%100!=0)||(a%400==0)) printf("%d",29); else printf("%d",28); }
break; case 3:printf("%d,%d,%d",hundred,ten,indiv);
printf("\n%d %d %d\n",indiv,ten,hundred); break;
case 2:printf("%d,%d",ten,indiv); printf("\n%d %d\n",indiv,ten);
int main() {
int num,indiv,ten,hundred,thousand,ten_thousand,place; 十位,百位,千位,万位和位数
【C语言简单排序】——整数奇偶排序
【C语⾔简单排序】——整数奇偶排序7-1 整数奇偶排序 给定10个整数的序列,要求对其重新排序。
排序要求: 1.奇数在前,偶数在后; 2.奇数按从⼤到⼩排序; 3.偶数按从⼩到⼤排序。
输⼊格式: 输⼊⼀⾏,包含10个整数,彼此以⼀个空格分开,每个整数的范围是⼤于等于0,⼩于等于30000。
输出格式: 请在这⾥描述输出格式。
例如:对每⼀组输⼊,在⼀⾏中输出A+B的值。
输⼊样例: 按照要求排序后输出⼀⾏,包含排序后的10个整数,数与数之间以⼀个空格分开。
4731311120473498输出样例: 在这⾥给出相应的输出。
例如:4713117304123498思路: 这⾥分析题⽬,发现有三种情况下需要进⾏排序: 1.a[j]为奇数,a[j+1]为偶数 2.a[j]为奇数,a[j+1]为奇数且a[j] < a[j+1] 3.a[j]为偶数,a[j+1]为偶数且a[j] > a[j+1]代码:#include<stdio.h>int main(){int n = 10,i,j,tmp;int a[10];for(i = 0; i < n; i++){scanf("%d",&a[i]);}for(i = 0; i < n-1; i++){for(j = 0; j < n-1; j++){if(a[j] % 2 == 0 && a[j+1] % 2 != 0 || a[j] % 2 != 0 && a[j+1] % 2 != 0 && a[j] < a[j+1] || a[j] % 2 == 0 && a[j+1] % 2 ==0 && a[j] > a[j+1]) {tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;}}}for(i = 0; i < n; i++){printf("%d ",a[i]);}return0;}。
c语言典型问题处理方法小结
c 语言典型问题处理方法小结一、 循环问题 (1)、数论问题 1、求素数for(i=2;i<=a;i++) if(a%i==0)break;if (a==i)printf("yes\n");elseprintf("no\n"); 素数概念:对于某个整数a>1,如果它仅有平凡约数1和a ,则我们称a 为素数(或质数)。
整数 1 被称为基数,它既不是质数也不是合数。
整数 0 和所有负整数既不是素数,也不是合数。
2、求最大公约数和最小公倍数 a 、if(a>b) {t=a; a=b; b=t; }for(i=a;i>=1;i--)if(a%i==0&&b%i==0) break;printf("largest common divisor:%d\n",i);printf("least common multiple:%d\n",(a*b)/is); b 、辗转相除法求解 a1=a; b1=b;while(a%b!=0) {t=a%b; a=b; b=t; }printf("largest common divisor:%d\nleast common multiple:%d",b,a1*b1/b); 3、求完数一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如:6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
第一个if 判断是否能被2,3,4……直到本身整除。
第二个if 判断是否只能被本身整除。
for(a=1;a<=1000;a++) { s=0;for(i=1;i<=a;i++) if (a%i==0) { s+=i; if(s>=a) break; } if(s==a)printf("%d\t",a); }4、分解质因数将一个整数写成几个质因数的连乘积,如: 输入36,则程序输出36=2*2*3*3 。
C语言算法排序与查找
10
10 5 j
10> 5?
5
5 10 j
22
22 j
10> 22?
34
34
45
45
89
89
排i=3位置
22> 34?
5
10
22
34
45
89
• 冒泡法的核心:小数上浮,大数下沉。 • 冒泡法第四轮:使第四大的数放在倒数第四个位置上
i i=3 0 1 2 3 4 5
5
5 j
5> 10?
10
10 j
22
22
34
34
45
45
89
89
排i=2位置
10> 22?
5
10
22
34
45
89
• 冒泡法的核心:小数上浮,大数下沉。 • 冒泡法第五轮:使第五大的数放在倒数第五个位置上
i i=4 0 1 2 3 4 5
5
5 j
5> 10?
10
10
22
22
34
34
45
45
89
89
排i=1位置
5
10
22
34
45
89
中心段程序为 for (i = 0; i < 10 - 1; i++) { for ( j = 0; j< 10 - i - 1; j++) { if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }
排序
C语言程序设计排序法比较
行互换,最多 一轮比较完进行一次 互换n(n-1)/2次 互换,最多互换n-1次
第1轮比较4次:第1次p=0 21 13 90 32 -1 p=1
第2次 21 13 90 32 -1 p=1
第3次 第4次
21 13 90 32 -1 p=1 21 13 90 32 -1 p=4
第1轮比较互换21和-1: -1 13 90 32 21
最小旳数已排好
应用举例(排序:选择法)续
第2轮比较3次:第1次p=1 -1 13 90 32 21 p=1 第2次p=1 -1 13 90 32 21 p=1 第3次p=1 -1 13 90 32 21
第3次 13 21 90 32 -1 进行互换 第4次 13 21 32 90 -1 进行互换
第1轮比较成果:
13 21 32 -1 90
最大旳数已排好
应用举例(排序:冒泡法)续
第2轮比较3次:第1次 13 21 32 -1 90 不进行互换
第2次 13 21 32 -1 90 不进行互换
第3次 13 21 32 -1 90 进行互换
用冒泡法对5个整数按从小到大旳顺序排列输出。 排序旳措施诸多,主要有: 冒泡法 选择法来自应用举例(排序:冒泡法)
用冒泡法对n个数从小到大排序。 假定有5个无序旳数 21,13,90,32,-1
第1轮比较4次:第1次 21 13 90 32 -1 进行互换
第2次 13 21 90 32 -1 不进行互换
第2轮比较不用互换: -1 13 90 32 21
第3轮比较2次:第1次p=2 -1 13 90 32 21 p=3 第2次p=3 -1 13 90 32 21 p=4
第3轮比较互换90与21: -1 13 21 32 90 第4轮比较1次:第1次p=3 -1 13 21 32 90 p=3 第4轮比较不用互换: -1 13 21 32 90
数据结构(C语言)第八章 排序
直接插入排序过程
0 21 1 25 2 49 3 4 25* 16 5 08 temp
i=1
0 21
21
1 25
25 25
2 49
49 49
3 4 25* 16
25* 16 25* 16
5 08
08 08
temp 25
i=2
21
49
21
25
25 25
49
49 25*
25* 16
25* 16 49 16
希尔排序 (Shell Sort)
基本思想设待排序对象序列有 n 个对象, 首 先取一个整数 gap < n 作为间隔, 将全部对 象分为 gap 个子序列, 所有距离为 gap 的对 象放在同一个子序列中, 在每一个子序列中 分别施行直接插入排序。然后缩小间隔 gap, 例如取 gap = gap/2,重复上述的子序列划 分和排序工作。直到最后取 gap == 1, 将所 有对象放在同一个序列中排序为止。 希尔排序方法又称为缩小增量排序。
第八章 排序
概述
插入排序
交换排序 选择排序 归并排序 基数排序 各种内排方法比较
概 述
排序: 将一个数据元素的任意序列,重新
排列成一个按关键字有序的序列。
数据表(datalist): 它是待排序数据对象的
有限集合。
主关键字(key): 数据对象有多个属性域,
即多个数据成员组成, 其中有一个属性域可用 来区分对象, 作为排序依据,称为关键字。也 称为关键字。
直接插入排序 (Insert Sort)
基本思想 当插入第i (i 1) 个对象时, 前面的 R[0], R[1], …, R[i-1]已经排好序。这时, 用 R[i]的关键字与R[i-1], R[i-2], …的关键字顺 序进行比较, 找到插入位臵即将R[i]插入, 原 来位臵上的对象向后顺移。
【C语言程序设计】三个数从小到大输出排序!
【C语⾔程序设计】三个数从⼩到⼤输出排序!任意输⼊ 3 个整数,编程实现对这 3 个整数由⼩到⼤进⾏排序。
实现过程:(1) 定义数据类型,本实例中 a、b、c、t 均为基本整型。
(2) 使⽤输⼊函数获得任意 3 个值赋给 a、b、c。
(3) 使⽤ if 语句进⾏条件判断,如果 a ⼤于 b,则借助于中间变量 t 互换 a 与 b 值,依此类推⽐较 a 与 c、b 与 c,最终结果即为 a、b、c 的升序排列。
(4) 使⽤输出函数将 a、b、c 的值依次输出。
程序的代码如下:#include <stdio.h>int main(){int a,b,c,t; /*定义4个基本整型变量a、b、c、t*/printf("Please input a,b,c:\n"); /*双引号内的普通字符原样输出并换⾏*/scanf("%d,%d,%d",&a,&b,&c); /*输⼊任意3个数*/if(a>b) /*如果a⼤于b,借助中间变量t实现a与b值的互换*/{t = a;a = b;b = t;}if(a>c) /*如果a⼤于c,借助中间变景t实现a与c值的互换*/{t = a;a = c;c = t;}if(b>c) /*如果b⼤于c,借助中间变量t实现b与c值的互换*/{t = b;b = c;c = t;}printf("The order of the number is:\n");printf("%d,%d,%d",a,b,c); /*输出函数顺序输出a、b、c的值*/return0;}运⾏结果:Please input a,b,c:5,3,9The order of the number is:3,5,9脚下留神:本实例使⽤ scanf("%d%d%d",&a,&b,&c); 从键盘中获得任意 3 个数。
c语言上机题库 (1)
1、给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)。
2、编写程序求无理数e的值并输出。
计算公式为:e=1+1/1!+1/2!+1/3!+......+1/n!当1/n!<0.000001时e=2.718282。
3、求一批数中最大值和最小值的积。
4、某一正数的值保留2位小数,对第三位进行四舍五入。
5、从键盘上输入任意实数x,求出其所对应的函数值。
z=(x-4)的二次幂(x>4)z=x的八次幂(x>-4)z=z=4/(x*(x+1))(x>-10)z=|x|+20(其他)6、求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:输入的数组为:1 2 34 15 612 18 910 11 2求出的最大数为18,行坐标为2,列坐标为1。
7、求一个n位自然数的各位数字的积。
(n 是小于10的自然数)8、计算n门课程的平均值,计算结果作为函数值返回。
例如:若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。
9、求一批数中小于平均值的数的个数。
10、编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。
调用该函数找出100~200之间满足条件的所有数。
11、请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
12、编写函数fun用比较法对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果。
13、编写main程序调用函数fact求解从m个元素选n 个元素的组合数的个数。
计算公式是:组合数=m!/(n!.(m-n)!)。
要求:m不能小于n,否则应有容错处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言三个数从小到大排序/输出
任意输入3 个整数,编程实现对这3 个整数由小到大进行排序。
实现过程:
(1)定义数据类型,本实例中a、b、c、t 均为基本整型。
(2) 使用输入函数获得任意3 个值赋给a、b、c。
(3) 使用if 语句进行条件判断,如果a 大于b,则借助于中间变量t 互换a 与b 值,依此类推比较a 与c、b 与c,最终结果即为a、b、c 的升序排列。
(4) 使用输出函数将a、b、c 的值依次输出。
(5) 程序的代码如下:
#include<stdio.h>
int main()
{
int a,b,c,t;/*定义4个基本整型变量a、b、c、t*/
printf("Please input a,b,c:\n");/*双引号内的普通字符原样输出并换行*/
scanf("%d,%d,%d",&a,&b,&c);/*输入任意3个数*/
if(a>b)/*如果a大于b,借助中间变量t实现a与b值的互换*/ {
t = a;
a = b;
b = t;
}
if(a>c)/*如果a大于c,借助中间变景t实现a与c值的互换*/ {
t = a;。