c语言典型例题(二级考试)

上传人:xzh****18 文档编号:51728541 上传时间:2018-08-16 格式:PPT 页数:43 大小:350KB
返回 下载 相关 举报
c语言典型例题(二级考试)_第1页
第1页 / 共43页
c语言典型例题(二级考试)_第2页
第2页 / 共43页
c语言典型例题(二级考试)_第3页
第3页 / 共43页
c语言典型例题(二级考试)_第4页
第4页 / 共43页
c语言典型例题(二级考试)_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《c语言典型例题(二级考试)》由会员分享,可在线阅读,更多相关《c语言典型例题(二级考试)(43页珍藏版)》请在金锄头文库上搜索。

1、典 型 例 题例1:求 main( ) int i, sum;for (sum=0, i=1; imax) max=score;if(score100main( ) int r; float area;for(r=1; r100) break;printf(“r=%d,area=%-7.2fn”, r, area); 例7:把100200之间不能被3整除的数输出;并控 制一行输出10个数据。main( ) int n, c=0;printf(“n”);for(n=100; n=1; i-)if (m%i=0printf(“GCD=%d,SCM=%dn”, i, m*n/i);18,12 17,

2、3GCD=6,SCM=36 GCD=1,SCM=51算法 2: (辗转相除法) main( ) int a, b, m, n, r, t;printf(“Enter a, b:”);scanf(“%d,%d”, m=a, n=b; /*产生a、b副本*/if(mn?例9:判断m是否素数 素数:除1和它本身之外再无别的约数; 算法:判断m%i=0成立否?i取值: 2(m-1) 或:2 #include “math.h“main( ) int m, i, k;printf(“tEnter m: “); scanf(“%d“, k=sqrt(m);for(i=2; ik)printf(“%d is

3、a prime number.n“, m);else printf(“%d is not prime number.n“, m); 例10:求100 200之间的全部素数,并控制换行。 算法:外循环控制m取100 200之间的奇数。#include “math.h“ main( ) int m, i, k, c=0; printf(“n“);for(m=101; mk) /*ik成立表示未出现约数*/ printf(“%-6d“, m);c+;if(c%10=0)printf(“n“); 例11:用 公式求的近似值,直到最后一项的绝对值小于 10-4 为止。考虑问题:1) 需循环累加,但累加项

4、数不确定;2) 有规律的量分母n的取值:1、3、5、7 奇偶项符号s的变化:+、-、+、-3) 循环条件:fabs(t)=10-4循环,t为某项值。 #include “math.h“ main( ) int s;float n, t, pi;n=1.0; s=1; t=1./n; pi=0;while(fabs(t)=1e-4) /*判断某项*/ pi=pi+t; /*累加和*/n=n+2.0; /*改变分母*/s=-s; /*符号变反*/t=s/n; /*计算下一项*/printf(“PI=%10.6fn“, pi*4);getch( );例12:求Fibonacci数列的前40个数,并按

5、一行4个数排列输出。1,1,2,3,5,8,13,21 考虑问题:1) 属递推问题:从前一项或几项推出下一项结果;2) 定义两个变量 :f1=f2=1; f1=f1+f2; f2=f2+f1;由前两项相加求得下一项后第一项可覆盖,即变 量的值是不断更迭的(迭代法)。main( ) long f1, f2, i;f1=f2=1;for(i=1; i0; j-) printf(” ”);for(j=i*2-1; j0; j-) printf(”*”);printf(”n”);for(i=1; i0; j-) printf(” ”);for(j=7-i*2; j0; j-) printf(”*”);

6、printf(”n”); 例15: 输入一行英文文本(最长80),分别统计文本中字母、数字、空格字符个数及所有字符个数。 #include “stdio.h“ main( ) int i, l, n, s, all; char str80, t;l=n=s=all=0;gets(str);for(i=0; (t=stri)!=0; i+) /*t:提高效率*/ if(t=A i-)printf(”%d,”, ai);for(i=1; i aj+1) swap( 例18:用选择法对一数列按降序排序(由大到小) #define N 5 main() int aN, i, j, p, t;for(i

7、=0; iap) p=j; /*条件成立更新p*/if(p!=i) t=ai; ai=ap; ap=t; /*输出*/ 例19:利用折半查找法实现一维数组的查找 #define N 10 main( ) int aN=2,3,5,6,12,15,23,46,50,100;int num, low, high, mid, mark=-1;printf(“Enter check number:“);scanf(“%d“, low=0; high=N-1;low=0; high=N-1;while(low main() char a80;int n, i; gets( a ); n = strlen

8、(a) ; for ( i = 0; i num=n; p1-score=s; /*转存入节点*/if(head=NULL) head=p2=p1;else p2-next=p1; p2=p1; p2-next=NULL; /*末尾链节成员赋空*/return(head); /*返回链表头指针*/ /*creat*/*输出各节点*/void plink(struct student *head) struct stduent *p;int i;for(i=1; inext;printf(“%d:num=%ld,score=%5.2fn“, i, p-num, p-score);return;v

9、oid plink(struct student *head) /*更具通用性*/ struct student *p;p=head;while(p!=NULL) printf(“num=%ld, score=%5.2fn“, p-num, p-score);p=p-next;return; 注:本形式的链表输出函数具有通用性,可适应由于删除 或插入节点引起的链表长度的变化。例25 删除指定的节点struct student *del(struct student *head, long n) struct student *p1, *p2; /*n:要删除学号*/p1=head;if(p1-

10、num=n) head=p1-next; /*删除首节点*/else do p2=p1; p1=p1-next; while(p1!=NULL if(p1-num=n) p2-next=p1-next; /*找到*/else printf(“Not be found!n“); /*未找到*/free(p1); /*释放被删除节点的存储区*/return(head); /*返回头指针*/ 例26 在链表中插入节点的函数:struct student *insert(struct student *head) struct student *p0, *p1, *p2;long n; int len

11、;len=sizeof(struct student);p0=(struct student *)malloc(len); /*申请新节点*/printf(“Enter num,score to insert:“);scanf(“%ld,%f“, n=p0-num; /*产生学号副本n*/p1=head; /*从首节点开始查找*/ p1=head; /*插入在头部*/if(nnum) p0-next=head; head=p0; else do /*查找插入位置*/ p2=p1;p1=p1-next; while(p1!=NULL p0-next=p2-next; /*插入在其余位置*/p2-next=p0;return(head); /*insert*/

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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