




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第56页,共56页第1章 算法的表示2第2章 数据类型,运算符与表达式5第3章 顺序程序设计7第4章 选择结构程序设计9第5章 循环控制14第6章 数组19第7章 函数24第8章 预处理命令28第9章 指针31第10章 结构体与共用体37第11章 位运算47第12章 文件49第1章 算法的表示一.用流程图表示算法1.常用的流程图符号起止框 输入输出框 判断框 处理框 或者 流程线 连接点 - 注释框 2.流程图的三种基本结构BPA顺序结构: 选择结构:当条件P成立时执行A,不成立时执行B A B 成立 不成立循环结构:P1A成立不成立当(while)型循环结构:当P1条件成立时,反复执行A操作,直到P1条件不成立为止直到(until)型循环结构:先执行A,判定P2条件是否成立,如果不成立,则执行A,直到P2成立;(注意:是不同于do.while的)AP2不成立成立 二用N-S流程图表示算法1.顺序结构 2.选择结构:当条件P成立时执行A,不成立时执行BAB P 成立 不成立 A B 3循环结构 (1) 直到型循环结构:先执行A,判定P1条件是否成立,如果不成立,则执行A,直到P1成立;(不同于do.while) A 直到P1成立 (2) 当型循环:当P1条件成立时,反复执行A操作,直到P1条件不成立为止(同while)当P1成立A开始1=s2=is*i=si+1=ii5输出s结束YN三举例说明例1求5!的算法用流程图表示如下:例2:用N-S图表示,将50名学生中成绩高于80分的学号和成绩输出来;如果ni表示第i个学生学号; gi表示第i个学生成绩,先输入50个学生学号和成绩,然后从中找出成绩高于80分的输出。1=i输入n(i)和g(i)i+1=i直到i501=i g(i)=80是 否输出n(i)和g(i)i+1=i直到i50三. 算法的特性l 有穷性:一个算法应包含有限的操作步骤而不能是无限的。 l 确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的、模棱两可的。l 有零个或多个输入。l 有一个或多个输出。l 有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。第2章 数据类型,运算符与表达式一数据类型 整型 int 字符型 char基本类型 单精度型 float 浮点型 枚举类型 双精度型 double数据类型 数组类型 构造类型 结构体类型 struct 指针类型 共用体类型 union 空类型 二.整型1.整型类型的分类(1)基本类型 int(2)短整型 short int(3)长整型 long int注:整型的默认类型为“有符号”型(signed),若要使用无符号型,在前面加unsigned2.整型数据的溢出当达到最大值后,又从最小值开始3.注意:(1)C语言没有规定各类数据所占的字节数,只要求long型数据的长度不短于int型,short型不长于int型,具体如何实现,由各计算机系统自行决定。通常的做法是把long定为32位,把short定位16位,而int可以是16位,也可以是32位。(2)在有些程序里会把unsigned int写为unsigned,例如定义时unsigned int u写为unsigned u三浮点型数据1.分类float 有效位数6到7位(Turbo C中) /*不同的编译系统,有不同的有效位数*/double 有效位数15到16位(Turbo C中)long Double 有效位数18到19位(Turbo C中)C语言编译系统将浮点型常量作为双精度来处理,如果在数的后面加上字母f或F(如1.65f、654.87F),这样编译系统就会把它们按单精度(32位,6到7位有效)处理。四.字符类型1.转义字符:n换行 t水平制表(跳到下一个Tab位置),一个制表区占8列 b退格,将当前位置移到前一列 r回车,将当前位置移到本行开头 f换页,将当前位置移到下页开头 代表一个反斜杠 代表一个单引号 ”代表双引号 ddd 1到3位8进制所代表的字符 xhh 1到2位十六进制所代表的字符注:(1)将一个字符常量放在一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中; (2)字符串结束的标志是0五.运算符的分类1.算术运算符2.关系运算符3.逻辑运算符(! & )4.位运算符 ( | &)5.赋值运算符6.条件运算符7.逗号运算符8.指针运算符9.求字节数运算符 (sizeof)10.强制类型转换运算符 (类型)11.分量运算符 (. -)12.下标运算符 ()13.其他 (如函数调用运算符())注:(1)%运算符两侧应为整型数据;(2)两个整数相除的结果为整数,舍弃小数部分,如果相除的两数中有负数,则舍入的方向是不固定的; (3)+ - * /运算的两个数中有一个为实数或双精度数,则结果为double型,因为所有实数都按double型进行运算;六.赋值运算符1.类型转换(1)如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换:a浮点型数据赋给整型变量时,舍弃浮点型的小数部分 b将整型数据赋给单双精度型时,数值不变,但以浮点数形式存储到变量中 c将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量中(4个字节);但应注意数字范围不溢出,如 float f;double d=123.456789e100;f=d就会溢出;将一个float数据给double变量时,数值不变,有效位扩展为16位 d字符型数据给整型变量,由于字符变量只占一个字节,整型变量2个,所以将字符放到整数的低八位中;但有两种情况;一种如果系统将字符处理为无符号型或者程序定义为无符号型,则将整型的高八位补零;一种系统将字符处理为有符号型,若字符最高位为0,则整型高八位为0,若字符最高位为1,则整型高八位为1; e将int short long数据给char变量时,将他们的低八位原封不动的给char变量 f将带符号的int(16位)给long(32位)时,要进行符号扩展,将int的16位给long低16位中,若int最高位为0(符号位),则long高16位为0,若最高位为1,则高16位为1,以保持数值不改变; 七逗号运算符和逗号表达式一般形式为 表达式1,表达式2,表达式n注:逗号运算符是所有运算符中级别最低的第3章 顺序程序设计一字符输入输出函数putchar(c) 字符变量c可以是字符变量或整型变量getchar(),它只能接收一个字符,getchar函数得到的字符可以赋给一个字符变量或者整型变量,也可以不赋给任何变量,作为表达式的一部分,例如:c=getchar();printf(“%c”,getchar();二格式输出printf函数Printf(格式控制,输出表列)%d 带符号的十进制形式输出整数;%md,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出%o 以八进制无符号形式输出整数%x,X 以十六进制无符号形式输出整数,用x则输出十六进制数的af时,以小写形式输出,用X时,则以大写字母输出%u 以无符号十进制形式输出整数%c 以字符输出,只输出一个字符%s 输出字符串%ms 输出的字符串占m列,如串长小于m,则左端补以空格,若大于m,则按实际位数输出%-ms 如串长小于m,则字符串向左靠,右补空格%m.ns 输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左侧补以空格; %-m.ns%f 以小数形式输出单,双精度数,隐含输出6位小数%m.nf 指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格%e,E 以指数形式输出实数,用e时指数以“e”表示,用E时指数以“E”表示;不指定输出数据所占的宽度和数字部分的小数部分,有的C编译系统自动指定给出数字部分的小数位数为6位,指数部分占5位,其中“e”占1位,指数符号占1位,指数占3位;例如printf(“%e”,123.456) 输出为 1.234560e+002,所输出的实数共占13列宽度,其中小数为6位,e+002为5位,猜想整数1位,标点1位。%m.ne和%-m.ne 此处n表示输出的数据的小数部分的小数位数%g G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0.用G时,若以指数形式输出,则指数以大写表示;三.格式输入scanf函数scanf(格式控制,地址表列)%d 输入带符号的十进制整数;%o 输入八进制无符号整数%x,X 输入十六进制无符号整数%u 输入无符号十进制整数%c 输入一个字符%s 输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志0作为其最后一个字符;%f 以小数形式输入单,双精度数%e,E,g,G 与f作用相同,e与f,g可以互相替换(大小写作用相同)l 用于输入长整型数据,以及double型数据(用%lf或者%le) h 用于输入短整型数据域宽 指定输入数据所占宽度(列数),域宽应为正整数* 表示输入项在读入后,但不赋给相应的变量四注意1.scanf使用时应,注意输入的数据格式和scanf函数上对应例如scanf(“%d,%d”,&a,&b) 输入时 3,4 必须有逗号;2.在使用%c格式输入字符时,空格字符和转义字符都作为有效的字符输入 scanf(“%c%c%c”,&a,&b,&c) 若输入m空格n空格k,则将空格给了b,n给了c五,举例例1.从键盘输入一个大写字母,要求改用小写字母输出#include main()char c1;c1=getchar();if(c1=A & c1=Z)c1=c1+32;printf(“%d,%cn”c1,c1);例2:输出实数时指定小数的位数main() float f=123.456;printf(“%f,%10f,%10.2f,%.2f,%-10.2f”,f,f,f,f,f);输出结果为:123.456001,123.456001,四个空格123.46,123.46,123.46四个空格第4章 选择结构程序设计一.关系运算符和关系表达式关系运算符及其优先次序(小于) (大于) =(大于或等于) (优先级相同高)=(等于) !=(不等于) (优先级相同低)关系运算符的优先级低于算术运算符,而高于赋值运算符二逻辑运算符和逻辑表达式1.逻辑运算符!逻辑非 & 逻辑与 逻辑或 (优先顺序由高到低)!(非) (高)算术运算符关系运算符&和赋值运算符 (低)三.if语句1.if语句的形式(1)if(表达式) 语句(2)if(表达式) 语句1 else 语句2(3)if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 . . .else if(表达式n) 语句nelse 语句n2.if语句的嵌套if() if() 语句1 else 语句2else if()语句3 else 语句4注意:else总是与它上面的最近的未配对的if配对3.条件运算符表达式1?表达式2:表达式3如果表达式1为真,执行表达式2,为假执行表达式3条件运算符的结合方向为“自右至左”例如:int a,b,c,d,ch; scanf(“%d,%d,%d,%d”,&a,&b,&c,&d); ch=ab? a: cd ? c:d;相当于ab? a: (cd ? c:d),“自右至左”结合。例:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。2.程序源代码:main()int score;char grade;printf(please input a scoren);scanf(%d,&score);grade=(score=90 ? A : (score=60 ? B : C);printf(%d belongs to %cn,score,grade);四switch语句switch(表达式)case 常量表达式1: 语句1;break; case常量表达式2: 语句2; break; . .case常量表达式n: 语句n; break;default: 语句n+1注意:执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号的作用,并不是在该处进行条件判断,所以break 必须有。五程序举例例1: 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2.程序源代码:main()long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15; if(i=100000) bonus=i*0.1; else if(i=200000) bonus=bonus1+(i-100000)*0.075; else if(i=400000) bonus=bonus2+(i-200000)*0.05; else if(i=600000) bonus=bonus4+(i-400000)*0.03; else if(i2)/*如果是闰年且月份大于2,总天数应该加一天*/sum+;printf(It is the %dth day.,sum);例3:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。1.程序分析:利用while语句,条件为输入的字符不为n. 2.程序源代码:#include stdio.hmain()char c; int letters=0,space=0,digit=0,others=0; printf(please input some charactersn); while(c=getchar()!=n) if(c=a&c=A&c=0&cy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。2.程序源代码:main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy)t=x;x=y;y=t; /*交换x,y的值*/if(xz)t=z;z=x;x=t;/*交换x,z的值*/if(yz)t=y;y=z;z=t;/*交换z,y的值*/printf(small to big: %d %d %dn,x,y,z);例如5:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。1. 程序分析:学会分解出每一位数,如下解释:2.程序源代码:main( )long a,b,c,d,e,x;scanf(%ld,&x);a=x/10000;/*分解出万位*/b=x%10000/1000;/*分解出千位*/c=x%1000/100;/*分解出百位*/d=x%100/10;/*分解出十位*/e=x%10;/*分解出个位*/if (a!=0) printf(there are 5, %ld %ld %ld %ld %ldn,e,d,c,b,a);else if (b!=0) printf(there are 4, %ld %ld %ld %ldn,e,d,c,b); else if (c!=0) printf( there are 3,%ld %ld %ldn,e,d,c); else if (d!=0) printf(there are 2, %ld %ldn,e,d); else if (e!=0) printf( there are 1,%ldn,e); 注意:%用于取余,/用于取整,混合运用可用于获取整数的特定位第5章 循环控制一.goto语句以及用goto语句构成循环goto语句为无条件转向语句,形式为:goto 语句标号;一般来说,有两种用途:(1) 与if语句一起构成循环结构(2) 由于从循环体中跳转到循环体外,可以用break和continue语句跳出本层循环和结束本次循环。goto语句的使用机会已经减少,只是需要从多层循环的内层循环跳到外层循环外时才用到goto语句,但是这种方法不符合结构化原则,只有不得已时才使用;例:用if和goto语句构成循环,从1到100的和main()int i=1,sum=0;loop: if(i=100) sum=sum+I; i+; goto loop;printf(“%d”,sum);二用while语句实现循环while(表达式) 语句 /*/特点:先判断表达式,后执行语句三用dowhile实现循环do 循环语句while(表达式);特点:先执行一次指定的循环体语句,然后判断表达式,当表达式的值为“非零”(真)时,返回重新执行循环体语句,直到表达式的值等于0为止,此时循环结束;例:while和dowhile的比较(1)#include (2) #includemain() main()int sum=0,i; int sum=0,i; scanf(“%d”,&i); scanf(“%d”,&i);while(i=10) do sum=sum+1; sum=sum+1; i+; i+ printf(“sum=%d”,sum); while(i=10); printf(“sum=%d”,sum); 当输入i的值小于或等于10时,二者得到的结果相同,当输入i大于10时,二者的结果就不同了;即当while后面的表达式的第一次的值为真时,两种循环体得到的结果相同;否则不同。四用for语句实现循环一般形式为:for(表达式1;表达式2;表达式3)语句执行过程:(1)先求解表达式1,(2)再判断表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行第(3)步。若为假,则结束循环,转到第5步(3)求解表达式3(4)转到上面第(2)步继续执行(5)循环结束,执行for语句下面的一个语句可以理解为:for(循环变量赋初值;赋值条件;循环变量增值)语句五循环的嵌套while do while . . . while() do do while() while(); while() for(;) for(;) do for(;) while() for(;) while(); 六break和continue语句1.break语句 一般形式 break;break语句主要用于跳出switch结构,继续执行switch语句下面的一个语句;还可以用来从循环体内跳出循环体外,即提前结束循环,接着执行循环下面的语句;break语句不能用于循环语句和switch语句之外的任何语句;2.continue语句 一般形式 continue;其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断;3. continue和break语句的区别:continue语句只是结束本次循环,而不是中止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立例如:把100200之间的不能被3整除的数输出;#include main()int n;for(n=100;n=200;n+) if(n%3=0) continue; /*如果能被3整除,结束本次循环*/ printf(“%d”,n); 七while循环程序举例例1:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。1.程序分析:用情况语句比较好,如果第一个字母一样,则判断。用情况语句或if语句判断第二个字母。2.程序源代码:#include void main()char letter;printf(please input the first letter of somedayn);while (letter=getch()!=Y) /*当所按字母为Y时才结束*/ switch (letter) case S:printf(please input second lettern); if(letter=getch()=a) printf(saturdayn); else if (letter=getch()=u) printf(sundayn); else printf(data errorn); break;case F:printf(fridayn); break;case M:printf(mondayn); break;case T:printf(please input second lettern); if(letter=getch()=u) printf(tuesdayn); else if (letter=getch()=h) printf(thursdayn); else printf(data errorn); break;case W:printf(wednesdayn); break;default: printf(data errorn); 例2:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。1.程序分析:采取逆向思维的方法,从后往前推断。2.程序源代码:main()int day,x1,x2;day=9;x2=1;while(day0) x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day-; printf(the total is %dn,x1);例3:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。1.程序分析:关键是计算出每一项的值。2.程序源代码:main() int a,n,count=1; long int sn=0,tn=0; printf(please input a and nn); scanf(%d,%d,&a,&n); printf(a=%d,n=%dn,a,n); while(count=n) tn=tn+a; sn=sn+tn; a=a*10; +count; printf(a+aa+.=%ldn,sn);八for循环程序举例例1:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编写程序找出三队赛手的名单。 1.程序分析:再a,b,c的对手没有分配重复的前提下,根据条件“a说他不和x比,c说他不和x,z比” 找出名单2.程序源代码:main()char i,j,k;/*i是a,j是b,k是c*/for(i=x;i=z;i+) /*用字符表示,方便于控制自加*/ for(j=x;j=z;j+) if(i!=j) for(k=x;k=z;k+) if(i!=k&j!=k) /*在i,j,k的对手没有重复的前提下,再根据题目的条件,a说他不和x比,c说他不和x,z比,算出名单*/ if(i!=x&k!=x&k!=z) printf(order is a-%ctb-%ctc-%cn,i,j,k); 例2:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 2.程序源代码:#include math.hmain()int m,i,k,h=0;printf(n);for(m=101;m=200;m+)k=sqrt(m); /*有的资料写为m+1*/ for(i=2;i=k+1) printf(%-4d,m); h+; if(h%10=0) printf(n); printf(nThe total is %d,h);第6章 数组一一维数组的定义和引用1.定义方式: 类型说明符 数组名常量表达式;注意:C语言不允许对数组的大小作动态的定义,即中括号内不能为变量2.一维数组元素的引用 数组名下标3.一维数组的初始化:(1)在定义数组时对数组元素赋予初值int a2=1,2; (2)可以只给以部分元素赋值 (3)在对全部数组元素赋值时,由于数据个数已确定,因此可以不指定数组长度二二维数组的定义和引用1.定义方式:类型说明符 数组名常量表达式常量表达式;2.二维数组元素的引用 数组名下标下标3.二维数组的初始化:(1)分行给二维数组赋初值 (2)可以只给以部分元素赋值 (3)如果对全部数组元素赋值初值,对第一维的长度可以不指定,但第二维的长度不能省,即列数不能省;三字符数组1.定义方式:char 数组名常量表达式2.字符数组的初始化:注意在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的,如果花括号中提供的初值个数大于数值长度,则按语法错误处理,如果花括号中提供的初值个数小于数值长度,则其余的与元素自动定义为空字符(0)。3.字符串和字符串结束标志注意:(1)在C语言中,是将字符串作为字符数组来处理的,字符串结束标志为0;系统会对字符串常量自动加一个0作为结束符。0代表ASCII码为0的字符,它不是一个可以显示的字符,而是一个“空操作符”,什么也不做。所以可以用字符串常量来使字符数组初始化 如char c=”I am happy”它等价于char c=I,a,m,h,a,p,p,y,0;(2)字符数组并不要求它的最后一个字符为0,甚至可以不包含0;但是为了使处理方法一致,可以人为地加上一个04.字符数组的输入输出(1)逐个字符的输入输出,用格式符“%c”(2)将整个字符串一次输入输出,用“%s”(3)如果一个字符数组中包含一个以上0,则遇到第一个0时输出就结束四.字符串输入输出函数(1)puts函数一般形式为:puts(字符数组) 将一个字符串(以0结束的字符序列)输出到终端。(2)gets函数一般形式为:gets(字符数组)从终端输入一个字符串到字符数组五字符串处理函数(1)strcat函数一般形式为:strcat(字符数组1,字符数组2)作用:连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值-字符数组1的地址例:printf(”%s”,strcat(str1,str2));注意:字符数组1必须足够大,连接前两个字符串后面都有0,连接时将字符串1后面的0取消,只在新的字符串最后保留0.(2)strcpy和strncpy函数一般形式为:strcpy(字符数组1,字符串2)作用:将字符串2复制到字符数组1中去注意:字符数组1必须足够大,以便容纳被复制的字符串,字符数组1必须写成数组名的形式,字符串2可以是字符数组名,也可以是一个字符串常量一般形式:strncpy(字符数组1,字符数组2,n);strncpy(str1,str2,2);作用为:将str2中最前面2个字符复制到str1中原有的最前面2个字符,但是复制的字符个数n不应多于str1中原有的字符(不包括0)(3)strcmp函数一般形式为:strcmp(字符串1,字符串2)作用是比较字符串1和字符串2,比较规则为,对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到0为止。若全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准;比较结果由函数值带回a 如果字符串1=字符串2,则函数值为0b 如果字符串1字符串2,则函数值为一个正整数c 如果字符串1字符串2,则函数值为一个负整数(4)strlen函数一般形式为:strlen(字符数组)作用为:测试字符串长度的函数,函数的值为字符串中的实际长度(不包括0)(5)strlwr函数一般形式为:strlwr(字符串)作用为:将字符串中的大写字母换成小写字母(6)strupr函数一般形式为:strupr(字符串)函数的作用:将字符串中小写字母换成大写字母六一维数组举例例1:对10个数从小到大进行排序1.程序分析:可以利用选择法,即第一个元素和后9个比较,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。 2.程序源代码:main()int i,j,min,tem,a10; /*input data*/printf(please input ten num:n);for(i=0;i10;i+)printf(a%d=,i);scanf(%d,&ai);printf(n);for(i=0;i9;i+)min=i;for(j=i+1;jaj) min=j;tem=ai;ai=amin;amin=tem;/*output data*/printf(After sorted n);for(i=0;i10;i+)printf(%5d,ai);例2:有一个已经排好顺序的数组。现输入一个数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年药剂科人才培养工作总结与计划
- 助剂工段新员工复习试题含答案
- 浮游动物食物链顶端物种生态学研究-洞察阐释
- 让生活更美好的绿色出行方案
- 橡胶加工企业的数字化转型路径-洞察阐释
- 棉花机械制造技术标准-洞察阐释
- 湖北中烟工业公司考试真题2024
- 人类学与技术-技术对人类学研究的新挑战-洞察阐释
- 智能物业承接查验的新流程
- 一致性算法比较-洞察阐释
- 个人承诺书(建造师)
- 中班数学活动《破译密码》
- 应急预案(危货运输企业)
- 高碳铬铁的冶炼工艺
- 毕业论文年产5000吨香肠工厂的初步设计
- 养生馆营销策划方案
- 宁波市矿产资源总体规划(提纲)
- 更换破碎机耦合器措施-
- 汽车4S店顾客抱怨处理
- 《机械装配技术》复习题
- 汇川结构件编码规则PPT课件
评论
0/150
提交评论