1、共 31 页 第 1 1 页把把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 页 第 2 2 页把把10个整数存入一维数组中,求和、最大值和最小值。个整数存入一维数组中,求和、最大值和最小值。main()int a10,max,min,i,sum
2、;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 页 第 3 3 页 题目:大奖赛评分程序题目:大奖赛评分程序 在唱歌等大奖赛评分时,一般要有若干名评委,记分规则在唱歌等大奖赛评分时,一般要有若干名评委,记分规则是:去掉一个最高分和一个最低分,是:去掉一个最高分和一个最低分,再算平均分。设按百分制再算平均分。设按百分制记分,试设计一个算分的程序。记分,试设计一个算分的程序。算法基本思路:算法基本思路:1.输入评委人数输入评
3、委人数N。2.一一输入每个评委的打分,同时累加求和一一输入每个评委的打分,同时累加求和sum,并记下最高,并记下最高 分分max和最低分和最低分min。3.计算(计算(sum-max-min)/(N-2)。4.输出结果。输出结果。共 31 页 第 4 4 页完整算法:完整算法:max=0,min=100i=1imax)max=score,if(scoremin)min=scorei=i+1NYsum=0sum=sum+score打印结果打印结果共 31 页 第 5 5 页大奖赛评分程序大奖赛评分程序#define N 5main()int score,i=1,max=0,min=100;flo
4、at sum=0,grade;while(imax)max=score;if(scoremin)min=score;i+;grade=(sum-max-min)/(N-2);printf(“%f”,grade);共 31 页 第 6 6 页大奖赛评分程序大奖赛评分程序#define N 5main()int aN,i,max=0,min=100;float sum=0,grade;for(i=0;iN;i+)scanf(“%d”,&ai);i=0;while(imax)max=ai;if(ai min)min=ai;i+;grade=(sum-max-min)/(N-2);printf(“%f
5、”,grade);共 31 页 第 7 7 页if(x=4)printf(“%d”,x);if(x=4)printf(“%d”,x);if(x=0)printf(“%d”,x);if(x=0)printf(“%d”,x);printf(“abc”);注意=和=的区别共 31 页 第 8 8 页#include stdio.hmain()int score;printf(please input a score:n);scanf(%d,&score);if(score100)printf(data error!n);else if(score90)printf(the grade is A.n)
6、;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 页 第 9 9 页#include stdio.hmain()int score,grade;printf(please input a students score:n);scanf(%d,&score);grade=score/10;/*舍小数,取整舍小数,取整/*switch
7、(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 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 页 第 1010 页#include s
8、tdio.hmain()int a,b,c,max;printf(please input three integer:n);scanf(%d%d%d,&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 页 第 1111 页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
9、+=a;scanf(%d,&a);printf(sum1=%d;sum2=%d.n,sum1,sum2);如何输入数据?共 31 页 第 1515 页#include stdio.h#include math.h main()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(data
10、error!);用迭代法求某数的平方根。共 31 页 第 1616 页编程:编程:/41-1/3+1/5-1/7+.,取前取前10项之和项之和,求求 的近似值的近似值.#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);#include stdio.hmain()int n=1,f=1;double sum=0,a,pi;while(n=10)a=1.0/(2*n-1)
11、;sum=sum+f*a;f=-f;n+;pi=4*sum;printf(pi=%fn,pi);共 31 页 第 1717 页/41-1/3+1/5-1/7+.,取前取前10项之和项之和,求求 的近似值的近似值.main()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 页 第 1818 页用用/41-1/3+1/5-1/7+.公式求公式求 的近似值的近似值,直到某一项的绝对值小直到某一项的绝对值小于于10-6为止为止.#include#include void
12、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 页 第 1919 页e=1+1/1!+1/2!+1/3!+1/n!+求求e 的值的值,根据输入的根据输入的n 值值,求前求前n 项之和项之和.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
13、 is%d;n,sum);else printf(data error!);把一个整数的各个位的数加起来。例如:num=128 sum=1+2+8共 31 页 第 2121 页 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 15 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 2
14、4 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 页 第 2222 页main()/*无表头无表头*/int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(“%3d”,i*j);printf(“n”);共 31 页 第 2323 页main()int i=1,j;while(i=9)/while(i=9)/*控制打印表头控制打印表头 */printf(%4d,i+);p
15、rintf(%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 页 第 2424 页例例2 用用冒泡法冒泡法对数据进行排序(由小到大)。对数据进行排序(由小到大)。方法:将两个相邻数比较,小的调到前头。方法:将两个相邻数比较,小的调到前头。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趟,趟,第第一一趟中要
16、进行两两比较趟中要进行两两比较5次次 第第二二趟中比较趟中比较 4次次 若有若有n个数,则要进行个数,则要进行n-1趟比较趟比较 逻辑上的第逻辑上的第 i趟比较中要进行趟比较中要进行n-i次两两比较。次两两比较。a0a2a1a3a4a5共 31 页 第 2525 页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个数比较个数比较
17、n-1n-1趟趟第第i i趟比较趟比较n-in-i次次共 31 页 第 2626 页 思想:选择排序思想:选择排序 首先从首先从1n个元素中选出关个元素中选出关 键字键字最小最小的记录交换到的记录交换到第一第一 个个位置上。然后再从第位置上。然后再从第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第一趟第一趟第二趟第二趟
18、1 3 9 8 6 i kj第三趟第三趟共 31 页 第 2727 页#define N 6main()int 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.根据第根据第
19、1步判断的结果步判断的结果,选择做循环体或结束循环选择做循环体或结束循环.共 31 页 第 2929 页练习:指出下面程序的运行结果。练习:指出下面程序的运行结果。main()int i=10;while(i-0);printf(“%dn”,i);main()int x=3;do printf(“%3d”,x-=2);while(!(-x);-11 -2共 31 页 第 3030 页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 页 第 3131 页main()int
20、 i=0,sum=0;while(i+0)if(y%3=0)printf(“%d”,-y);y-;输出:852共 31 页 第 3333 页main()int x=15;do x-;while(x-);printf(“%d”,x-);printf(“nx=%d”,x);输出:-1 x=-2共 31 页 第 3434 页 完善程序完善程序:e=1+1/1!+1/2!+1/3!+1/n!+求求e 的值的值,根据输入的根据输入的n 值值,求前求前n 项之和项之和.main()double sum=1.0,x=1.0,y=1.0;int n;scanf(“%d”,_);while(n)y=x*y;su
21、m=sum+_;x+;-n;printf(e=%f,sum);&n1.0/y共 31 页 第 3535 页完善程序完善程序 /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 页 第 3636 页完善程序完善程序 /41-1/3+1/5-1/7+.,取前取前10项之和项之和,求求 的近似值的近似值.main()int i;float t=-1.0,pi=1;for(i=1;i_;
22、i+)pi=_+t/(2*i+1);t=-t;printf(“=%f”,pi*4);10pi共 31 页 第 3737 页填空填空:输出二维数组每行的和输出二维数组每行的和.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=_;for(j=0;jn,否则交换否则交换*/while(n)temp=m%n;m=n;n=temp;printf(the greatest common divisor=%d;n,m);求两个整数的最大公约数。下面是利用辗转相除法辗转相除法求最大公约数共 31 页 第 3939 页#inclu
23、de 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 页 第 4040 页求以下级数和的近似值: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 页 第 4141 页 y(x)=x+x3+x5
24、+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(x=0.5)x=1.0;else x=x+1.0;if(x=3.0)goto L;共 31 页 第 4242 页例:例:输入一个整数输入一个整数m m,判断是否为素数。,判断是否为素数。若若m m不能被不能被2 2m-1m-1之间的任何一个整数整除,则之间的任何一个整数整除,则m m即
25、即为素数。为素数。算法思想:算法思想:设设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.在循环之后判别在循环之后判别i的值是否大于或等于的值是否大于或等于k+1,若是,则表明未曾被,若是,则表明未曾被2k之间任一整数整除过,因此输出之间任一整数整除过,因此输出“是素数是素数”。共 31 页 第 4343 页程序如下:程序如下:main()int n,i,k;scanf(%d,&n);
26、k=n-1;/*或者或者 k=sqrt(n)*/for(i=2;i=k;i+)if(n%i=0)break;/*此时,此时,i的值的值=k+1)printf(%d is a prime numbern,n);else printf(%d is not a prime numbern,n);共 31 页 第 4444 页枚举法(穷举法或试凑法)举例枚举法(穷举法或试凑法)举例 例:一位同学问他的数学老师:“老师,您今年多少岁了?您的夫人多少岁了?”老师说:“我的年龄的平方加上我夫人的年龄恰好是1053,而我夫人年龄的平方加上我的年龄等于873。”请问,老师和他夫人的年龄各是多少?x2+y=105
27、3y2+x=873 for(x=20;x+)y=1053-x*x;if(y*y+x=873)break;共 31 页 第 4545 页#include stdio.hmain()int x,y;for(x=20;x+)y=1053-x*x;if(y*y+x=873)break;printf(the teachers age is%d,his wifes age is%d;n,x,y);共 31 页 第 4646 页main()int i,j;j=0;for(i=1;i=1)x0=(x1+1)*2;x1=x0;day=day-1;共 31 页 第 4949 页#include main()int
28、 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-1j-1;printf(%d,aij);printf(n);共 31 页 第 5050 页例例 用数组来处理求用数组来处理求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”);pr
29、intf(“%12d”,fi);运行结果如下:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765共 42 页 第 5151 页例例12 输出输出5以内的数字金字塔。以内的数字金字塔。#include stdio.hmain()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