利用数组和循环对输入的10个数进行升序排列

合集下载

输入10个整数,用函数编程将其中最大数与最小数位置互换,然后输出互换后的数组。

输入10个整数,用函数编程将其中最大数与最小数位置互换,然后输出互换后的数组。

输入10个整数,用函数编程将其中最大数与最小数位置互换,然后输出互换后的数组。

我们知道,在编程中,数组是一种常用的数据结构,它可以用来存储特定类型的数据。

本文将介绍如何用函数编程来实现将输入10个整数中最大数与最小数位置互换,然后输出互
换后的数组。

首先,我们需要定义一个函数,用于交换最大值和最小值。

函数应该接收一个整型数组,并返回交换后的数组。

其次,我们需要使用循环语句来遍历数组,寻找最大值和最小值的索引,然后用一个临时变量来存储最大值,再将最小值赋值给最大值,最大值赋值给最小值。

经过这样的操作,最大值和最小值的位置就发生了变化。

最后,我们使用for循环来输出交换后的数组,输出结果
就是按照输入的顺序,最大值和最小值的位置发生了变化。

综上所述,实现将输入10个整数中最大数与最小数位置
互换,然后输出互换后的数组的具体步骤如下:
1. 定义一个函数,接收一个整型数组,用于交换最大值和最小值;
2. 使用循环语句遍历数组,找到最大值和最小值的索引;
3. 用一个临时变量来存储最大值,再将最小值赋值给最大值,最大值赋值给最小值;
4. 使用for循环来输出交换后的数组,输出结果就是按照
输入的顺序,最大值和最小值的位置发生了变化。

在编程中,通过编写函数,我们可以实现将输入10个整
数中最大数与最小数位置互换,然后输出互换后的数组。

这样,我们就可以很方便地进行数组的操作,提高编程效率。

非常全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”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。

“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。

例1、求1+2+3+……+100的和。

main(){int i,s;s=0; i=1;while(i<=100){s=s+i; /*累加式*/i=i+1; /*特殊的累加式*/}printf("1+2+3+...+100=%d\n",s);}【解析】程序中加粗部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。

C语言常用算法归纳

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”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。

冒泡法对10个整数排序代码及运行结果

冒泡法对10个整数排序代码及运行结果

冒泡排序是一种简单但效率较低的排序算法,它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。

这个过程持续重复,直到没有相邻的元素需要交换,也就是说该数列已经排序完成。

下面,我们将演示用冒泡排序对一个包含10个整数的数组进行排序的代码,并展示其运行结果。

1. 我们定义一个包含10个整数的数组:```javascriptconst arr = [4, 2, 8, 5, 1, 9, 3, 7, 6, 10];```2. 接下来,我们编写冒泡排序的代码:```javascriptfunction bubbleSort(arr) {const len = arr.length;for (let i = 0; i < len - 1; i++) {for (let j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j + 1]) {const temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}return arr;}const sortedArr = bubbleSort(arr);console.log(sortedArr);```3. 运行上述代码,我们得到排序后的数组为:```javascript[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]```通过以上代码和运行结果,可以清晰地看到冒泡排序算法对数组进行了排序,最终得到一个按升序排列的数组。

这个例子展示了冒泡排序算法的基本原理和实际运行效果。

冒泡排序算法虽然简单,但是在处理大型数据集时效率较低,不过对于小型数据集来说是一个简单有效的排序方法。

冒泡排序算法是一种经典的排序算法,它虽然简单但效率较低。

在实际应用中,由于其时间复杂度为O(n^2),并不适合处理大规模的数据集,但对于小规模的数据集来说是一个简单而有效的排序方法。

题44:编程输入10个正整数,然后自动按从大到小的顺序输出

题44:编程输入10个正整数,然后自动按从大到小的顺序输出

题44:编程输入10个正整数,然后自动按从大到小的顺序输出。

题44:编程输入10个正整数,然后自动按从大到小的顺序输出。

Input输入只有一行,包括10整数.Output输出只有一行,包括10个整数。

Sample Input1 2 3 4 5 7 6 8 9 10Sample Output10 9 8 7 6 5 4 3 2 1提示:数组与排序,注意输出最后一个空格要考虑。

处理方法最后一个单独输出。

program ex_44;var a:array[1..10] of integer;i,j,t:integer;beginfor i:=1 to 10 do read(a[i]);for i:=1 to 9 dofor j:=i+1 to 10 doif a[i]<a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t; end;for i:=1 to 9 do write(a[i],' ');write(a[10]);end.题46:统计字母出现次数输入一串小写字母(以"."为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出)。

Input输入只有一行,包括若干个字符。

Output输出只有两行,第一行为出现的小写字母,第二行为字母的出现次数。

Sample Inputabdceeef.Sample Outputabcdef111131提示:注意利用字符做下标,可以让程序简单。

program ex_45;var a:array['a'..'z'] of integer;i,ch:char;beginread(ch);for i:='a' to 'z' do a[i]:=0;while ch<>'.' dobegina[ch]:=a[ch]+1;read(ch);end;for i:='a' to 'z' doif a[i]<>0 then write(i);writeln;for i:='a' to 'z' doif a[i]<>0 then write(a[i]);end.题48:求序列中所有递增或递减子序列的个数并输出子序列题48:求序列中所有递增或递减子序列的个数并输出子序列。

认识数组我们先做下面两个题第一个...

认识数组我们先做下面两个题第一个...

认识数组我们先做下面两个题:第一个:输入n(n<100)个数,并且以相反的顺序输出这些数。

(假设当n=5时,我们可以通过定义5个不同变量很轻松地解决这个问题。

程序为:(假设5个变量分别为x1、x2、x3、x4、x5)请写出程序。

但是当n值超过一定个数时,如n=100,定义变量及数据的输出、输出成为一个非常繁琐的过程,需要定义100个变量,写100个read语句和100个write语句。

这样是不现实的。

利用数组就能很方便地处理这个问题,且程序规模不受影响,并且非常明了清晰:假设n=100,我们引入数组x,分别用x[1], x[2],…,x[100]表示这100个变量,其中x为数组名称,方括号中的数字称为下标,下标可以用变量表示,如x[i]表示的数据由i决定,当i=1,x[i]表示x[1],i=20, x[i]表示x[20],i=100, x[ i ]表示x[100], ……,不同的x[i]就是不同的数组元素,于是程序可以修改为:Const n=100;V ar x: array[1..n] of integer ;I: integer ;BeginFor i:=1 to n do read(x[i]);For i:=n downto 1 do write(x[i] );End.整个程序非常简洁,而且直接通过修改常量n的定义就可解决不同的n值需要。

可见,引入数组之后,程序设计变得十分有效。

特别是对于一批数据的排序、查找等操作,不使用数组将寸步难行。

第二个:输入三个整数,由程序计算他们的平均值,并将其中大于平均值的数显示出来,例如输入3、8、7其平均值是6,因此显示8和7。

分析:readln语句从键盘读入三个数,分别存储到a、b、c三个整形变量中;求出a、b、c的平均值,在存储到变量s中;将a、b、c的值与s的值依次进行比较,将其中大于s的值用writeln语句输出程序:program lx1;var a, b, c:integer;s: real ;beginreadln(a);readln(b);readln(c);s: =(a+b+c)/3 ;if a>s then writeln(a);if b>s then writeln(b);if c>s then writeln(c );end.运行程序,输入3、8、7,输出结果为8、7现在,我们改变一下题目要求:输入100个整数,将其中大于平均值的数显示出来。

输入10个数,用“起泡法”对10个数排序(由小到大)

输入10个数,用“起泡法”对10个数排序(由小到大)

输入10个数,用“起泡法”对10个数排序(由小到大)。

“起泡法”算法:以六个数9、8、5、4、2、0为例。

第1趟比较(p83,图6.1)第2趟比较(p84,图6.2)第1趟比较后,剩5个数未排好序;两两比较5次第2趟比较后,剩4个数未排好序;两两比较4次第3趟比较后,剩3个数未排好序;两两比较3次第4趟比较后,剩2个数未排好序;两两比较2次第5趟比较后,全部排好序;两两比较1次算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次两两比较。

程序流程图:(用两层嵌套循环实现)程序:设需排序的数有10个,定义数组大小为11,使用a[1]~a[10]存放10个数,a[0]不用。

main()int a[11]; /* 用a[1]~a[10], a[0]不用*/int i,j,t;/* i,j作循环变量,t作两两比较的临时变量*/printf("input 10 numbers:\n");for(i=1;i<11;i++)scanf("%d",&a[i]);/* 输入10个整数*/printf("\n");for(j=1;j<=9;j++) /* 第j趟比较*/for(i=1;i<=10-j; i++) /* 第j趟中两两比较10-j次*/if (a[i] > a[i+1]) /* 交换大小*/{ t = a[i]; a[i] = a[i+1]; a[i+1] = t; }printf("the sorted numbers:\n");for(i=1;i<11;i++)printf("%d",a[i]);}。

C语言编辑作业二(1)

C语言编辑作业二(1)
int main()
{
int n;
for(n=100;n<=200;n++)
if(n%3!=0)
printf("%3d\n",n);
return 0;
}
2.编写一函数fun,实现矩阵(3行3列)的转置(即行列互换)。
#include<stdio.h>
#define N 3
float b[3][3];
#include<stdio.h>
int main()
{int i,n,s1,s2,s3;
for(i=1,s1=0,s2=0,s3=0;i<=100;i++)
{scanf("%d",&n);
if(n>0) s1=s1+1;
if(n<0) s2=s2+1;
if(n==0) s3=s3+1;
}
printf("s1=%d s2=%d s3=%d\n",s1,s2,s3);
printf("\n");
t=a[0]+a[1]+a[9];
for(i=1;i<9;i++)
{b=a[i-1]+a[i]+a[i+1];
if(t>b)
t=b;
}
printf("The smallest number is:%6.2f\n",t);
return 0;
}
4.编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。
}
int cpy(char s[],int m)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档