利用数组和循环对输入的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)

C语言常用算法

C语言常用算法

累加算法的要领是形如“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,这样的累加器又称为计数器。

3.累乘累乘算法的要领是形如“s=s*A”的累乘式,此式必须出现在循环中才能被反复执行,从而实现累乘功能。

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

例1、求10![分析]10!=1×2×3×……×10main(){int i; long c;c=1; i=1;while(i<=10){c=c*i; /*累乘式*/i=i+1;}printf("1*2*3*...*10=%ld\n",c);}二、非数值计算常用经典算法1.穷举也称为“枚举法”,即将可能出现的每一种情况一一测试,判断是否满足条件,一般采用循环来实现。

例1、用穷举法输出所有的水仙花数(即这样的三位正整数:其每位数位上的数字的立方和与该数相等,比如:13+53+33=153)。

[法一]main(){int x,g,s,b;for(x=100;x<=999;x++){g=x%10; s=x/10%10; b=x/100;if(b*b*b+s*s*s+g*g*g==x)printf("%d\n",x);}}【解析】此方法是将100到999所有的三位正整数一一考察,即将每一个三位正整数的个位数、十位数、百位数一一求出(各数位上的数字的提取算法见下面的“数字处理”),算出三者的立方和,一旦与原数相等就输出。

用“起泡法”对输入的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‎");}‎‎。

实现十个任意整数从小到大的排序算法

实现十个任意整数从小到大的排序算法

实现十个任意整数从小到大的排序算法
十个任意整数从小到大排序是指把十个任意整数从小到大组织起来,使得从第一个数据到最后一个数据,每个数据都比前一个数据大。

在排序过程中主要使用比较、交换及移位操作。

一般来说,能够将N个数据排序,只需要N-1次比较和交换操作,它的复杂度即为O(n),循环次数也只需要N-1次,效率比较高。

冒泡排序:
冒泡排序法就是把数据中从头部到尾部,相邻的元素两两比较,如果后一个元素比前一个元素的关键字小,则交换它们的位置,不断地进行比较,最终能够实现十个任意整数从小到大的排序。

快速排序:
快速排序法是将数据分割成两个部分,将小于基准值的元素放到基准值元素的左边,把大于基准值的元素放到右边,把基准值元素放到中间,然后再对两边的子序列进行基准值分割,最终能够实现十个任意整数从小到大的排序。

归并排序:
归并排序法就是将序列拆分成若干子序列,然后将拆分后的子序列排序,最后将排好序的子序列合并成一个整体,最终能够实现十个任意整数从小到大的排序。

插入排序:
插入排序法就是在序列中插入新元素,根据元素的大小将该元素插入到已有元素的正确位置中,完成元素的替换,从而得到一个新的已排序序列,最终能够实现十个任意整数从小到大的排序。

选择排序:
选择排序法就是在给出的序列中,从头部到尾部一次查找,找出一个最小值,并把这个值放到序列的最前面,然后再跳到下一个未查找元素,重复以上操作,直到完成排序,最终能够实现十个任意整数从小到大的排序。

堆排序:
堆排序法就是将待排序序列构造成一个大顶堆(即从最大堆调整),然后将堆顶元素与末尾元素进行交换,将末尾元素放入到堆中,重复以上操作,则能够实现十个任意整数从小到大的排序。

数组排序的几种方法

数组排序的几种方法

数组排序的几种方法1. 冒泡排序:冒泡排序是一种基础的排序方法,通过比较相邻元素大小来交换位置,逐步将大的元素往后移动。

具体实现方法:从数组首位置开始,遍历每个元素,每次比较相邻两个元素的大小,若前面的大于后面的,交换它们的位置。

依次进行,最终得到一个升序/降序的数组。

由于冒泡排序需要不断的比较和交换,时间复杂度为O(n^2),不适合大规模数据的排序。

2. 快速排序:快速排序是一种效率比较高的排序算法,它采用分而治之的思想,通过选定一个中间值将数据分为左右两部分,对左右两部分再进行递归排序。

具体实现方法:选定一个中间值pivot,将小于pivot的数放到左边,大于pivot的数放到右边。

然后再对左右两边分别递归进行排序,直到整个数组有序为止。

快速排序的时间复杂度为O(nlogn),但是最坏情况下时间复杂度会退化到O(n^2),因此需要合理地选定pivot来确保算法效率。

3. 插入排序:插入排序是一种简单的排序方法,它采用类似于扑克牌的排序思想,将数组中的元素逐个比较并插入到已排好序的数组中。

具体实现方法:从第二个元素开始,将每个元素与前面的元素逐个比较,找到它应该插入的位置。

将原位置之后的元素依次往后移,最后再将该元素插入到应该插入的位置中。

插入排序的时间复杂度为O(n^2),但是对于已经基本有序的数组,插入排序效率较高。

4. 归并排序:归并排序是一种分而治之的排序算法,它采用递归分解数组并且分别对每个子数组进行排序,最终将排好序的子数组合并成为一个有序数组。

具体实现方法:将数组分成两等份,对每个子数组分别递归进行排序,最后将两个有序子数组合并成为一个有序数组。

归并排序的时间复杂度为O(nlogn),不受初始状态的影响,因此在实际应用中较为常用。

以上就是几种常见的数组排序方法。

在实际应用时,需要结合具体情况选定合适的算法以提高效率。

大一C语言题库【范本模板】

大一C语言题库【范本模板】

一、编程大题1。

有一函数:当x<0时,y=—1;当x=0时,y=0;当x〉0时,y=1.编一程序,输入x的值,输出y的值。

#include〈stdio.h〉int main(){int x,y;scanf("%d”,&x);if (x>=0)if (x〉0) y=1;else y=0;else y=-1;printf("x=%d,y=%d\n”,x,y);return 0;}2.输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。

#include 〈stdio。

h〉int 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("%5.2f,%5.2f,%5。

2f\n",a,b,c);return 0;}3.有三个整数a,b,c,由键盘输入,输出其中最大者。

#include<stdio。

h〉int main(){int a,b,c,max;printf("请输入a,b,c\n");scanf(”%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(max〈c)max=c;printf(”最大的数为%d\n”,max);return 0;}4.编程求圆面积、圆周长。

要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两位数字。

{float r,l, s;float pi=3.1415926;printf("表输入圆半径r:”);scanf(”%f",&r);l=2*pi*r;s=pi*r*r;printf("圆周长为:l=%6。

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

C语言程序设计第七章 利用数组处理数据

C语言程序设计第七章 利用数组处理数据
整理课件
一维数组的存储: 计算机中用连续的内存单元存放各个元素。 如:int a[5];其内存存储为:
保存数组所需内存量与数组元素的基本类型和数组大小有关。 总字节数=sizeof(基本类型)*数组元素个数 如上例:= sizeof(int)*5 第i个元素的地址=第1个元素的地址+i*sizeof(基本类型)
类型说明符 数组名[常量表达式]={值,值……值}; 其中在{ }中的各数据值即为各元素的初值,各值之间用逗号 间隔。 例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1...a[9]=9;
整理课件
C语言对数组的初始化赋值还有以下几点规定:
有 5个元素。但是其下标从0开始计算。因此5个元素分别为
a[0],a[1],a[2],a[3],a[4]。
不能在方括号中用变量来表示元素的个数, 但是可以是符
号常数或常量表达式。
例如:
#define FD 5
main( )
{ int a[3+2],b[7+FD];
……
}是合法的。
但是下述说明方式是错误的。
for (i=0; i<=9;i++) a[i]=i;
for(i=9;i>=0; i--) printf("%d ",a[i]);
printf("\n"); return 0; }
使a[0]~a[9]的值为0~9 先输出a[9],最后输出a[0]
整理课件
一维数组的初始化
数组初始化赋值是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为:
for(i=0;i<1;i++) if (a[i]>a[i+1]) { ……}

C#100道编程题

C#100道编程题

《C#编程100例》上机操作题1. 编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。

2. 编写一个程序,检查一个字符变量的值是否为T或t。

3.输入三个整数,比较大小,输出最大数值。

4.解一元二次方程的解.5. 输出1-100 所有数值。

6.求1-100之间的所有偶数.7.求1+2+3+…+100的和.8.编写一个程序,输入三个单精度数,输出其中最小数。

9. 编写一条根据变量name的值执行不同操作的switch语句。

如果该变量的值为Robert,则打印消息”Hi Bob”;如果为Richard,则打印消息“Hi Rich”;如果为Barbara,则打印消息“Hi Barb”;如果为Kalee,则打印消息“You Go Girl!”;对于其他情况,则打印“Hix”,其中x为变量name的值。

10. 编程输出1~100中能被3整除但不能被5整除的数,并统计有多少个这样的数。

11. 输出2000-2100间的所有偶数。

12. 随机输入5个数,对这5个数进行升序排序。

13. 求你随机输入的10个数的最大值和最小值?14. 打印输出上三角,不能使用直接打印***************15. 从键盘上输入两个整数,由用户回答它们的和,差,积,商和取余运算结果,并统计出正确答案的个数。

16. 在键盘上接收用户输入的15个整数数值,输入完成后,接收用户输入的指令,如果用户输入a(大小写不区分)升序排列,如果输入d(大小写不区分)降序排列,否则提示用户重新输入指令,输出排序前与排序后的数列内容。

17. 定义一个数组,从键盘上输入3个数值,打印输出最大数值。

18. 编程输出1000以内的所有素数。

19. 分别用for,while,do…while语句编写程序,实现求前n个自然数之和。

20. 编程输出九九乘法表。

21. 建立一个一维数组,使用该数组列出所学习的课程名称。

22. 求第30项斐波那契数列的值。

斐波那契数列例如:1,2,3,5,8,13,21……23. 定义名称为computeMethod 的函数,实现加法器。

汇编语言输入10个数排序并输出的实现

汇编语言输入10个数排序并输出的实现

汇编语⾔输⼊10个数排序并输出的实现⼀:题⽬描述在键盘输⼊任意10个数1. 按从⼩到⼤排序后,在计算机屏幕上先输出来。

要有结果提⽰(字符串显⽰)。

2. 将10个数做累加,结果在计算机屏幕显⽰累加和。

⼆:伪指令的定义1.数据段ATAS SEGMENTstring_1 DB 'Please input a numbers(0-65536):','$'string_2 DB 'ERROR: OVERFLOW! Please input again:','$'string_3 DB 'The array you have input is:',0ah,0dh,'$'string_4 DB 'After Sort the num is:',0ah,0dh,'$'string_5 DB ' ','$'DATA DW 10 DUP(?)massege DB 'The sum of the array is: ',0ah,0DH,'$'DATAS ENDS说明:string_1输⼊范围提⽰string_2输⼊错误提⽰string_3输出原数组提⽰string_4输出排序后数组提⽰string_5空格符DATA缓冲区数组2.堆栈段STACKS SEGMENTDW 256 dup(?)STACKS ENDS3.代码段CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS三:模块分解与实现1. DOS输⼊10个数字输⼊10个⽆符号数存⼊缓冲区,并且保证 num&lt;65536num &lt; 65536num<65536为何输⼊范围是65536呢⼀个字的最⼤表⽰范围是 FFFFFFFFFFFF 其在⼗进制的表⽰下为 65535HEX FFFFDEC65535BIN1111 1111 1111 11111.1 输⼊函数⼦程序;---------输⼊函数(单数字输⼊)------------Input PROC Nearpush AXpush BXpush CXpush DX;---------输⼊提⽰--------------MOV BX, 0CLCMOV DX, 0;----------输⼊数字--------------Lp_0:MOV AH, 1INT 21HCMP AL, 20H ;回车JE L_CRLF;----- x belong to [0,9] ----------SUB AL, 30H ; ASCII -> intJL L_ERRORCMP AL, 9JG L_ERROR;------- string -> int -----------MOV AH, 0 ;将 AL扩展成 AXXCHG AX, BX ;保护 AX值MOV CX, 10MUL CX ; bx *= 10ADD AX , BXJC L_ERROR ; OVERFLOW处理XCHG AX, BXJMP Lp_0L_ERROR:MOV DX, 0MOV BX, 0CALL CRLF ; 换⾏CALL ERROR ; 输出错误提⽰JMP Lp_0L_CRLF: ; 以换⾏作为⼀个数的结束标志MOV DX, 0MOV DATA[SI], BX ;解析函数功能:本质类似于⾼精度计算,将读⼊的⼀个串转成数字存储在DATA数组中分成三⼤部分⼀:输⼊提⽰⼆:错误判断及提⽰三:转化为数字L_ERROR 错误处理L_CRLF 结束处理我们来举⼀个123412341234 的例⼦Register1234AX1234BX0112123CX10101010AX+(BX∗CX)AX + (BX * CX)AX+(BX∗CX)最后将结果存储在DATA数组⾥2.实现冒泡排序冒泡排序作为⼀个简单的排序算法,时间复杂度 O(n2)O(n^2)O(n2) 需要两层循环,为了提⾼代码的可读性,我们将内层的循环写成⼀个⼦程序每次调⽤内层循环很简单,每次从头⽐到尾,遇到⽐它⼩的交换就可以了。

输入十个数进行简单选择排序升序

输入十个数进行简单选择排序升序

C语言编程:输入10个数进行选择升序排序
选择排序:也用简单的话来说,就是从第一个数开始,与后面所有的数相比较,找出最小的数,放在第一个位置,以此类推,每一轮确定一个相对于这一轮最小的数。

冒泡排序:用简单的话来讲就是,从左往右,两两相互比较大小,左边的大就交换位置,循环往复,把较大的放后面。

选择排序程序如下:
#include<stdio.h>
int main()
{
int a[10],i,j,n;
printf("请输入10个数字:"); //不要加换行符\n会影响取数
for (i = 1;i <= 10;i ++)
scanf("%d",&a[i]); //scanf按回车结束
for (i = 1;i <= 10 ;i++)
for(j = i ;j <= 10;j ++)
{
if (a[i] > a[j])
{
n = a[i];
a[i] = a[j];
a[j] = n;
}
}
printf("选择排序升序: ");
for (i = 1; i <= 10 ;i ++ ) printf("%3d",a[i]);
return 0;
}。

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