输入10个数字从小到大排序再逆序排

合集下载

c语言选择法排序10个数

c语言选择法排序10个数

c语言选择法排序10个数
c语言选择法排序10个数的相关解析,如下所示:
解析:选择排序思路如下,设有10个元素a[1]~a[10],将a [1]与a[2]~a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作。

若a[2]~a[10]中有一个以上比a[1]小,则将其中最大的一个,与a[1]交换,此时a[1]中存放了10个中最小的数。

依次类推,共进行9轮比较,a[1]~a[10]就已按由小到大的顺序存放了。

c语言选择法排序10个数里分为四部分:(附图注解)
第一部分键盘输入10个数:
第二部分输出键盘录入的10个数:
第三部分排序逻辑:
第四部分排序后的10个数:
编译运行结果如下:。

中国石油大学(华东)C语言习题答案

中国石油大学(华东)C语言习题答案

C语言复习题【设计型】5.1 输出一行星号编写程序在一行中输出 N 个星号。

输入: N值输出:一行中N个星号#include<stdio.h>int main(){int a,i;scanf("%d",&a);for(i=1;i<=a;i++)printf("*");printf("\n");return 0;}【设计型】5.2 打印平行四边形输入图形的高 n ,输出如下例( n=5 )所示的图形 .*************************输入:整数n例如 5由*组成的高为5的平行四边形#include<stdio.h>int main(){int i,j,num;scanf("%d",&num);for(i=0;i<num;i++){for(j=0;j<num;j++)printf("*");printf("\n");}return 0;}【设计型】5.3 编程计算编写程序,输入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n (保留四位小数) #include<stdio.h>int main(){double n,i,sum,k=1.0;scanf("%lf",&n);i=1,sum=0;while(i<=n)sum=sum+k/i;i++;k=-k;(用这个式子实现正负交替)}printf("sum=%.4lf\n",sum);return 0;}【设计型】5.4 分数序列有一个分数序列:...............,输入整数n,求出其前n项的和。

输出语句格式为:printf("sum=%16.10f\n",s);#include<stdio.h>int main(){int n,a,b,i,temp;double sum;scanf("%d",&n);i=1,sum=0,a=2,b=1;while(i<=n){sum=sum+a*1.0/b;temp=a;a=a+b;b=temp;(几个式子实现数值的变换)i++;}printf("sum=%16.10f\n",sum);return 0;}【设计型】5.5 求e的值编写程序,从键盘输入整数 n , 求 e 的值 . e=1+1/1!+1/2!+1/3!+..+1/n! 注意:用 double 型数据计算输出语句:printf("sum=%16.10f\n",sum);#include<stdio.h>int main(){int n,i;double sum,jc;scanf("%d",&n);i=1,sum=1.0 jc=1.0;while(i<=n){jc=jc*i;sum=sum+1.0/jc;i++;}printf("sum=%16.10f\n",sum);return 0;}【设计型】5.6 最大公约数输入两个正整数m和n,求它们的最大公约数和最小公倍数比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。

输入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]);}。

数字排序将数字按从小到大的顺序排列

数字排序将数字按从小到大的顺序排列

数字排序将数字按从小到大的顺序排列数字排序,是将一组数字按照从小到大的顺序排列。

这是一种常见的数学操作,也是计算机编程中常用的算法之一。

在数字排序的过程中,我们需要将数字按照一定的规则进行比较,然后按照比较的结果进行排序。

下面将介绍几种常见的数字排序算法。

1. 冒泡排序冒泡排序是一种简单易懂的排序算法,其基本思想是通过相邻元素的比较和交换,将较大的元素逐渐“冒泡”到数组的尾部。

具体步骤如下:(1)从数组的第一个元素开始,依次比较相邻的两个元素。

如果前一个元素大于后一个元素,则交换这两个元素的位置;(2)重复上述比较和交换的步骤,直到将最大的元素“冒泡”到数组的末尾;(3)重复上述步骤,直到所有的元素都按照从小到大的顺序排列。

冒泡排序的时间复杂度为O(n^2),其中n为待排序数组的长度。

2. 插入排序插入排序是一种比较直观的排序算法,其基本思想是将数组分为已排序部分和未排序部分,每次从未排序部分选择一个元素插入到已排序部分的正确位置。

具体步骤如下:(1)从数组的第二个元素开始,将其与已排序部分的元素比较,找到合适位置;(2)将选中元素插入到合适的位置,并将已排序部分后面的元素依次向后移动;(3)重复上述步骤,直到所有的元素都按照从小到大的顺序排列。

插入排序的时间复杂度为O(n^2),但在大部分情况下,插入排序的性能要优于冒泡排序。

3. 快速排序快速排序是一种高效的排序算法,其基本思想是采用分而治之的思想,通过一趟排序将数组分割成两个子数组,再对子数组进行排序。

具体步骤如下:(1)选择一个基准元素,将数组分为左右两个子数组;(2)将比基准元素小的元素放在左边,将比基准元素大的元素放在右边;(3)对左右两个子数组分别进行快速排序;(4)重复上述步骤,直到每个子数组只包含一个元素或为空。

快速排序的时间复杂度为O(nlogn),其中n为待排序数组的长度。

快速排序是目前最快的排序算法之一。

以上只是介绍了几种常见的数字排序算法,实际应用中还有其他的排序算法,如选择排序、归并排序等。

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)

c语言逆序数

c语言逆序数

c语言逆序数
编写一个C语言程序,实现逆序数功能。

具体操作步骤如下:
1. 定义变量,分别表示输入的数字,逆序后的数字,以及计算逆序的中间变量。

2. 使用scanf函数接收输入的数字。

3. 对输入的数字进行逆序计算:
- 定义一个while循环,当输入数字不为0时,执行以下操作:- 将中间变量乘以10,将输入数字对10取余数,将余数加到中间变量中。

- 将输入数字除以10,重复执行以上操作。

- 将逆序后的数字赋值给新变量。

4. 使用printf函数输出逆序后的数字。

完整代码如下:
```c
#include <stdio.h>
int main() {
int num, reverse = 0, temp;
printf("请输入一个数字:");
scanf("%d", &num);
while(num != 0) {
temp = num % 10;
reverse = reverse * 10 + temp;
num /= 10;
}
printf("逆序后的数字为:%d\n", reverse);
return 0;
}
```
以上是逆序数的C语言代码实现,希望对您有所帮助。

C++数组

C++数组

1. (10分)已知10个四位数输出所有对称数及个数n。

例如1221,2332都是对称数。

设:int m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};输出结果:12212332#include<iostream>using namespace std;int main(){int m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};int i, s, n, t;for (i = 0; i < 10; i++){t = m[i] / 1000;if (t == m[i] % 10)cout << m[i] << endl;}return 0;}2. (10分)已知10个数求最大值及最小值以及它们的差.设:int a[] = {8, 92, 7, 8, 1, 56, 37, 23, 25, 26}, max, min, ca;输入格式格式要求:无输出格式要求:max=92,min=1,ca=91#include<iostream>using namespace std;int main(){int a[10] = {8, 92, 7, 8, 1, 56, 37, 23, 25, 26}, max, min, ca, i, t;for (i = 0; i < 10; i++){if (a[i] > a[i + 1]){t = a[i];a[i] = a[i + 1];a[i + 1] = t;max = a[i+1];}}cout << "max=" << max << ",";for (i = 0; i < 10; i++){if (a[0] > a[i + 1]){t = a[0];a[0] = a[i + 1];a[i + 1] = t;min = a[0];}}cout << "min=" << min << ",";ca = max - min;cout << "ca=" << ca << endl;return 0;}3. (10分)请输入10个整数到一个一维数组,并逆序输出。

用“起泡法”对输入的10个数字按由小到大顺序排列

用“起泡法”对输入的10个数字按由小到大顺序排列

8.11写‎一函数,用‎起泡法对输‎入的10个‎字符按由小‎到大顺序排‎列2008‎-01-0‎816:‎45/*运‎行结果为:‎请输入1‎个字符串:‎chin‎s ungl‎e排序后‎字符串为:‎c eghi‎l nnsu‎.*/‎#incl‎u de <‎s tdio‎.h>#‎i nclu‎d e <s‎t ring‎.h>#‎d efin‎e N 1‎0voi‎d sor‎t(cha‎r str‎[]){‎int ‎i,j,t‎;for‎(i=1;‎i<N;i‎++)//‎总共进行N‎-1次冒泡‎运算fo‎r(j=0‎;j<N-‎i;j++‎)//第一‎次N-1个‎回合,第二‎次N-2个‎回合,最后‎一次即第N‎-1次一个‎回合if‎(str[‎j]>st‎r[j+1‎]){‎t=str‎[j];‎s tr[j‎]=str‎[j+1]‎;str‎[j+1]‎=t;}‎}m‎a in()‎{ch‎a r st‎r[100‎];do‎{pr‎i ntf(‎"请输入1‎个字符串:‎\n");‎scan‎f("%s‎",str‎);}‎w hile‎(strl‎e n(st‎r)!=1‎0);s‎o rt(s‎t r);‎p rint‎f("排序‎后字符串为‎:%s.\‎n",st‎r);}‎#‎i nclu‎d e <s‎t dio.‎h>vo‎i d ma‎i n()‎{in‎t a[1‎0];‎i nt i‎,j,te‎m p;‎p rint‎f("请输‎入10个数‎:");‎for(‎i=0;i‎<10;i‎++)‎ sca‎n f("%‎d",&a‎[i]);‎for‎(i=0;‎i<10;‎i++)‎ fo‎r(j=i‎+1;j<‎10;j+‎+)‎ if‎(a[i]‎>a[j]‎)‎ {‎‎‎t emp=‎a[i];‎‎‎a[i]=‎a[j];‎‎‎a[j]=‎t emp;‎‎ }‎for(‎i=0;i‎<10;i‎++)‎ pri‎n tf("‎%d\t"‎,a[i]‎);} ‎#‎i nclu‎d e <s‎t dio.‎h>v‎o id m‎a in()‎{i‎n t i,‎j, t‎e mp;‎int ‎e leme‎n t[10‎];i‎n t *s‎t art,‎*end‎;‎‎prin‎t f("\‎n请输入1‎0个数:\‎n ");‎for‎(i = ‎0;i <‎10;i‎++)‎{‎ sca‎n f("%‎d", &‎e leme‎n t[i]‎);}‎‎s tart‎= el‎e ment‎; /* ‎s tart‎指针指向‎数组的第一‎个元素 *‎/en‎d = e‎l emen‎t + 1‎0; /*‎end ‎指针指向数‎组的最后一‎个元素 *‎/ pr‎i ntf(‎"\n原始‎数组:\n‎");‎/* 输‎出原始数组‎*/‎f or(;‎s tart‎< en‎d;sta‎r t++)‎{‎ pri‎n tf("‎%d "‎, *st‎a rt);‎}‎prin‎t f("\‎n\n排序‎后的数组:‎\n");‎/‎*输出排‎序后的数组‎*/‎s tart‎=elem‎e nt;‎for(‎i = 1‎0;i >‎0;i-‎-){‎fo‎r(j =‎10 -‎i;j ‎> 0;j‎--)‎{‎if(*‎(star‎t + j‎-1) >‎*(st‎a rt+j‎))‎{‎ tem‎p = *‎(star‎t + j‎-1);‎ *‎(star‎t + j‎-1) =‎*(st‎a rt+j‎);‎ *(s‎t art+‎j) = ‎t emp;‎}‎}‎}‎for(‎s tart‎= el‎e ment‎;star‎t < e‎n d;st‎a rt++‎) {‎ pri‎n tf("‎%d "‎, *st‎a rt);‎}‎p rint‎f("\n‎");}‎‎。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档