文档介绍:word
word
2 / 14
word
1、计算n的阶乘(n!),n的取值在1~10之间。分别使用while、do…while和for语句实现。〔三个程序〕
给循环变量赋初值
循环条件
循环体
循环变量的增值
2、输入一行字符,分别统计输入了多少个字母、数字、空格和其他字符。
3、假设函数f(x)=3x2+2x+1,试利用for循环语句分别求出1<=x<=9的f(1)~f(9)各函数值。
4、有分数序列2/1,3/2,5/3,8/5,13/8,21/13…求这个数列的前20项和。
〔分析提示:每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分子〕
word
word
2 / 14
word
5、输出显示1~100之间可以被n整除的所有整数,运行时n由键盘输入。要求每一行显示5个数,并且统计一共有多少个整数能被n整除。
6、下面程序的功能是从键盘上输入假设干学生的学****成绩,统计并输出最高成绩和最低成绩,当输入为负数时完毕输入。main(){ float x,amax,amin;scanf("%f",&x);amax=x;amin=x;while( ① ){ if(x>amax) amax=x; if( ② ) amin=x;scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}7、使用循环语句输出以如如下图形
word
word
3 / 14
word
8、有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少〕。
分析:
word
word
4 / 14
word
这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:
100=x*5+y*3+z/3
100=x+y+z
这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值围:
1) x的取值围为1~20
2) y的取值围为1~33
3) z的取值围为3~99,步长为3
对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。
数据要求
问题中的常量:无
问题的输入:无
问题的输出:
int x,y,z /*公鸡、母鸡、小鸡的只数*/
初始算法
1.初始化为1;
2.计算x循环,找到公鸡的只数;
3.计算y循环,找到母鸡的只数;
word
word
5 / 14
word
4.计算z循环,找到小鸡的只数;
5.完毕,程序输出结果后退出。
算法细化
算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。
步骤2和3是按照步长1去寻找公鸡和母鸡的个数。
步骤4的细化
4.1 z=1
4.2 是否满足百钱,百鸡
4.2.1 满足,输出最终百钱买到的百鸡的结果
4.2.2 不满足,不做处理
4.3 变量增加,这里注意步长为3
程序代码如下
#include ""
main()
{
int x,y,z;
for(x=1;x<=20;x++)
{
word
word
6 / 14
word
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=%d\n",x,y,z);
}
}
}
}
分析
程序运行结果如下:
cock=4,hen=8,chicken=78
cock=8,hen=11,chicken=81
cock=12,hen=4,chicken=84
对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。请同学们自己分析二重循环和三重循环的运行次数,做为练****自己调试这一方法。
word
word
7 / 14
word
程序修改:
统计使用三重循环的循环次数
使用二重循环完成,并统计循环次数
#include <>
int main