c语言循环结构上机习题
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
15
积分
还剩页未读,继续阅读
关 键 词:语言
循环
结构
上机
习题
资源描述:
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项和。
(分析提示:每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分子)
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、使用循环语句输出以下图形
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的所有可能组合,最后得到问题的解。
数据要求
问题中的常量:无
问题的输入:无
问题的输出:
int x,y,z /*公鸡、母鸡、小鸡的只数*/
初始算法
1.初始化为1;
2.计算x循环,找到公鸡的只数;
3.计算y循环,找到母鸡的只数;
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 "stdio.h"
main()
{
int 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=%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 int main()
{
int i1,i2,j1,j2,a,b,c,d;
for(i1=11;i1<=99;i1++)
for(j1=i1+1;j1<=99;j1++)
{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);
}}
return 0;
}
#include void main()
{
int a,b,c,d;
for(a=1; a<=9; a++)
for(b=1; b<=9; b++)
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))
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);
}
}
#includemain()
{
int i, n,j=0;
printf("请输入一个整数n:");
scanf("%d" ,&n);
if(n>=1&&n<=100)
{
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("输入错误!");
}
#includeint main()
{int x,y;
for(x=1;x<=9;x++)
{y=3*x*x+2*x+1;
printf("f(%d)=%d\n",x,y);}
}
#includeint main()
{
int n,m=0,i=0;
printf("求1到100之间可以被n整除的整数\n");
printf("请输入整数n:");
scanf("%d",&n);
if(n>=1&&n<=100)
{while(m<=100-n)
{m+=n;
i++;
printf("%3d,",m);
if(i%5==0)putchar(\n);
}
printf("\n1到100一共有%d个整数可以被%d整除\n",i,n);}
else
printf("输入错误");
}
#includeint main()
{
int letters=0,space=0,digit=0,others=0;
char c;
printf("请输入一串字符:");
for(;(c=getchar())!=\n;)
{if(c>=a&&c<=z||c>=A&&c<=Z)
letters++;
else if(c== )
space++;
else if(c>=0&&c<=9)
digit++;
else
others++;
}
printf("你一共输入了%d个字母,%d个空格,%d个数字,%d个其它字符\n",letters,space,digit,others);
}
使用数组
#include"string.h"
#includevoid main()
{int k;
static char st[1];
gets(st);
k=strlen(st);
printf("%d",k);
}
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:c语言循环结构上机习题
链接地址:https://www.renrendoc.com/p-78955188.html