- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
步骤 2 和 3 是按照步长 1 去寻找公鸡和母鸡
的个数。
步骤 4 的细化
4.1 z=1
2. 1.
是否满足百钱,百鸡 满足,输出最终百钱买 到的百
鸡的结果
2.
不满足,不做处理
3. 变量增加,这里注意步长为 3
程序代码如下 #include "stdio.h" main() { int x,y,z; for(x=1;x<=20;x++) {
2
生的学习成绩,统计并输出最高成绩和最低 成绩,当输入为负数时结束输入。 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,a min); } 7、使用循环语句输出以下图形
for(y=1;y<=33;y++)
7
{ 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);
if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&& (b!=d)&&(c!=d))
printf("%d%d*%d%d=%d%d*%d%d\t" ,a,b,c,d,b,a,d,c);
} }
#include<stdio.h> main() { int i, n,j=0; printf("请输入一个整数 n:"); scanf("%d" ,&n); if(n>=1&&n<=100) {
}} return 0; }
#include <stdio.h> void main() {
int a,b,c,d; for(a=1; a<=9; a++)
for(b=1; b<=9; b++)
10
for(c=a+1; c<=9; c++) for(d=1; d<=9; d++)
d{if((a*10+b)*(c*10+d)==(10*b+a)*(10*d+ c))
3
8、有一个数学等式:AB*CD=BA*DC,式 中的一个字母代表一位数字,试找出所有符 合上述要求的乘积式并打印输出。
8、一百个铜钱买了一百只鸡,其中公鸡一 只 5 钱、母鸡一只 3 钱,小鸡一钱 3 只,问
4
一百只鸡中公鸡、母鸡、小鸡各多少)。 分析: 这是一个古典数学问题,设一百只鸡中公 鸡、母鸡、小鸡分别为 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 的所有可能组合,最后得到问题的解。
9
{a=i1/10; b=i1%10; c=j1/10; d=j1%10;
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&& c!=d)
{ i2=b*10+a; j2=d*10+c;} if(i1*j1==i2*j2) { printf("%d*%d=%d*%d\t",i1,j1,i2,j2);
} } } } 分析
程序运行结果如下: cock=4,hen=8,chicken=78 cock=8,hen=11,chicken=81 cock=12,hen=4,chicken=84 对于这个问题实际上可以不用三重循环,而 是用二重循环,因为公鸡和母鸡数确定后,
小鸡数就定了,即。请同学们自己分析二重
1
4、有分数序列 2/1,3/2,5/3,8/5,13/8, 21/13…求这个数列的前 20 项和。 (分析提示:每个分子等于前一个数据分子 与分母的和,每个分母等于前一个数据的分 子) 5、输出显示 1~100 之间可以被 n 整除的所 有整数,运行时 n 由键盘输入。要求每一行 显示 5 个数,并且统计一共有多少个整数能 被 n 整除。 6、下面程序的功能是从键盘上输入若干学
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)各函 数值。
8
循环和三重循环的运行次数,做为练习自己 调试这一方法。 程序修改: 1、 统计使用三重循环的循环次数
2、 使用二重循环完成,并统计循环次数
#include <stdio.h> int main() {
int i1,i2,j1,j2,a,b,c,d; for(i1=11;i1<=99;i1++)
for(j1=i1+1;j1<=99;j1++)
11
printf("1~100 间可以被%d 整除的数是: \n",n); for(i=n;i<=100;i+=n) { printf("%-3d",i);
j++; if(j%5==0)putchar('\n'); }} else printf("输入错误!"); }
5
数据要求 问题中的常量:无 问题的输入:无 问题的输出:
int x,y,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1. 初始化为 1; 2. 计算 x 循环,找到公鸡的只数; 3. 计算 y 循环,找到母鸡的只数; 4. 计算 z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤 1 实际上是分散在程序之中的, 由于用的是 for 循环,很方便的初始条件放 到了表达式之中了。