C语言课件:循环-选择结构-数组练习.ppt

上传人(卖家):罗嗣辉 文档编号:2088426 上传时间:2022-02-14 格式:PPT 页数:52 大小:635KB
下载 相关 举报
C语言课件:循环-选择结构-数组练习.ppt_第1页
第1页 / 共52页
C语言课件:循环-选择结构-数组练习.ppt_第2页
第2页 / 共52页
C语言课件:循环-选择结构-数组练习.ppt_第3页
第3页 / 共52页
C语言课件:循环-选择结构-数组练习.ppt_第4页
第4页 / 共52页
C语言课件:循环-选择结构-数组练习.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、共 31 页 第 1 1 页包含部分上机题目的参考答案包含部分上机题目的参考答案共 31 页 第 2 2 页把把10个整数存入一维数组中,求和、最大值和最小值。个整数存入一维数组中,求和、最大值和最小值。main() int a10,max,min,i,sum; for(i=0;i10;i+) scanf(%d,&ai); max=min=sum=a0; for(i=1;imax) max=ai; if(aimin) min=ai; printf(max=%d,min=%d,sum=%d, max,min,sum);共 31 页 第 3 3 页把把10个整数存入一维数组中,求和、最大值和最小值

2、。个整数存入一维数组中,求和、最大值和最小值。main() int a10,max,min,i,sum; scanf(%d,&a0); max=min=sum=a0; for(i=1;imax) max=ai; if(aimin) min=ai; printf(max=%d,min=%d,sum=%d, max,min,sum);共 31 页 第 4 4 页 题目:大奖赛评分程序题目:大奖赛评分程序 在唱歌等大奖赛评分时,一般要有若干名评委,记分规则在唱歌等大奖赛评分时,一般要有若干名评委,记分规则是:去掉一个最高分和一个最低分,是:去掉一个最高分和一个最低分, 再算平均分。设按百分制再算平均

3、分。设按百分制记分,试设计一个算分的程序。记分,试设计一个算分的程序。算法基本思路:算法基本思路: 1. 输入评委人数输入评委人数N。 2. 一一输入每个评委的打分,同时累加求和一一输入每个评委的打分,同时累加求和sum,并记下最高,并记下最高 分分max和最低分和最低分min。 3.计算(计算(sum-max-min)/(N-2)。 4. 输出结果。输出结果。共 31 页 第 5 5 页完整算法:完整算法: max=0,min=100i=1imax)max=score,if(scoremin)min=scorei=i+1NYsum=0sum=sum+score打印结果打印结果共 31 页 第

4、 6 6 页大奖赛评分程序大奖赛评分程序 #define N 5main() int score, i=1,max=0,min=100; float sum=0,grade; while(imax) max=score; if(scoremin) min=score; i+; grade=(sum-max-min)/(N-2);printf(“%f”, grade);/ while 循环循环共 31 页 第 7 7 页大奖赛评分程序大奖赛评分程序 #define N 5main() int aN, i,max=0,min=100; float sum=0,grade; for(i=0;iN;i

5、+) scanf(“%d”,&ai); i=0;while(imax) max= ai; if(ai min) min= ai; i+; grade=(sum-max-min)/(N-2);printf(“%f”, grade);共 31 页 第 8 8 页#include main() int x=4; / x=3; if(x=4) printf(“%d”,x); #include main() int x=4; / x=0; if(x=0) printf(%d,x); 注意 = 和 = 的区别共 31 页 第 9 9 页#include “stdio.h” / if 嵌套完成教材第5章5(

6、3)main() printf(please input a score:n); scanf(%d,&score); if(score100) printf(data error!n); else if(score90) printf(the grade is A.n); else if(score80) printf(the grade is B.n); else if(score70) printf(the grade is C.n); else if(score60) printf(the grade is D.n); else printf(the grade is E.n);共 31

7、 页 第 1010 页#include “stdio.h” / switch完成教材第5章5(3)main() int score,grade; printf(please input a students score:n); scanf(%d,&score); grade=score/10; /* grade为正型,舍小数,取整为正型,舍小数,取整*/ switch(grade) case 0: case 1: case 2: case 3: case 4: case 5:printf(the grade is E.n); break; case 6: printf(the grade is

8、 D.n); break; case 7: printf(the grade is C.n); break; case 8: printf(the grade is B.n); break; case 9: case 10: printf(the grade is A.n); break; default:printf(data error!n); break; 共 31 页 第 1111 页#include “stdio.h“ / 求三个数的最大值main() int a,b,c,max; printf(please input three integer:n); scanf(%d%d%d,

9、&a,&b,&c); if(ab) if(ac) max=a; else max=c; else if(bc) max=b; else max=c; printf(the max is %d.,max);共 31 页 第 1212 页main() char c; printf(please input a letter:n); c=getchar(); if(c=a)&(c=A)&(c=A)&(c=a)&(c=A)&(c=A)&(c0) sum1+=a; else sum2+=a; scanf(%d,&a); printf(sum1=%d; sum2=%d.n,sum1,sum2);共 31

10、页 第 1616 页#include “stdio.h” /教材例6-6#include “ math.h” /算法是x1=0.5*(x0+a/x0)main() /可以用while,for等完成 /如何包括负数? float a,x0,x1; printf(please input a float number:n); scanf(%f,&a); if(a0) x1=0.5*a; do x0=x1; x1=0.5*(x0+a/x0); while(fabs(x1-x0)1e-5); printf(the square root of %f is %f;n,a,x1); else printf

11、(data error!);用迭代法求某数的平方根。共 31 页 第 1717 页编程:编程: /41-1/3+1/5-1/7+., 取前取前10项之和项之和, 求求 的近似值的近似值/do-while#include stdio.hmain() int n=1; double sum=0,a,pi; do a=1.0/(2*n-1); if(n%2=1) sum+=a; else sum-=a; n+; while(a=1.0e-5); pi=4*sum; printf(pi=%f;n,pi);/while#include stdio.hmain() int n=1,f=1; double

12、sum=0,a,pi; while(n=10) a=1.0/(2*n-1); sum=sum+f *a; f=-f; n+; pi=4*sum; printf(pi=%fn,pi);共 31 页 第 1818 页 /41-1/3+1/5-1/7+., 取前取前10项之和项之和, 求求 的近似值的近似值.main() /for 循环循环 int i, x=-1; float sum=1; for(i=1;i10;i+) sum=sum+x*1.0/(2*i+1); x=-x; printf(“ =%f”, sum*4);共 31 页 第 1919 页用用 /41-1/3+1/5-1/7+.公式求

13、公式求 的近似值的近似值,直到直到某一项的绝对值小某一项的绝对值小于于10-6为止为止. 用用while循环循环#include #include void main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n;pi=pi*4;printf(“pi=%10.6fn”, pi);共 31 页 第 2020 页e=1+1/1! +1/2! +1/3! + + 1/n! + 求求e 的值的值, 根据输入的根据输入的n 值值, 求前求前n 项之和项之和. 典型的典型的

14、for循环循环main() int i=1; long j=1; double sum=1; for(i=1; i0) do sum+=number%10; number/=10; while(number0); printf(the sum is %d;n,sum); else printf(data error!);把一个整数的各个位的数加起来。例如: num=128 sum=1+2+8共 31 页 第 2222 页 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9- 1 1 2 4 2 4 3 6 9 3 6 9 4 8 12 16 4 8 12 16 5 10 1

15、5 20 25 5 10 15 20 25 6 12 18 24 30 36 6 12 18 24 30 36 7 14 21 28 35 42 49 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 9 18 27 36 45 54 63 72 81 i i= =7 7j j= =5 5i i* *j j( (1 1=i=i=9 9) )( (1 1=j j=i i) )共 31 页 第 2323 页main() /*无表头无表头*/ int i,j; for

16、(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%3d”, i*j); printf(“n”); 共 31 页 第 2424 页#include main() int i=1,j; while (i=9 ) / while (i=9 ) /* * 控制打印表头控制打印表头 * */ / printf (%4d,i+); printf (%4d,i+); printf(n-n); printf(n-n); for(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%3d”, i*j); printf(“n”); 共 31 页 第 2525 页例例2

17、 用用冒泡法和选择法冒泡法和选择法对数据进行排序(由小到大)。对数据进行排序(由小到大)。冒泡法:将两个相邻数比较,小的调到前头。冒泡法:将两个相邻数比较,小的调到前头。 9 8 8 8 8 8 8 9 5 5 5 5 5 5 9 4 4 4 4 4 4 9 2 2 2 2 2 2 9 0 0 0 0 0 0 9由以上可推知:由以上可推知:6 个数要比较个数要比较5趟,趟, 第第一一趟中要进行两两比较趟中要进行两两比较5次次 第第二二趟中比较趟中比较 4次次 若有若有n个数,则要进行个数,则要进行n-1趟比较趟比较 逻辑上的第逻辑上的第 i趟比较中要进行趟比较中要进行n-i次两两比较。次两两比

18、较。a0a2a1a3a4a5共 31 页 第 2626 页#include main( ) int a6, i, j, n,t ; for( i=0; i6; i+) scanf(%d, &ai); for( i=1; i=5; i+ ) for( j=0; jaj+1) t=aj; aj= aj+1;aj+1= t ; printf(The sorted numbers: n); for( i=0; i6; i+) printf(%d , ai); n n个数比较个数比较n-1n-1趟趟第第i i趟比较趟比较n-in-i次次共 31 页 第 2727 页 思想:选择排序思想:选择排序 首先从

19、首先从1n个元素中选出个元素中选出 最小元素最小元素的下标记录的下标记录k交换交换 到到第一第一 个个位置上。然后再位置上。然后再 从第从第2 个到第个到第n个元素中选个元素中选 出次小的出次小的 记录交换到记录交换到第二第二 个个位置上,依次类推。位置上,依次类推。初态初态8 3 9 1 6 8 3 9 1 6 8 3 9 1 6 8 3 9 1 6 ijkijkijkijk1 3 9 8 6 互换互换ijk1 3 9 8 6 ikj1 3 9 8 6 ikj第一趟第一趟第二趟第二趟1 3 9 8 6 i kj第三趟第三趟共 31 页 第 2828 页#define N 6main( ) i

20、nt aN ,i, j,k,t; printf(Input numbers:n); for( i=0; iN; i+) scanf(%d, &ai); for( i=0;iN-1;i+ ) k=i; for(j=i+1;jaj) k=j; if(k!=i) t=ai; ai=ak;ak=t; printf(%The sorted numbers: n); for( i=0; i0) printf(while=%dn,i); printf(%d,i);while=0 -1该循环语句执行的步骤:1. while(i0)2. i-;3. 根据第根据第1步判断的结果步判断的结果, 选择做循环体或结束循

21、环选择做循环体或结束循环.共 31 页 第 3030 页练习:指出下面程序的运行结果。练习:指出下面程序的运行结果。 main() int i=10; while( i-0); /注意空语句注意空语句 printf(“%dn”,i); main() int x=3; do printf(“%3d”,x- =2); while(!(-x); -11 -2共 31 页 第 3131 页main() int i, j, sum; for(i=2;i7;i+) sum=1; for(j=i;j7;j+) sum=sum+j; printf(“%d”,sum);输出:7共 31 页 第 3232 页ma

22、in() int i=0, sum=0; while(i+0) if(y%3=0) printf(“%d”,-y); y-; 输出:852共 31 页 第 3434 页main() int x=15; do x-; while(x-); printf(“%d”,x-); printf(“nx=%d”,x); 输出:-1 x=-2共 31 页 第 3535 页 完善程序完善程序: e=1+1/1! +1/2! +1/3! + + 1/n! + 求求e 的值的值, 根据输入的根据输入的n 值值, 求前求前n 项之和项之和.main() double sum=1.0, x=1.0,y=1.0; in

23、t n; scanf(“%d”, _); while(n) y=x*y; sum=sum+ _; x+; -n; printf(e=%f , sum);&n1.0/y共 31 页 第 3636 页完善程序完善程序 /41-1/3+1/5-1/7+., 取前取前10项之和项之和, 求求 的近似值的近似值.main() int i; float t=1.0, pi=0; for(i=1;i=_;i+) pi=_+t/(2*i-1); t=-t; printf(“ =%f”, pi*4);10pi共 31 页 第 3737 页完善程序完善程序 /41-1/3+1/5-1/7+., 取前取前10项之和

24、项之和, 求求 的近似值的近似值.main() int i; float t=-1.0, pi=1; for(i=1;i_;i+) pi=_+t/(2*i+1); t=-t; printf(“ =%f”, pi*4);10pi共 31 页 第 3838 页填空填空: 输出二维数组每行的和输出二维数组每行的和.main( ) int a4=1,2,3,4,5,6,7,8,3,4,5,7, sum=0, i, j ; for( i=0; i_; i+ ) sum=_; /0 for( j=0; jn , 否则交换否则交换*/ while(n) temp=m%n; m=n; n=temp; prin

25、tf(the greatest common divisor=%d;n,m);求两个整数的最大公约数。下面是利用辗转相除法辗转相除法求最大公约数共 31 页 第 4040 页#include stdio.h“main() int m,n,temp; printf(please input two integers:n); scanf(“%d%d”,&m,&n); /* 要求要求mn , 否则交换否则交换*/ m1=m; n1=n; while(n) temp=m%n; m=n; n=temp; printf(最小公倍数=%d, (m1*n1)/m );求两个整数的最小公倍数。共 31 页 第

26、4141 页求以下级数和的近似值: y(x)=x+x3+ x5+ x7+3*1! 5*2! 7*3!令x=0.5, 1.0, 2.0, 3.0, 取前10项之和, 分别计算y(x).共 31 页 第 4242 页 y(x)=x+x3+ x5+ x7+3*1! 5*2! 7*3!#include main() int i,j; long n; double x,y; x=0.5;L: i=1; n=1; j=3;y=x; while(i=9) y=y+pow(x,j) / (j*n); i+; j =2*(i+1)-1; n=n*i; printf(x=%f, y=%fn, x, y); if(

27、x=0.5) x=1.0;else x=x+1.0;if(x=3.0) goto L;共 31 页 第 4343 页例:例: 输入一个整数输入一个整数m m,判断是否为素数。,判断是否为素数。若若m m不能被不能被2 2m-1m-1之间的任何一个整数整除,则之间的任何一个整数整除,则m m即即为素数。为素数。算法思想:算法思想:设设k=m-1,k=m-1,用用2 2至至m-1m-1依次去除依次去除m,m, 若若m m能被能被2 2k k之中任何一个整数整除,则不必除下去,肯定之中任何一个整数整除,则不必除下去,肯定不是素数,跳出循环不是素数,跳出循环,(i=k),(i=k+1.i=k+1.在循

28、环之后判别在循环之后判别i的值是否大于或等于的值是否大于或等于k+1,若是,则表明未曾被,若是,则表明未曾被2k之间任一整数整除过,因此输出之间任一整数整除过,因此输出“是素数是素数”。共 31 页 第 4444 页程序如下:程序如下:main( ) int n, i, k; scanf(%d,&n); k=n-1; /* 或者或者 k=sqrt(n) */ for(i=2; i=k; i+) if(n%i =0) break; /* 此时,此时,i的值的值k=k+1) printf(%d is a prime numbern, n); else printf(%d is not a prim

29、e numbern, n);共 31 页 第 4545 页枚举法(穷举法或试凑法)举例枚举法(穷举法或试凑法)举例 例: 一位同学问他的数学老师:“老师,您今年多少岁了?您的夫人多少岁了?”老师说:“我的年龄的平方加上我夫人的年龄恰好是1053,而我夫人年龄的平方加上我的年龄等于873。”请问,老师和他夫人的年龄各是多少?x2+y=1053y2+x=873 for(x=20;x+) y=1053-x*x; if(y*y+x=873) break; 共 31 页 第 4646 页#include stdio.hmain() int x,y; for(x=20;x+) y=1053-x*x; if

30、(y*y+x=873) break; printf(the teachers age is %d, his wifes age is %d;n,x,y);共 31 页 第 4747 页main() /以每行10个输出1-199间不能被3整除的数 int i,j; j=0; for(i=1;i=1) x0=(x1+1)*2; x1=x0; day=day-1; 共 31 页 第 5050 页 #include /打印杨辉三角形 main() int i,j;int a77;for(i=0;i7;i+)for(j=0;j=i;j+)if(j=0|i=j)aij=1;elseaij=ai-1j+ai

31、-1j-1;printf(%d ,aij); printf(n); 共 31 页 第 5151 页例例 用数组来处理求用数组来处理求FibonacciFibonacci数列问题。数列问题。数学表示:数学表示:f(0)=f(1)=1, f(n)=f(n-2)+f(n-1)程序为:main( ) int i; int f20= 1, 1 ; for( i=2; i20 ;i+) fi= fi-2+fi-1; for( i=0; i20; i+) if( i%5= 0) printf(“n”); printf(“%12d” , fi ); 运行结果如下: 1 1 2 3 5 8 13 21 34 5

32、5 89 144 233 377 610 987 1597 2584 4181 6765共 42 页 第 5252 页例例12 输出输出5以内的数字金字塔。以内的数字金字塔。#include “stdio.h” /也可用数组直接输出也可用数组直接输出main() void pyramid(int n); /*函数声明函数声明*/ pyramid(5); /*函数调用函数调用*/void pyramid(int n) int i,j; for(i=0;i=n;i+) /*需要输出的行数需要输出的行数*/ for(j=1;j=n-i;j+) /*输出每行前空格输出每行前空格*/ printf( ); for(j=1;j=i;j+) /*输出每行数字输出每行数字*/ printf(%d ,i); printf(n); 打印以下图形:打印以下图形: 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(C语言课件:循环-选择结构-数组练习.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|