1、amax=x;amin=x;while( ) if(xamax) amax=x; if( ) amin=x;printf(namax=%fnamin=%fn,amax,amin);7、使用循环语句输出以下图形8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。分析:这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:100=x*5+y*3+z/3100=x+y+z这里x,y,z为正整
2、数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:1) x的取值范围为1202) y的取值范围为1333) z的取值范围为399,步长为3对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。数据要求问题中的常量:无问题的输入:问题的输出:int x,y,z /*公鸡、母鸡、小鸡的只数*/初始算法1初始化为1;2计算x循环,找到公鸡的只数;3计算y循环,找到母鸡的只数;4计算z循环,找到小鸡的只数;5结束,程序输出结果后退出。算法细化算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。步骤2和3
3、是按照步长1去寻找公鸡和母鸡的个数。步骤4的细化 41 z1 42 是否满足百钱,百鸡 421 满足,输出最终百钱买到的百鸡的结果 422 不满足,不做处理 43 变量增加,这里注意步长为3程序代码如下#include stdio.hint x,y,z;for(x=1;x=20;x+) for(y=1;y=33;y+) for(z=3;z=99;z+=3)if(5*x+3*y+z/3=100)&(x+y+z=100)/*是否满足百钱和百鸡的条件*/ printf(cock=%d,hen=%d,chicken=%dn,x,y,z); 分析程序运行结果如下:cock=4,hen=8,chicken
4、=78cock=8,hen=11,chicken=81cock=12,hen=4,chicken=84对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。请同学们自己分析二重循环和三重循环的运行次数,做为练习自己调试这一方法。程序修改:1、 统计使用三重循环的循环次数2、 使用二重循环完成,并统计循环次数#include int main() int i1,i2,j1,j2,a,b,c,d; for(i1=11;i1i1+) for(j1=i1+1;j1j1+) a=i1/10; b=i1%10; c=j1/10; d=j1%10; if(a!=b&a
5、!=c&=d&b!c!=d) i2=b*10+a; j2=d*10+c; if(i1*j1=i2*j2) printf(%d*%d=%d*%dt,i1,j1,i2,j2); return 0; void main() int a,b,c,d; for(a=1; a=9; a+) for(b=1; b b+) for(c=a+1; c c+) for(d=1; d d+)dif(a*10+b)*(c*10+d)=(10*b+a)*(10*d+c) if(a!=b)&(a!=c)&=d)&(b!(c!=d) printf(%d%d*%d%d=%d%d*%d%dt,a,b,c,d,b,a,d,c); #include=1&n=100)1100间可以被%d整除的数是:n,n);for(i=n;i while(macAZ letters+; else if(c= space+; else if(c09 digit+; else others+;你一共输入了%d个字母,%d个空格,%d个数字,%d个其它字符n,letters,space,digit,others);使用数组#includestring.hint k;static char st1;gets(st);k=strlen(st);,k);【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1