c语言经典问题课件.ppt
文本预览下载声明
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 ;main() { int i,j,k,n; printf(water flowernumber is:); for(n=100;n1000;n++) { i=n/100; j=n/10%10; k=n%10; if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf(%-5d,n); } printf(\n); };最大数问题:从键盘上任意输入10个整数,求出其中的最大数。
算法分析:
(1)设第一个数就是最大数max;
(2)若最大数max下一个数next,则该数应为所输入的所有数中的最大数(max← next),否则最大数保持不变;
(3)n个数要进行n-1次比较;#include “stdio.h”
main()
{int max, next, n;
scanf(“%d”,next);
max=next;
for (n=2;n=10; n++)
{scanf(“%d”,next);
if (nextmax) max=next; }
printf(“max=%d\n”, max);
};问题:求出以“9999”作为结束标志的一组整数的最大数。例如输入:123 45 5678 34 9999 67 23456,输出结果为5678,即对9999及其以后的数不作处理。;古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
即从第三项开始,其每一项是前两项之和;main() { long f1,f2; int i; f1=f2=1; for(i=1;i=20;i++) { printf(%12ld %12ld,f1,f2); if(i%2==0) printf(\n); f1=f1+f2; f2=f1+f2; } };问题描述:5位跳水高手参加10米高台跳水决赛,有好事者让5人据实力预测比赛结果.
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一.
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错.请编程解出比赛的实际名次.;#include iostream.h
void main()
{ int cc1,cc2,cc3,cc4,cc5;
int A,B,C,D,E;
int g;
for(A=1; A=5; A++)
for(B=1; B=5; B++)
for(C=1; C=5; C++)
for(D=1; D=5; D++)
for(E=1; E=5; E++)
{ cc1=((B==2)(!(A==3)))||((!(B==2))(A==3));
cc2=((B==2)(!(E==4)))||((!(B==2))(E==4));
cc3=((C==1)(!(D==2)))||((!(C==1))(D==2));
cc4=((C==5)(!(D==3)))||((!(C==5))(D==3));
cc5=((E==4)(!(A==1)))||((!(E==4))(A==1)); if(((cc1+cc2+cc3+cc4+cc5)==5)(A!=B)(A!=C)(A!=D)(A!=E)(B!=C)(B!=D)(B!=E)(C!=D)(C!=E)(D!=E))
{
显示全部