C语言新教材PPT课堂课件-C语言总结

上传人:枫** 文档编号:567980713 上传时间:2024-07-22 格式:PDF 页数:44 大小:291.18KB
返回 下载 相关 举报
C语言新教材PPT课堂课件-C语言总结_第1页
第1页 / 共44页
C语言新教材PPT课堂课件-C语言总结_第2页
第2页 / 共44页
C语言新教材PPT课堂课件-C语言总结_第3页
第3页 / 共44页
C语言新教材PPT课堂课件-C语言总结_第4页
第4页 / 共44页
C语言新教材PPT课堂课件-C语言总结_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C语言新教材PPT课堂课件-C语言总结》由会员分享,可在线阅读,更多相关《C语言新教材PPT课堂课件-C语言总结(44页珍藏版)》请在金锄头文库上搜索。

1、一一 素素数数、随随机机数数、最最大大值值和和最最小小值值(1) 判判断断一一个个数数是是否否为为素素数数素素数数:只只能能被被1和和它它本本身身整整除除的的数数。 要要判判断断一一个个正正整整数数m是是不不是是素素数数,需需要要用用大大于于1且且小小于于它它本本身身的的正正整整数数去去除除它它,只只要要它它能能被被其其中中的的一一个个数数整整除除,就就说说明明它它不不是是素素数数。若若所所有有的的数数都都不不能能被被它它整整除除,说说明明它它是是素素数数。例例1:输输出出3100之之间间的的所所有有素素数数main() int i,n,k=0; for(n=3;n100;n+) for(i=

2、2;in;i+) if(n%i= =0) break; if(i= =n) printf(“%4d”,n); k+; if(k%10= =0) printf(“n”); (2) 随随机机数数 函函数数random(int num)用用于于产产生生0,num)区区间间的的一一个个整整数数。其其包包含含在在“stdlib.h”头头文文件件中中 为为了了使使每每一一次次运运行行都都产产生生一一组组新新的的随随机机数数,可可以以使使用用randomize()函函数数是是每每次次均均产产生生不不同同的的随随机机数数。其其包包含含在在头头文文件件“time.h”中中(3) 最最大大值值与与最最小小值值 我

3、我们们需需要要将将最最大大值值(或或最最小小值值)保保存存在在一一个个变变量量中中(假假设设设设变变量量名名为为max和和min),变变量量的的初初值值我我们们一一般般设设为为数数列列中中的的第第一一个个值值。例例2:产产生生20个个50到到200之之间间的的随随机机整整数数,并并求求出出其其中中的的素素数数、最最大大值值和和最最小小值值。#include stdlib.h#include time.hmain() int a20,b20,max,min,k,i,j=0; randomize(); for(i=0;i20;i+) ai=random(151)+50;产产生生20个个50,200

4、区区间间内内的的随随机机数数 for(i=0;i20;i+) for(k=2;kai;k+) if(ai%k=0) break; if(k=ai) bj=ai; j+; for(i=0;ij;i+) printf(%4d,bi); printf(n);从从a数数组组中中找找出出其其中中的的素素数数放放在在b数数组组中中输输出出b数数组组中中的的各各个个元元素素 max=a0; min=a0; for(i=1;imax) max=ai; if(aimin) min=ai; printf(max=%4d,min=%4dn,max,min);求求出出a数数组组中中的的最最大大值值与与最最小小值值二二

5、二二、求求求求累累累累加加加加和和和和的的的的算算算算法法法法l1 循循环环条条件件 次次数数控控制制(加加多多少少项项n,20,100) 用用误误差差控控制制(直直到到某某一一项项小小于于或或大大于于一一个个数数) 使使用用终终止止标标记记l2 循循环环体体求求和和求求每每一一项项:从从前前一一项项求求出出后后一一项项、单单独独求求每每一一项项为为下下一一项项作作准准备备l3 循循环环初初值值:设设为为0、设设为为第第一一项项 注注意意双双重重循循环环设设初初值值的的位位置置4-16 4-16 有有有有一一一一分分分分数数数数序序序序列列列列 的的的的前前前前2020项项项项之之之之和和和和

6、main() int i; float f1=1,f2=1,f3,s=0; for ( i=1;i=1e-5) x0=x; f=(2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1; printf(%10.8f n,x); 四四、数数字字分分离离 有有些些题题中中经经常常要要求求将将一一个个数数中中的的每每一一位位数数字字或或者者其其中中的的某某些些位位数数字字输输出出,就就需需要要使使用用到到数数字字分分离离技技术术。 如如在在求求解解同同构构数数等等问问题题时时都都需需要要使使用用到到数数字字分分离离技技术术例例:给给出出一一个个不不多多于于4位

7、位的的正正整整数数,要要求求:求求出出它它是是几几位位数数,并并且且按按逆逆序序打打印印出出各各位位数数字字 main() int i,j,k=0; scanf(%d,&i); while(i!=0) printf(%4d,i%10); i=i/10; k+; printf(nk=%dn,k);四四、以以特特殊殊字字符符做做为为终终止止标标志志例例:统统计计从从键键盘盘输输入入字字符符的的个个数数,以以#结结束束。#include stdio.hmain() char c; int i; c=getchar(); for(i=0; c!=#; i+); c=getchar(); printf(

8、the number is:%d,i);五五、排排序序问问题题常常用用的的排排序序方方法法有有四四种种:顺顺序序交交换换法法、选选择择法法、冒冒泡泡法法、插插入入法法a.顺顺序序排排序序法法(n=10)指指导导思思想想:先先设设定定a0中中存存放放最最小小值值,然然后后用用a0分分别别与与其其后后的的每每一一个个数数aj(j=1.9)进进行行比比较较,在在比比较较过过程程中中如如果果发发现现有有比比a0小小的的数数,就就将将a0与与aj互互换换,一一遍遍扫扫描描之之后后,a0就就是是10个个数数中中最最小小的的数数,重重复复此此算算法法,只只是是每每次次比比较较时时,进进行行比比较较的的数数的

9、的范范围围向向后后移移一一个个位位置置。反反复复执执行行(n-1)次次上上述述操操作作例例1:将将数数组组a中中的的10个个数数按按照照由由大大到到小小的的顺顺序序排排好好(使使用用顺顺序序交交换换法法)#define N 10main( ) int aN,i,j,k,t; for(i=0;iN;i+) scanf(%d,&ai); for (i=0;iN-1;i+) for (j=i+1;jN;j+) if (ajai) t=aj; aj=ai; ai=t; for(i=0;iN;i+) printf(%5d,ai);b.选选择择排排序序法法 指指导导思思想想:不不急急于于交交换换,先先找找

10、出出a0到到a9中中的的最最小小数数所所在在的的位位置置k,一一遍遍扫扫描描完完之之后后,在在把把a0与与ak进进行行交交换换,重重复复次次算算法法9次次。例例2:将将数数组组a中中的的10个个数数按按照照由由大大到到小小的的顺顺序序排排好好(使使用用选选择择法法)#define N 10main( ) int aN,i,j,k,t; for(i=0;iN;i+) scanf(%d,&ai); for (i=0;iN-1;i+) k=i; for(j=i+1;jN;j+) if(ajak) k=j; t=ai; ai=ak; ak=t; for(i=0;iN;i+) printf(%5d,ai

11、);c.冒冒泡泡法法指指导导思思想想:是是将将相相邻邻的的两两个个数数进进行行比比较较,若若前前一一个个数数比比后后一一个个数数大大,在在交交换换两两元元素素的的内内容容,否否则则不不交交换换。从从而而把把最最大大的的数数放放在在最最后后位位置置。#define N 10main( ) int aN,i,j,k,t; for(i=0;iN;i+) scanf(%d,&ai); for (i=0;iN-1;i+) for(j=0;jN-i-1;j+) if(aj+1aj) t=aj; aj=aj+1; aj+1=t; for(i=0;iN;i+) printf(%5d,ai);例例:有有N个个数

12、数已已按按由由小小到到大大的的顺顺序序排排好好,要要求求输输入入一一个个数数,把把它它插插入入到到原原有有序序列列中中,而而且且仍仍然然保保持持有有序序。输输入入数数据据时时,使使其其数数据据排排列列仍仍然然有有序序解解题题思思想想: 先先找找到到待待插插入入的的位位置置,然然后后将将从从该该位位置置起起到到数数组组的的最最后后位位置置的的所所有有元元素素均均向向后后移移一一个个位位置置。 main() int a100,i,j,n,x; scanf(%d,&n); /* 确确定定数数组组元元素素中中的的个个数数 */ for (i=0;in;i+) scanf(%d,&ai); /* 给给数

13、数组组的的每每个个元元素素赋赋初初值值 */ scanf(%d,&x); /* 输输入入待待插插入入的的数数据据 */ for (i=0;ix) break; /* 找找到到待待插插入入的的位位置置i */ for (j=n-1;j=i;j-) aj+1=aj; /* 从从ai到到an-1之之间间的的数数组组军军后后移移一一位位*/ ai=x; /*把把数数据据x放放到到ai位位置置处处*/ for (i=0;i=n;i+) printf(%5d,ai); printf(n); 12 34 -9 2 16 39 121 -7 6 23-934-9343412-92234122161634163

14、9 121 -7-7121393416122-7661213934161262323121393423例例:用用插插入入排排序序法法使使任任意意十十个个数数据据升升序序 main() int i,j,m,k; static a10=12,34,-9,6,8,7,44,56,121,0; for(i=1;i=9;i+) for(j=0;jai) break; m=ai; for(k=i-1;k=j;k-) ak+1=ak; aj=m; for(i=0;i=9;i+) printf(%5d, ai); printf(n); 寻寻找找待待插插入入位位置置j将将j后后的的元元素素后后移移一一个个位位置

15、置, 插插入入main( ) int x50,y,n,i; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&xi); printf(%5d,xi); printf(n); for(i=0;i=(n-1)/2;i+) y=xi; xi=xn-1-i; xn-1-i=y; for(i=0;in;i+) printf(%5d,xi); printf(n); 方方法法1: 例例6将将n(n=50)个个整整数数按按逆逆序序重重放放在在数数组组中中。main( ) int x100,n,m,i,j; scanf(%d,&n); for(i=0;in;i+) scanf(%d,

16、&xi); for(j=1;j=n;j+) m=x0; for(i=0;in-j;i+) xi=xi+1; xn-j=m; for(i=0;in;i+) printf(%5d,xi); printf(n); 方方法法2注注意意:求求解解水水仙仙花花数数、完完数数、同同构构数数、最最大大公公约约数数和和最最小小公公倍倍数数以以及及费费波波拉拉切切数数列列等等内内容容水水仙仙花花数数:是是一一个个三三位位数数,其其各各位位数数字字的的立立方方和和等等于于该该数数本本身身。如如:153=13+53+33完完数数:一一个个数数等等于于它它的的所所有有因因子子(不不包包括括它它本本身身)之之和和。如如:

17、6=1+2+3同同构构数数:一一个个数数等等于于它它的的平平方方数数的的右右端端。如如5的的平平方方是是25最最大大公公约约数数:使使用用辗辗转转相相除除法法进进行行求求解解图图形形 1: (法法一一)main() int i,j; for (i=1;i=5;i+) for (j=1;j=5;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * * * * * * * * * * * * * *六六、简简单单图图形形打打印印图图形形 1:(法法二二)main() int i; for (i=1;i=5;i+) printf (“ * *

18、 * * *n”); * * * * * * * * * * * * * * * * * * * * * * * * *图图形形 2:(法法一一)main() int i,j; for (i=1;i=5;i+) for ( j=1;ji;j+) printf ( “ “); for ( j=1;j=5;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * * * * * * * * * * * * * *图图形形 2:(法法二二)main() int i,j; for (i=1;i=5;i+) for ( j=1;ji;j+) prin

19、tf ( “ “); printf (“ * * * * *n”); * * * * * * * * * * * * * * * * * * * * * * * * *图图形形 3:main() int i,j; for (i=1;i=5;i+) for (j=1;j=5-i:j+) printf ( “ “); for (j=1;j=5;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * * * * * * * * * * * * * *图图形形 4 :main() int i,j; for (i=1;i=5;i+) for (j=

20、1;j=i;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * 图图形形 5:main() int i,j; for (i=1;i=5;i+) for (j=1;j=5-i;j+) printf (“ “); for (j=1;j=i;j+) printf (“*”); printf(“n”); * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *图图形形6:main() int i,j,k; for(i=1;i=4;i+) for(j=1;j=

21、4-i;j+) printf( ); for(k=1;k=2*i-1;k+) printf(*); printf(n); for(i=1;i=3;i+) for(j=1;j=i;j+) printf( ); for(k=1;k=0;i-) if(stri=c) for(k=i;strk!=0;k+) strk=strk+1; strk=0; puts(str); 练练习习2、编编写写程程序序,比比较较两两个个字字符符串串的的大大小小。(不不能能使使用用strcmp()函函数数)z比比较较规规则则:逐逐个个字字符符进进行行比比较较,直直到到有有两两个个字字符符不不等等或或有有一一个个字字符符串串

22、结结束束为为止止。main()char s180,s280; int i,k; gets(s1); gets(s2); i=0; while(s1i!=0&s2i!=0) if(s1i!=s2i) break; else i+; k=s1i-s2i; if(k0) printf(s1s2n); else if(k0) printf(s10) printf(s1s2n); else if(k0) printf(s1s2n); else printf(s1=s2n); 练练习习3、判判断断一一字字符符串串是是否否为为另另一一个个字字符符串串的的子子串串,若若是是则则返返回回第第一一出出现现的的起起

23、始始位位置置,否否则则则则返返回回0main() static char s120=I love China!; static char s220=love; int i,j,k,m=0; for(i=0;s1i!=0;i+) if(s1i= =s20) for(j=1,k=i+1;s2j!=0;j+,k+) if(s1k!=s2j) break; if(s2j=0) m=i; break; printf(station is %dn,m);八八、对对矩矩阵阵的的操操作作注注意意:矩矩阵阵的的主主对对角角线线、副副对对角角线线的的概概念念 如如何何实实现现矩矩阵阵转转置置、求求解解矩矩阵阵中中

24、指指定定的的元元素素之之和和等等问问题题(如如求求解解右右上上三三角角、左左下下三三角角的的元元素素之之和和) 打打印印杨杨辉辉三三角角形形(用用一一维维和和二二维维分分别别实实现现)main() static int a10; int i,j; a0=1; for (j=0;j35;j+) printf( ); printf(%6d,a0); printf(n); for(i=1;i0;j-) aj=aj+aj-1; for (j=0;j35-3*i;j+) printf( ); for (j=0;j=i;j+) printf(%6d,aj); printf(n); 求求解解各各行行元元素素的的过过程程main() int a1010; int i,j; for (i=0;i10;i+) ai0=1;aii=1; for (j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i10;i+) for(j=0;j=i;j+) printf(%6d,aij);printf(n); for (i=0;i10;i+) for (j=0;j35-3*i;j+) printf( ); for (j=0;j=i;j+) printf(%6d,aij); printf(n);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号