版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C 语言典型算法和 C 实验程序按下 Ctrl 键时,单击目录可显示指定页C 语言典型算法和 C 实验程序1 穷举法2 迭代法3 判断素数4 冒泡法教材 P84 教材 P86 .教材 P87 教材 P95 .5 显示杨辉三角形的前 10 行 第4章 第5章 第6章 第7章 第8章选择结构 循环结构 数组 函数 指针 11233456911141 穷举法 教材 P84例 1 我国古代数学家在 中出了一道题,译成现代汉语意思: 公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只 1 元。用 100 元买 100 只鸡,问公 鸡、母鸡、小鸡各多少只 ?# include main( )intx, y
2、, z;printf(%8s%8s%8sn, 公鸡, 母鸡, 小鸡);for (x=1; x=19; x+)for (y=1; y=33 ; y+)z=100-x-y;x, y, z);if (5*x+3*y+z/3.0=100) printf(%8d%8d%8dn, 例2 有36块砖 36人搬,男搬 4,女搬 3,小孩 2人搬 1砖。要求一次搬完, 问男、女、小孩各 若干(人)?#include main( )int x,y,z;printf(%6s%6s%6sn, 男, 女, 小孩 );for(x=1; x9;x+) for(y=0;y12; y+) z=36-x-y;if (4*x+3*
3、y+z/2.0=36) printf(%6d%6d%6dn, x,y,z); 2 迭代法 教材 P86求 Fibonacci 数列:1,1, 2, 3, 5, 8, 13,的前 40 项#include main( )long f1, f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(%12ld %12ld,f1,f2);if(i%2=0)printf(n);f1=f1+f2;f2=f2+f1;3 判断素数 教材 P87#include#include main( ) int m,printf( 请输入一个正整数 ); scanf(%d,&m); k=sqrt
4、(m);for (i=2; ik) printf(%d 是素数 n,m); else printf(%d 不是素数 n,m); i, k;4 冒泡法 教材 P95对 10 个数组元素 a0, a2, a3,进0行排序(由小到大)。#include main( ) int a10, i, j, t; printf(input 10 numbers :n);for (i=0; i10; i+) scanf(%d, &ai); for(j=0; j9; j+) for(i=0 ;iai+1)t=ai; ai=ai+1 ;ai+1=t;printf(the sorted numbers :n);for
5、(i=0; i10; i+) printf(%d ,ai);printf(n);5显示杨辉二角形的前10行(1)各行第1个和最后一个数都是12个数之和。从第3行起中间的那些元素的值,是上一行同一列和前一列 aij=ai-1j+ai-1j-1;1#include#define main() int i789vstdio.hN 10101521283641020355684153570126215612672884836j , aNN;for (i=0 ; ivN ; i+) ai0=1;aii=1;for (i=2; ivN; i+)for (j=1; jvi; j+) aij=ai-1j+ai
6、-1j-1;for (i=0; ivN; i+)for(j=0; jv=i; j+) printf(%-5d, aij); p rintf(n);第 4 章 选择结构1有3个整数a, b, c,由键盘输入,输出其中最大的数。#include main( )int a, b, c, max;printf( “input a b c”);scanf(“%d%d%d ”, &a,&b,&c);if (ab) max=a;else max=b;if (cmax) max=c;printf(“max=%dn”, max);(x1)(1=x=10)有一函数y = x= 2x-1= 3x-11用scanf函
7、输入x的值,求y值。#include main( )float x, y;printf(please enter x); scanf(%f, &x);if (x=1 & x10)y=2*x-1;else y=3*x-11;printf(x=%.2f y=%.2fn,x,y); 3 给出一个百分制成绩,要求输出成绩等级 90分以上(含90分)为为卞”,70分以上、80分以下 分以下(含 60分、不含 70分)(不用switch语句)#include main( ) float score;printf(input score); scanf(%f, &score); if (score=90)
8、printf(An); else卞”、80 分以上、 90 分以下(含 含 70 分、不含 80 分)为 为b”,60分以下(不含t”、b”、t”。80 分、不含 90 分) “t ” , 60分以上、 70 60分)为elseelseelseif (score=80) if(score=70) if(score=60) printf(E n);printf(Bn);printf(Cn);printf(Dn);第 5 章 循环结构1 求数列前 20 项之和: 2/1,3/2,5/3,8/5, 13/8 #include main( )int i=1;float a=2, b=1, c, sum
9、=0, term;while (i=20)term=a/b;a=c;sum=sum+term;c=a+b; b=a;i+; printf(sum=%.2fn, sum);2 计算多项式前 n 项的值: s=a+aa+aaa+aaaa+ , a,n 由键盘输入。算法提示:该多项式迭代公式为: term=term*10+a , sum=sum+term #include main( )int a,n,i;double sum, term; printf(input a n ?); scanf(%d%d,&a,&n); sum=0; term=a;for (i=1; i=n; i+) sum=sum
10、+term;term=term*10+a; printf(sum=%.0fn,sum);小孩 2人搬 1 块,小孩);36人搬 36块砖, 男 4 女 3 求男、女、小孩各多少人。#include main( )int x,y,z;printf(%6s%6s%6sn, 男, 女 , for(x=1; x9; x+) for(y=1 ;y12; y+) z=36-x-y;if (4*x+3*y+z/2.0=36) printf(%6d%6d%6dn, x,y,z); 给出一个百分制成绩,要求输出成绩等级 A 、B 、C 、D 、E 。90分以 上(含90分)为A , 80分以上、90分以下(含8
11、0分、不含90分)为B, 70分以上、80分以下(含70分、不含80分)为C , 60分以上、70分以下(含 60分、不含70分)为D , 60分以下(不含60分)为E。(用 switch 语句)#include main( ) int score,temp; char grade ; while (1) printf( 请输入学生成绩 -1 结束: ); scanf(%d,&score); if (score=-1) break; temp=score/10; switch (temp)break; break; break; break;case 10: case 9: grade=A;
12、case 8: grade=B; case 7: grade=C; case 6: grade=D; case 5: case 4: case 3: case 2: case 1: case 0: grade=E;Printf(成绩为 d,相应等级是 cn, score, grade); 请用 switch 语句求一笔定期存款的到期利息:输入存款数、存款年数,输出 到期利息。设存款利率为 1年期 2%,2年期2.5%,3年期2.8%,5年期 3%。 利息计算公式:a=pxrh,设:a到期利息,p存款数,n年数,r利率(用 switch 语句)#include main( )float a, p
13、, r;int n;while (1)Printf(请输入存款数 年数(存款数输入0结束程序);scanf(%f%d, &p, &n);case1:r=0.02;break;case2:r=0.025;break;case3:r=0.028;break;case5:r=0.03;break;break;if (p=0)switch(n)a=p*r*n;年数:d 利息:%.2fn, p,n,a);Printf(存款数:%.2f 第 6 章 数组1对8个数组元素a1, a2, a3,a8进行排序(由小到大)。 #include main( )int a8, i, j, t; printf(inpu
14、t 8 numbers :n);for (i=0; i8; i+) scanf(%d, &ai); for(j=0; j7;j+)for(i=0 ;iai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers :n);for(i=0; i8; i+)printf(%d ,ai); printf(n);2 将一个数列头尾颠倒。设该数列为 1, 3, 5, 7, 9, 11,15。 要求按 15, 11, 9, 7, 5, 3, 1 的顺序存放并输出。 算法提示:先找到数组的中点位置,然后依次将头尾元素交换。 #include #define N 7 ma
15、in( ) int i, t, aN;for (i=0; iN; i+) scanf(%d, &ai);iN/2; i+)ai=aN-1-i; aN-1-i=t;for (i=0; t=ai;for (i=0; iN; i+) printf(%4d,ai); 3求一个3M矩阵的所有靠外侧的的元素之和。#include main( )int a34, i, j, sum=0;printf( 请输入数组元素值 n);for (i=0; i3; i+)for (j=0; j4; j+) scanf(%d,&aij);printf(n);for (i=0; i3; i+)for (j=0; j4; j
16、+)if (i=0 | i=2| j=0 | j=3) sum=sum+aij; printf(sum=%dn, sum);4分别求4X 4矩阵的主对角线上的元素之和,与另一条对角线上的元素之和的乘积。#include vstdio.hmain( )a44 , i, j, sum1=0, sum2=0; intlong m;printf(请输入数组元素值n);for (i=0; iv4; i+)for (j=0; jv4; j+) scanf(%d,&aij);for (i=0; iv4; i+)for (j=0; jv4; j+) if (i=j)sum1=sum1+aij;if (i+j)
17、=3) sum2=sum2+aij; m=sum1*sum2;p rintf(m=%ld n , m );5将字符数组a中下标为单号(1, 3, 5,)的元素值赋给另一个字符数组 b, 然后输出a和b的内容。#include vstdio.hmain( )char a10, b10;int i,j=0;printf(请输入字符串);gets(a);for (i=0;ai!=0;i+)if (i%2=1) bj=ai;j+;bj= 0;P uts(a);P uts(b);第7章函数2-x+1 (x=0)编一个函数,并用主函数调用它#include main( )float x1,y1;float
18、 func(float x);printf( 请输入X1的值);scanf(%f,&x1);y1=func(x1);printf(x1=%f y1=%f n,x1,y1); float func(float x)float y;if (x0) y=x*x-x+1;else y=x*x*x+x-5;return (y); 2 编写一个函数 prt(c,n) ,打印给定的字符 c, 打印 n 次。在主函数中调用 prt(c,n) 函数,打印一个直角三角形。注意:函数 prt(c,n) 完成输出功能,是一个 void 函数,有两个参数。*#include void prt(char ch , int
19、 n) int i;for (i=1; i=n; i+) printf(%c, ch); printf(n); main( )int i;for (i=1; i=6; i+) prt(*, i);3用函数的嵌套编写程序计算1! +2! +3! +n!的值,n为大于等于0的整数。 #include double fac(int m) int i;double t=1;for(i=1; i=m; i+)t=t*i;return(t);double sub(int n) int i;double sum=0;for (i=1; i=n; i+) sum=sum+fac(i);return(sum);
20、main( )int n; double s; printf(input n?); scanf(%d, &n); s=sub(n); printf(s=%.0fn, s); 4 在自定义函数中求(1) main( ) 中的数组 3个元素的立方和, (2)并每个元素在函数中扩大 10 倍。然后在 main 函数中显示出来。#include double func(int b ) int i;double s=0; for(i=0; i3; i+) s=s+bi*bi*bi;bi=10*bi; return(s); main( )int i, a3; double sum;for(i=0; i3;
21、 i+)printf(input a%d , i); scanf(%d, &ai); sum=func(a);printf(%d %d %dn, a0,a1,a2); printf(%.0fn , sum);第 8 章 指针1 使两个指针变量交换指向。#include main( )int a=3, b=5, *p1, *p2, *p; p1=&a; p2=&b;printf(%p %pn, p1, p2); p=p1; p1=p2; p2=p; printf(%p %pn, p1, p2); i 。 i , j , k 的原值由键“交换前 i=%d j=%d k=%dn, i,j,k); p
22、2=&j; p3=&k;*p2=*p1;*p1=*p3;*p3=t;交换后 i=%d j=%d k=%dn, i,j,k);2交换两个指针变量所指向的变量的值。#include main( )int a=3, b=5, t, *p1, *p2;p1=&a;p2=&b;t=*p1;*p1=*p2;*p2=t;printf(a=%d b=%dn, a, b);3有三个整型变量i , j , k。请编写一个程序,设置三个指针变量 p1, p2, p3, 分别指向i , j,k。然后通过指针变量使i , j,k三个变量的值顺序交换,即原 来i的值赋给j,原来j的值赋给k,原来k的值赋给 盘输入,要求输出 i , j , k 的原值和新值。#include main( )int i, j, k, t, *p1, *p2, *p3; printf( 输入 i j k); scanf(%d%d%d,&i, &j ,&k);printf(p1=&i; t=*p2;4 从键盘输入三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共绿地草坪改造合同
- 文化创意公司文员劳动合同模板
- 医院周边道路施工合同范本
- 办公大楼雨污改造工程合同
- 教育培训招投标政策解读
- 大学校园照明系统施工协议
- 污水处理泵机租赁合同
- 南京市果园租赁合同
- 农村宅基地租赁协议格式及详解
- 城市轨道交通配套道路改造合同
- 2024年时事政治试题【带答案】
- 期中测试卷(1-4单元)(试题)-2024-2025学年人教版数学六年级上册
- 前程无忧行测笔试题库
- 中华民族发展史智慧树知到期末考试答案章节答案2024年云南大学
- 2024春期国开电大法学本科《国际法》在线形考(形考任务1至5)试题及答案
- 初中物理光学难题难度含解析答案
- 冷却塔技术规格书
- 30题纪检监察位岗位常见面试问题含HR问题考察点及参考回答
- 中国古代文学史(全套)课件
- 黑布林-Peter-Pan-中英双语阅读
- 新生儿液体疗法PPT课件.ppt
评论
0/150
提交评论