c语言循环结构上机习题精编版文档格式.docx
《c语言循环结构上机习题精编版文档格式.docx》由会员分享,可在线阅读,更多相关《c语言循环结构上机习题精编版文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
x);
amax=x;
amin=x;
while(①)
{if(x>
amax)amax=x;
if(②)amin=x;
}
printf("
\namax=%f\namin=%f\n"
amax,amin);
7、使用循环语句输出以下图形
8、有一个数学等式:
AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。
分析:
这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为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的所有可能组合,最后得到问题的解。
数据要求
问题中的常量:
无
问题的输入:
问题的输出:
intx,y,z/*公鸡、母鸡、小鸡的只数*/
初始算法
1.初始化为1;
2.计算x循环,找到公鸡的只数;
3.计算y循环,找到母鸡的只数;
4.计算z循环,找到小鸡的只数;
5.结束,程序输出结果后退出。
算法细化
算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。
步骤2和3是按照步长1去寻找公鸡和母鸡的个数。
步骤4的细化
4.1z=1
4.2是否满足百钱,百鸡
4.2.1满足,输出最终百钱买到的百鸡的结果
4.2.2不满足,不做处理
4.3变量增加,这里注意步长为3
程序代码如下
#include"
stdio.h"
{
intx,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=%d\n"
x,y,z);
}
分析
程序运行结果如下:
cock=4,hen=8,chicken=78
cock=8,hen=11,chicken=81
cock=12,hen=4,chicken=84
对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。
请同学们自己分析二重循环和三重循环的运行次数,做为练习自己调试这一方法。
程序修改:
1、统计使用三重循环的循环次数
2、使用二重循环完成,并统计循环次数
#include<
stdio.h>
intmain()
inti1,i2,j1,j2,a,b,c,d;
for(i1=11;
i1<
i1++)
for(j1=i1+1;
j1<
j1++)
{a=i1/10;
b=i1%10;
c=j1/10;
d=j1%10;
if(a!
=b&
a!
=c&
=d&
b!
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);
}}
return0;
}
voidmain()
inta,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++)
d{if((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%d\t"
a,b,c,d,b,a,d,c);
}
#include<
inti,n,j=0;
请输入一个整数n:
"
);
%d"
&
n);
if(n>
=1&
n<
=100)
1~100间可以被%d整除的数是:
\n"
n);
for(i=n;
i<
=100;
i+=n)
{printf("
%-3d"
i);
j++;
if(j%5==0)putchar('
\n'
}}
else
输入错误!
{intx,y;
{y=3*x*x+2*x+1;
f(%d)=%d\n"
x,y);
intn,m=0,i=0;
printf("
求1到100之间可以被n整除的整数\n"
请输入整数n:
scanf("
if(n>
{while(m<
=100-n)
{m+=n;
i++;
printf("
%3d,"
m);
if(i%5==0)putchar('
}
\n1到100一共有%d个整数可以被%d整除\n"
i,n);
输入错误"
intletters=0,space=0,digit=0,others=0;
charc;
请输入一串字符:
for(;
(c=getchar())!
='
;
)
{if(c>
a'
c<
z'
||c>
A'
Z'
letters++;
elseif(c=='
'
space++;
elseif(c>
0'
9'
digit++;
else
others++;
你一共输入了%d个字母,%d个空格,%d个数字,%d个其它字符\n"
letters,space,digit,others);
使用数组
#include"
string.h"
{intk;
staticcharst[1];
gets(st);
k=strlen(st);
k);